1 / 120

Orientação a Objetos

Orientação a Objetos. Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669. Introdução. Modelagem orientada a objetos Permite representar diretamente as entidades do mundo real e as relações entre essas entidades.

deacon
Download Presentation

Orientação a Objetos

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil eAlcides Calsavara{scalabrin, shm, alcides}@ppgia.pucpr.brTelefone: 0xx-41-330-1669

  2. Introdução • Modelagem orientada a objetos • Permite representar diretamente as entidades do mundo real e as relações entre essas entidades

  3. Introdução (continuação) Quais são os objetos presentes no cenário e as relações entre eles ?

  4. Introdução (continuação) Modelagem orientada a objetos • Permite representar diretamente as entidades do mundo real em ambientes informatizados, sem a necessidade de deformar ou de decompor os mesmos. • Relacionamentos entre entidades : • generalização : é-um • agregação : parte-de • associação : relacionamento qualquer

  5. Introdução (continuação) Análise Usuário Geramsolicitações Desenvolvedores Gerentes Enunciado doProblema Entrevistas com o usuário ConstróiModelos Conhecimento do domínio Experiência do mundo real Modelo de Objetos Modelo DinâmicoModelo Funcional Projeto

  6. Introdução (continuação) • O modelo objeto • especifica o que acontece a quem • representa a estrutura estática de um sistema • O modelo dinâmico • especifica quando algo deve acontece • representa a estrutura de controle de um sistema • O modelo funcional: • descreve os cálculos executados em um sistema • especifica o que acontece

  7. Bibliografia Básica • James Rumbaugh et al. Modelagem e Projetos Baseados em Objetos. Editora Campus, 1994. ISBN 85-7001-8410-X. • Grady Booch. Object-Oriented Analysis and Design with Applications. Second Edition. Addison-Wesley, 1994. ISBN 0-8053-5340-2. • Ivar Jacobson. Object-Oriented Software Engineering - a Use Case Driven approach. Addison-Wesley, 1996. ISBN 0-201-54435-0. • Peter Coad. Objet Models - Strategies, Patterns & Applications. Prentice-Hall, 1997. ISBN 0-13-840117-9. • Dennis de Champeaux. Object-Oriented Development Process and Metrics. Prentice-Hall, 1997. ISBN 0-13-099755-2. • Gregory Satir and Doug Brown. C++ : The Core Language. O’Reilly & Associates, 1995. ISBN 1-56592-116-X.

  8. Bibliografia Complementar • Jag Sodhi and Prince Sodhi. Object-Oriented Methos for Software Development. McGraw Hill, 1996. ISBN 0-07-059574-7. • Chris Zimmermann (Ed). Advances in Object-Oriented Metalevel Architectures and Reflection. CRC Pr, 1996. ISBN 0-84-932663-X. • Jonathan Pletzke. Advanced Smalltalk.. John Wiley & Sons, 1996. ISBN 0-47-116350-3. • Al Stevens. C++ Database Development. Mis Pr, 1994. ISBN 1-55-828357-9. • Grady Booch and Ed Eykholt (Eds). The Best of Booch: Designing Strategies for Object Technology. Prentice-Hall, 1996. ISBN 0-13-739616-3.

  9. Ementa • Conceituação de OO • Método para modelagem OO • Modelagem de Objetos • Modelagem Dinâmica • Modelagem Funcional • Programação OO

  10. Conceitos de OO Modelagem de Objetos

  11. Vantagens • Independência de implementação • Esconder detalhes • Flexibilidade • Clareza conceitual • Modularização • Reusabilidade

  12. Áreas de aplicação • Linguagens de programação • Bancos de dados • Sistemas operacionais • Sistemas distribuídos • Interface gráfica • Métodos de modelagem de sistemas • Métodos formais: Z++ • Empacotamento de software: classes, componentes • Integração de sistemas: CORBA, DCOM • Reflexão: tolerância a falhas, reconfiguração

  13. Conceitos fundamentais • Objeto • Identidade • Encapsulamento • Classificação/Instanciação • Generalização/Especialização • Herança • Polimorfismo

  14. Objeto • Um conceito, uma abstração, algo com limites e significados definidos para o problema em questão • Um objeto do mundo real • Um conjunto de atributos (estado) e métodos (comportamento) • Uma instância de uma classe

  15. Identidade • Característica peculiar de um objeto que denota a existência em separado do objeto, mesmo que ele tenha os mesmos valores de atributos de outro objeto • Uma identificação única de cada objeto

  16. Encapsulamento • Técnica de modelagem e implementação que separa os aspectos externos de um objeto dos detalhes internos de implementação do mesmo objeto • Os atributos (estado) de objeto só é modificável a partir de seus métodos (interface)

  17. Atributo • Propriedade denominada de uma classe, que descreve o valor de um dado contido por cada objeto da classe • Todo atributo tem um tipo e, opcionalmente, um valor default inicial • Cada instância de uma classe possui todos os atributos definidos pela classe

  18. Método (ou Operação) • Função ou transformação que pode ser aplicada aos objetos de uma classe • Todo método definido para uma classe pode ser aplicado a qualquer instância daquela classe • Um método tem um nome, uma lista de argumentos, um tipo de retorno e uma implementação

  19. Classe • Descrição de um grupo de objetos com propriedades semelhantes, comportamento, relacionamentos e semântica comuns • Instância: um objeto descrito por uma classe

  20. Exemplo de classe Nome da classe MOTO Marca: String cor: String estado: boolean Atributos + tipos ligaMotor(), mostraAtributos() Métodos

  21. Exemplo de classe definida em Java class MOTO{ private String marca, cor; boolean estadoMotor; void ligaMotor() { if (estadoMotor == true) System.out.println(“O motor já esta ligado”); else { estadoMotor = true; System.out.println(“Agora o motor já esta ligado”); } } // fim do método ligaMotor void mostraAtributos() { System.out.println(“Cor: “ + cor+ “ Marca: “ + marca + “Estado: “ + estadoMotor); }

  22. Exemplo de classe definida em Java (continuação) class MOTO{ . . . public static void main ( String args[] ){ MOTO m = new MOTO(); m.marca = “Yamaha RZ350”; m.cor = “amarela”; m.mostraAtributos(); m.ligaMotor(); m.mostraAtributos(); m.ligaMotor(); } // fim do método main } // fim da classe MOTO

  23. Generalização • Relacionamento entre uma classe e uma ou mais versões refinadas ou especializadas da classe • Especialização: relacionamento inverso • Superclasse: versão mais abstrata de outra classe, a subclasse • Subclasse: versão mais refinada de outra classe, a superclasse

  24. Herança • Mecanismo baseado em objetos que permite que as classes compartilhem atributos e operações baseados em um relacionamento, geralmente generalização • Uma subclasse herda atributos e métodos da superclasse

  25. Polimorfismo • Assume muitas formas • A propriedade segundo a qual uma operação (método) pode comportar-se diferentemente em classes diferentes • A subclasse redefine a implementação de um método herdado da superclasse • Onde se espera uma instância de um certa classe pode aparecer uma instância de qualquer subclasse daquela classe

  26. Exemplo de herança e polimorfismo BOTÃO Estado: boolean cor: Cores x: int y: int desenhe(), aperte(), desaperte(), pegaEstado(), mova(float x1, float x2) BOTÃO QUADRADO BOTÃO REDONDO diagonal : int raio : int desenhe() desenhe()

  27. Implantação da classe Botão class Botao { boolean estado; int cor; float x, y; public Botao(int cor) { estado = true; cor = 0; x = y = 0; } public void aperte() {estado = true; } public void desaperte() {estado = false; } public boolean pegaEstado() { return estado; } public void desenhe() {} public void mova( float x1, float y1) { x = x1; y = y1; } }

  28. Implantação da classe Botão Quadrado class BotaoQuadrado extends Botao { float diagonal; public BotaoQuadrado(int cor, float dia){ super( cor ); diagonal = dia; } public void desenhe(){ System.out.println("Desenhe Botão Quadrado"); } }

  29. Implantação da classe Botão Redondo class BotaoRedondoextendsBotao { float raio; public BotaoRedondo(int cor, float r){ super( cor ); raio = r; } public void desenhe(){ System.out.println("Desenhe Botão Redondo"); } }

  30. Implantação da classe Janela class Janela { public static void main( String args[] ) { BotaoQuadrado bq = new BotaoQuadrado(1, (float)4.5); bq.desenhe(); BotaoRedondo br = new BotaoRedondo(1, (float)5.0); br.desenhe(); } }

  31. Exercício Escreva um diagrama de classes para estas 3 (três) instâncias. Não é necessário incluir métodos. (Aparelho de troca de calor) nome = E302 fabricante = Brown peso = 5000 kg preço = $20000 área da superfície diâmetro do tubo = 2 cm comprimento do tubo = 6 m pressão do tubo = 15 atm pressão da concha = 1,7 atm (Tanque de teto flutuante) nome = T111 fabricante = Simplex peso = 10000 kg preço = $50000 volume = 400000 L pressão = 1,1 atm diâmetro = 8 m altura = 9m (Bomba de diafragma) nome = P101 fabricante = Simplex peso = 100 kg preço = $5000 pressão de sucção = 1,1 atm presssão de descarga = 3,3 atm taxa de fluxo = 300 I/h material do diafragma = Teflon

  32. Exemplos/Exercícios • Componentes de uma interface gráfica: botões, menus, barras, ... • Pessoas: aluno, professor, secretária, reitor • Veículos: bicicleta, veleiro, carro, caminhão, avião, planador, motocicleta, cavalo • Habitações: tenda, caverna, barraco, garagem, celeiro, casa, arranha-céu

  33. Classe A Classe A Classe A Classe A Classe A Classe A Classe A Classe A Classe A Classe A Classe A Classe A Notação: Multiplicidade e Ordenação UML OMT 1 0..* 0..1 1..* 1+ 2-5,10 2-5,10 0..* {ordenado} {ordenado}

  34. Ligação • Uma conexão física ou conceitual entre objetos • Exemplo: O país Brasil tem como capital a cidade de Brasília. • Exemplo: O funcionário João trabalha na empresa Transamérica S.A. • Exemplo: O artigo “OO Solutions” foi publicado na conferencia OOPSLA’99.

  35. Associação • Relacionamento entre instâncias de duas ou mais classes descrevendo um grupo de ligações com estrutura e semântica comuns. • Exemplo: Um país tem como capital uma cidade. • Exemplo: Um funcionário trabalha numa empresa.

  36. Agregação • Forma especial de associação, entre o todo e suas partes, na qual o todo é composto pelas partes • Também chamada de herança horizontal • Exemplo: Um artigo é publicado em uma conferência, isto é, o artigo faz parte da conferência (ou dos anais da conferência).

  37. Multiplicidade e Papel • Multiplicidade: Número de instâncias de uma classe que podem se relacionar a uma única instância de um classe associada (ou agregada). • Papel: nome que identifica inequivocamente uma extremidade de uma associação.

  38. Classe PessoaDiagrama de instâncias Cônjuge (Pessoa) uma avó (Pessoa) um avô mãe pai filho filho (Pessoa) uma tia (Pessoa) seu pai (Pessoa) sua mãe Irmão Cônjuge pai mãe mãe filho filho (Pessoa) um primo (Pessoa) você Primo filho

  39. Classe PessoaDiagrama de instâncias Cônjuge (Pessoa) Ederiges (Pessoa) Casemiro mãe pai filho filho (Pessoa) Fátima (Pessoa) Emílio (Pessoa) Vitória Irmão Cônjuge pai mãe mãe filho filho (Pessoa) Marcelo (Pessoa) Edson Primo filho

  40. Atributo de Ligação • Um valor de dados presente em cada ligação (nível de instâncias) de uma associação (nível de classes) • Uma propriedade da ligação entre objetos, e não dos objetos ligados, propriamente ditos • Exemplos: permissão de acesso que um usuário possui para a um arquivo; o salário de uma pessoa em um emprego em uma companhia

  41. Atributo de Ligação Exemplo: Muitos para Muitos Arquivo Usuário Acessível por String : nome String : nome Integer : permissão /etc/termcap ( leitura ) John Doe /etc/termcap ( leitura-escrita ) Mary Brown /usr/doe/.login ( leitura-escrita ) John Doe

  42. Atributo de Ligação Exemplo: Um para Muitos Pessoa Empresa Trabalha-para String : nome String : telefone String : nome String : endereço chefe Float : salário String : cargo trabalhador Gerencia Float : desempenho

  43. Associação como uma Classe • Cada ligação de uma associação é uma instância de uma classe • Uma ligação é um objeto, com atributos e métodos • Útil quando ligações podem participar em associações com outros objetos • Útil quando ligações sofrem operações • Exemplo: autorização para usuários em estações de trabalho

  44. Associação como uma Classe Exemplo Pessoa Estação Trabalho Autorizado String : nome String : telefone String : IP Usuário Integer : prioridade Integer : privilégios IniciarSessao() : void Diretório String : nome Diretório básico

  45. Associação Ternária • Representa ligações entre 3 objetos • Não pode ser dividida em associações binárias sem que haja perda de informações • Associações de grau maior que 3 são raras e devem ser evitadas devido a complexidade de entendimento e implementação • Exemplo: pessoas que são programadoras usam linguagens de programação em projetos

  46. Associação Ternária + Papel Pessoa Veículo objeto comprador String : nome String : telefone String : marca String : cor 1. .* 1 vendedor 1 Concessionária Compra String : nome String : endereço Data : data

  47. Associação Ternária + Papel Pessoa Veículo objeto vendedor String : nome String : telefone String : marca String : cor 1. .* 1 comprador 1 Concessionária Compra String : nome String : endereço Data : data

  48. Pessoa Banco Empréstimo Carro Empresa nome : String nome : String ID proprietário : ? ID proprietário : ? nome : String idade : Int ID banco : ? ID cliente : ? ID carro : ? ID Empresa : ? ID empregador 1 : ? número de conta : Int tipo proprietário : ? ID empregador 2 : ? ID banco : ? modelo : String ID empregador 3 : ? juro : Real ano : Int endereço : String saldo atual : Real ID Pessoa : ? tipo proprietário : ? Exercício • Estas classes possuem atributos que são ponteiros para outras classes de objetos. Estes ponteiros podem ser substituídos por associações. Considerando que: • cada pessoa pode ter até três empregos em empresas diferentes. • cada pessoa, carro, empresa e banco possui o seu próprio identificador (ID). • o proprietário de um carro pode ser: uma pessoa, uma empresa ou um banco. • em um empréstimo, o carro é o objeto penhorado (ou comprado). • Prepare um diagrama de classes, onde os ponteiros são substituídos por relações. Pode haver a necessidade de acrescentar uma ou mais classes. Elimine todos os ID. Certos atributos podem ser transformados em discriminantes *. • * Um discriminante é um atributo do tipo enumeração que indica que uma propriedade de um objeto tornou-se abstrata através de uma relação de generalização.

  49. Pessoa Banco Empréstimo Carro Empresa nome : String nome : String ID proprietário : ? ID proprietário : ? nome : String idade : Int ID banco : ? ID cliente : ? ID carro : ? ID Empresa : ? ID empregador 1 : ? número de conta : Int tipo proprietário : ? ID empregador 2 : ? ID banco : ? modelo : String ID empregador 3 : ? juro : Real ano : Int endereço : String saldo atual : Real ID Pessoa : ? tipo proprietário : ? Possui Proprietário Veículo beneficiário String : nome String : modelo Integer : ano penhor Empréstimo Pessoa Empresa Banco Integer : conta Float : juros Float : saldo cedente Integer : idade String : endereço Emprega Exercício Resposta

  50. Ordenação em Associações • Em alguns casos o conjunto de objetos associados a um certo objeto apresenta uma ordem • A palavra "ordenado" deve aparecer junto à multiplicade "muitos" de uma associação para indicar que existe uma ordem entre os objetos ligados • Exemplos: as janelas visíveis em uma tela possuem uma ordem; os vértices de um polígono

More Related