Introdução a Orientação a Objetos UML Baseado nos materiais dos profs: Prof.: Edilberto M. Silva http://www.edilms.eti.br Edna Canedo Mario Massakuni Kubo Sandro de Paula Mendonça Brasília-DF, jul/2006
Bibliografia Recomendada Fowler, M. and Scott, K., UML Distilled - Applying the Standard Object Modeling Language, Addison-Wesley, 1997. Quatrani, T., Modelagem Visual com Rational Rose 2000 e UML, Ciência Moderna, 2001. Page-Jones, M., Fundamentos do Desenho Orientado a Objeto com UML, Makron Books, 2001. Larman, C., Utilizando UML e Padrões, Editora Bookman, 2000. Jacobson, I., Booch, G., Rumbaugh, J., Unified Software Development Process, Addison Wesley, 2001. Embley, D.W., Kurtz, B. D., Woodfield S.N., Object-Oriented Systems Analysis, Yourdon Press, 1992. Shlaer, S., Mellor, S.J., Object-Oriented Systems Analysis, Yourdon Press, 1988. Martin J., Odell, J.J., Object-Oriented Analysis and Design, Prentice- Hall,1992. Jacobson, I., Ericsson, M., Jacobson, A., The Object Advantage: Business Process Reengineering with Object Technology., Addison- Wesley, 1995. Prof. Edilberto Silva - http://www.edilms.eti.br 2
O que é um modelo??? Casa do Cachorro Sua Casa Prédio Empresa O que você consegue construir sozinho??? Prof. Edilberto Silva - http://www.edilms.eti.br 3
Importância da Modelagem Um modelo é uma simplificação da realidade; Possibilita a visualização e o controle da arquitetura do sistema; Facilita o entendimento do sistema sendo construído; Possibilita a identificação de oportunidades para a simplificação e a reutilização; Possibilita a especificação da estrutura e do comportamento do sistema; Possibilita a documentação das decisões tomadas. Prof. Edilberto Silva - http://www.edilms.eti.br 4
Importância da Modelagem Podemos concluir que: Uma empresa bem sucedida é aquela que fornece software de qualidade e capaz de atender as necessidades dos respectivos usuários; A modelagem é uma parte central de todas as atividades que levam a implantação de um bom software. Prof. Edilberto Silva - http://www.edilms.eti.br 5
Modelagem não Orientada a Objetos Raízes associadas às linguagens de terceira geração; Sistemas são decompostos em módulos; Módulos são decompostos em funções; Funções e dados são tratados em separado; Funções são ativas e dados são passivos; Funções precisam conhecer as estruturas dos dados; É problemático modificar estruturas dos dados; Dados fluem entre as funções. Prof. Edilberto Silva - http://www.edilms.eti.br 6
Modelagem Orientada a Objetos Comportamento e dados são mantidos integrados; Suportam classe, objeto e herança; Sugerem como identificar as classes; Sugerem como identificar responsabilidades; Classes agrupadas em hierarquias; Sugerem como identificar interações entre objetos. Prof. Edilberto Silva - http://www.edilms.eti.br 7
O que é um Sistema OO? Um sistema OO é modelado, implementado e efetivamente funciona como um conjunto de objetos que interagem entre si. Obj 2 Obj 3 Obj 1 Obj 4 Prof. Edilberto Silva - http://www.edilms.eti.br 8
Resumo do Funcionamento Os menores componentes do sistema são os objetos, onde são guardadas todas as informações. Os objetos se comunicam através de mensagens. As mensagens acionam os métodos dos objetos visando efetuar as ações e manipular as informações. Prof. Edilberto Silva - http://www.edilms.eti.br 9
Mundo Computacional Mundo Real ESPAÇO DE PROBLEMAS Gap Semântico ESPAÇO DE SOLUÇÕES Aspectos mais importantes do mundo real para fins de representação no computador
DADOS Objetos e Operações do mundo real ESPAÇO DE PROBLEMAS Algoritmo do mundo real RESULTADOS Objetos do mundo real Mapeamento do domínio de soluções Interpretação Humana dos resultados Objetos e Operações abstratas ESPAÇO DE SOLUÇÕES Algoritmo computacional Dados de Saída
Mundo Computacional Mundo Real ESPAÇO DE PROBLEMAS ESPAÇO DE SOLUÇÕES Mapeamento Processo de Identificação de Abstrações Se essas abstrações não tiverem uma expressão direta (ou próxima) do mundo computacional, a complexidade da solução será aumentada
Modelagem Conceitual Tarefa mais importante de um processo de desenvolvimento de software realiza-se a análise do domínio da aplicação e a modelagem das entidades e fenômenos desse domínio que o projetista considera importante, independentemente da implementação A tarefa de modelagem conceitual envolve dois mecanismos: Abstração Representação Prof. Edilberto Silva - http://www.edilms.eti.br 13
Modelagem Conceitual Operação mental para observar um domínio e capturar sua estrutura ABSTRAÇÃO Refere-se às convenções de representação REPRESENTAÇÃO Objeto Observado Objeto Representado Notação gráfica, linguagem de programação Avião Prof. Edilberto Silva - http://www.edilms.eti.br 14
Orientação a Objetos - Abreviações Orientação a Objetos - OO Análise Orientada a Objetos - AOO Projeto Orientado a Objetos - POO Implementação Orientada a Objetos - IOO Prof. Edilberto Silva - http://www.edilms.eti.br 15
Paradigma de Orientação a Objetos Surgiu na tentativa de solucionar problemas existentes no desenvolvimento de Softwares Complexos e Confiáveis com baixo custo de desenvolvimento e manutenção; Mundo Real é formado por objetos que se interagem; Representar esses objetos em um software é mais natural e permanente do que representar a sua funcionalidade (decomposição funcional), pois essa é mutável; Prof. Edilberto Silva - http://www.edilms.eti.br 16
Paradigma de Orientação a Objetos Idéia básica Nós percebemos o mundo como uma coleção de objetos que interagem entre si Maneira de ver as coisas, uma nova maneira de pensar Permite que objetos do mundo real sejam mapeados em Objetos no computador; Visão do DOMÍNIO da aplicação é composto por OBJETOS que se comunicam através de MENSAGENS; Paradigma de OO = objetos + classificação + herança + comunicação (Coad e Yourdon, 1990); Modelo de Objetos Objetos, Mensagens e Métodos Prof. Edilberto Silva - http://www.edilms.eti.br 17
Paradigma de Orientação a Objetos Tradicionalmente Softwares são formados por dados e procedimentos independentes Paradigma OO Softwares são formados, principalmente, por: Objetos parte interna (define o comportamento do objeto, ou seja, especifica os métodos associados ao objeto) parte externa (interface - maneira que o objeto se apresenta para outros objetos) Mensagens Diminuir o gap semântico Prof. Edilberto Silva - http://www.edilms.eti.br 18
Paradigma de Orientação a Objetos O desenvolvimento orientado a objetos evoluiu no sentido PROGRAMAÇÃO ANÁLISE Conceitos desse paradigma foram introduzidos com o surgimento da linguagem Smalltalk; Em seguida, surgiram métods de projeto para dar suporte à implementação de sistemas orientados a objetos; Recentemente, propostas de métodos para análise e projeto vêm emergindo. Prof. Edilberto Silva - http://www.edilms.eti.br 19
Benefícios Principais Reusabilidade Redução da Complexidade Garantia de Integridade Prof. Edilberto Silva - http://www.edilms.eti.br 20
Processo de Construção de Sistemas Reusabilidade transforma o processo de construção de sistemas. antes Processo semi-artesanal. Prof. Edilberto Silva - http://www.edilms.eti.br 21
Processo de Montagem Reutilização de componentes já testados existentes em uma Biblioteca de Classes. depois Processo de montagem semelhante ao da indústria mecânica. Prof. Edilberto Silva - http://www.edilms.eti.br 22
Ganhos Decorrentes da Reusabilidade Aumento de produtividade uso de bibliotecas de classes; mecanismos de herança. Aumento de qualidade uso de componentes testados e aprovados. Prof. Edilberto Silva - http://www.edilms.eti.br 23
Redução de Complexidade Maior facilidade de transição entre as fases mesmo paradigma desde a análise até a implementação; não existe necessidade de conversões de modelos a cada fase. Prof. Edilberto Silva - http://www.edilms.eti.br 24
Redução de Complexidade Facilidade de modularização delimitação clara e precisa das fronteiras entre os objetos. Facilidade de manutenção operações residem em um único lugar, não estando espalhadas e repetidas pelos programas. Prof. Edilberto Silva - http://www.edilms.eti.br 25
Garantia de Integridade Estruturas de dados só podem ser usadas por suas próprias operações. Prof. Edilberto Silva - http://www.edilms.eti.br 26
Paradigma de Orientação a Objetos 27
OO - Paradigma Enfoque, que representa o mundo real com objetos e suas interações. Coisas do mundo real: mesas, papéis, animais Objetos têm propriedade Mesa Feita de madeira Tem uma altura Tem uma localização É possível exercer ações sobre objetos Criar, destruir, mudar a localização Prof. Edilberto Silva - http://www.edilms.eti.br 28
O que se ganha com Objetos?? O comportamento do objeto é independente da representação interna dos dados; Dados são protegidos contra acesso indevido; Acesso, checagem de erro, etc., são concentrados em um único lugar; Extensibilidade, mudança de representação e adição de novo funcionamento pode ser feito de maneira incremental e com mínimo distúrbio no sistema como um todo. Prof. Edilberto Silva - http://www.edilms.eti.br 29
O que é Software OO?? Software organizado como uma coleção de objetos interdependentes cada um fornecendo um serviço específico através de sua interface; Objetos são entidades comuns do domínio da aplicação; Sistemas modelam diretamente a interação entre estes objetos no ambiente computacional. Prof. Edilberto Silva - http://www.edilms.eti.br 30
OO - Benefícios Os conceitos de OO: Facilitam a reutilização de código; Forçam a modularização dos sistemas e; Oferecem suporte a dados complexos e programação baseada em eventos. Prof. Edilberto Silva - http://www.edilms.eti.br 31
OO - Terminologia A programação OO apoia-se basicamente nos princípios de: Objeto Abstração ] Mensagem Polimorfismo Herança Classe Encapsulamento Método Instancia Prof. Edilberto Silva - http://www.edilms.eti.br 32
Abstração Mecanismo utilizado na análise de um domínio Através dela, o indivíduo observa a realidade e dela abstrai entidades, ações, etc. consideradas essenciais para uma aplicação, excluindo todos os aspectos julgados irrelevantes Exemplo: Fotografia por satélite (imagem da realidade), despida de alguns aspectos (por exemplo, cor, movimento) Da foto, pode-se abstrair um mapa, que elimina diversas propriedades da foto (detalhes particulares de um edifício ou praça) O mapa pode ser a base para abstrair um grafo Prof. Edilberto Silva - http://www.edilms.eti.br 33
Abstração a beleza está nos olhos de quem a vê O resultado de uma operação mental de abstração depende não tanto do fenômeno observado, mas do interesse do observador Prof. Edilberto Silva - http://www.edilms.eti.br 34
Abstração a beleza está nos olhos de quem a vê Diferentes abstrações a partir de um mesmo objeto do mundo real I, II, Cardinalidade do conjunto Maça Peso cor da casca format CATEGORIA Receita AÇÃO 3 ATRIBUTO
Operações de Abstração relevantes para a modelagem conceitual Classificação (Instanciação) categorização dos objetos em grupos e/ou classes (categoria), com base em algum conjunto de propriedades comuns Generalização (Especialização) a partir de duas categorias abstrai-se uma categoria mais genérica sub-categorias satisfazem todas as propriedades das categorias de que elas constituem especializações deve existir pelo menos uma propriedade que distingue duas categorias especializadas Prof. Edilberto Silva - http://www.edilms.eti.br 36
Operações de Abstração relevantes para a modelagem conceitual Agregação (Decomposição) composição de uma nova categoria como um agregado de categorias pré-existentes instâncias de uma categoria (Estudante) são compostas por instâncias de outras categorias (Nome, Endereço) Prof. Edilberto Silva - http://www.edilms.eti.br 37
Classificação/Instanciação CATEGORIA Estudante de Graduação CLASSIFICAÇÃO INSTANCIAÇÃO José Maria INDIVÍDUO (Objeto) Prof. Edilberto Silva - http://www.edilms.eti.br 38
Classificação/Instanciação CATEGORIA Membro do Coral Estudante de Graduação CLASSIFICAÇÃO INSTANCIAÇÃO José Maria INDIVÍDUO (Objeto) Prof. Edilberto Silva - http://www.edilms.eti.br 39
Generalização/Especialização CATEGORIA Estudante GENERALIZAÇÃO Estudante de Graduação Estudante de Pós- Graduação ESPECIALIZAÇÃO (herança) CATEGORIA Prof. Edilberto Silva - http://www.edilms.eti.br 40
Generalização/Especialização CATEGORIA Atributos sangue quente vertebrado vivíparo Mamífero GENERALIZAÇÃO Atributos Habitat: mar Tempo médio de vida: 200 anos Baleia CATEGORIA ESPECIALIZAÇÃO (herança) Prof. Edilberto Silva - http://www.edilms.eti.br 41
Agregação/Decomposição CATEGORIA Porta Casa Parede CATEGORIA/COMPONENTE AGREGAÇÃO (composição - síntese) DECOMPOSIÇÃO (refinamento - análise) Prof. Edilberto Silva - http://www.edilms.eti.br 42
Aspectos OO Modelo de Objetos Objeto Mensagem Método Classe Atributo Protocolo Classificação Herança Encapsulamento/Ocultamento de Informação Polimorfismo Prof. Edilberto Silva - http://www.edilms.eti.br 43
Objeto Tudo em Orientação Objeto é OBJETO; Objeto, no mundo físico, é tipicamente um produtor e consumidor de itens de informação máquina, comandos, arquivos, pessoas, sinais. Definição (mundo do sofware): Qualquer coisa, real ou abstrata, a respeito da qual armazenamos dados e métodos que os manipulam Martin, Odell (1995); Abstração de uma entidade do mundo real de modo que essa entidade possue várias características; Exemplo: objetos cachorro e casa. Prof. Edilberto Silva - http://www.edilms.eti.br 44
Raça cor pedigree CACHORRO CASA
Objeto OBJETO: Entidade independente, composta por um conjunto de elementos que a caracterizam (domínio) e as ações que agem sobre esse domínio (operações); OBJETO Visão implementacional (Takahashi, 1990) entidade composta por: DOMÍNIO + OPERAÇÕES ESTADO INTERNO: é onde os valores podem ser armazenados e modificados ao longo da vida do objeto, caracterizando seu domínio; COMPORTAMENTO: é o conjunto de ações pré-definidas (denominadas métodos) através das quais o objeto responderá a demanda de processamento por parte de outros objetos. Objeto é algo DINÂMICO: é criado por alguém, tem uma vida, e morre ou é morto por alguém; Pode ter vida temporária (como a execução de um programa) ou persistente (persistirá até que seu desaparecimento seja explicitamente ordenado). Prof. Edilberto Silva - http://www.edilms.eti.br 46
Objeto Abstração Mapeamento Implementação ABSTRAÇÃO DOMÍNIO + OPERAÇÕES IMPLEMENTAÇÃO ATRIBUTOS (Dados) + MÉTODOS (Procedimentos) <Nome do Objeto> <Atributos> <Métodos> Prof. Edilberto Silva - http://www.edilms.eti.br 47
Objeto Resumindo: Pacote de informações (atributos) e a descrição de suas operações (métodos), de modo que elas são intrínsecas ao seu domínio e este é formado pelos elementos que o caracterizam Exemplo: Objeto: Pessoa Atributos: Nome, Data de Nascimento, Cor Métodos: Acordar, Comer, Beber Dormir Objeto: Pessoa Nome Data Nasc. Cor Acordar Comer Beber Dormir Prof. Edilberto Silva - http://www.edilms.eti.br 48
Objeto Exemplo uma Pessoa e um Carro podem ser considerados como um objeto de dados no sentido de que qualquer um deles pode ser definido em termos de um conjunto de atributos e operações Objetos podem relacionar-se um com o outro; Uma Pessoa pode possuir Carro, onde o relacionamento possuir define uma conexão específica entre Pessoa e Carro. Prof. Edilberto Silva - http://www.edilms.eti.br 49
Objeto Objeto = Atributos (Dados) + Métodos (Funcionalidade) + Encapsulamento Prof. Edilberto Silva - http://www.edilms.eti.br 50
Exemplos de Objeto Uma fatura Uma organização Uma tela com a qual o usuário interage Um desenho de engenheiro Um avião Um vôo de avião Uma reserva num avião Um processo de atendimento de pedidos Um computador Um ser humano neurrótico pode ser estereotipado como um objeto: possui memória em que valores podem ser armazenados e que condicionarão seu comportamento Prof. Edilberto Silva - http://www.edilms.eti.br 51
Atributos Representam um conjunto de informações, ou seja, elementos de dados que caracterizam um objeto; Descrevem as informações que ficam escondidas em um objeto para serem exclusivamente manipulado pelas operações daquele objeto; São variáveis que definem o estado de um objeto, ou seja, são entidades que caracterizam os objetos; Cada objeto possue seu próprio conjunto de atributos; Exemplos: Objeto Pessoa Atributos: Nome, Cor, Data de Nascimento Objeto Empregado Atributos: No do empregado, nome, nome do departamento, salário, endereço, dependentes Prof. Edilberto Silva - http://www.edilms.eti.br 52
Objeto Dicionário Objeto do mundo Real Objeto: Dicionário Estrutura de Dados Adicionar Palavra Eliminar Palavra Encontrar Palavra Imprimir definição Prof. Edilberto Silva - http://www.edilms.eti.br 53
Atributo Um valor armazenado pelos objetos da classe PESSOA: nome, idade, peso, cor CARRO: cor, peso, ano, modelo Cada atributo possui um valor para cada instância João tem 24 anos e Maria tem 40 Não se deve explicitar identificadores (características de programação - não têm significado intrínseco) Não confunda identificadores internos com atributos do mundo real O número do seguro social, número da chapa do carro, número do telefone, RG não são identificadores internos. ELES são atributos, pois têm significado no mundo real. ATRIBUTOS LEGÍTIMOS Prof. Edilberto Silva - http://www.edilms.eti.br 54
Identificação de Objetos O processo de análise para identificação dos objetos e classes DIFÍCIL Basicamente a mesma tarefa realizada na análise e no projeto de sistemas (Análise Estruturada) Os domínios de aplicação que naturalmente refletem entidades concretas do mundo real se beneficiam da abordagem OO Prof. Edilberto Silva - http://www.edilms.eti.br 55
Identificação de Objetos Objetos podem ser: Entidades Externas que produzem ou consomem informações (outros sistemas, pessoas) Coisas que fazem parte do domínio (relatórios, displays, cartas) Eventos que ocorrem no contexto do sistema (transferência de propriedade) Papéis desempenhados por pessoas (gerente, engenheiro, vendedor) Unidades organizacionais (grupo, equipe) Lugares que estabelecem o contexto do problema (piso de fábrica, área de descarga) Prof. Edilberto Silva - http://www.edilms.eti.br 56
Classificação Categorização em Classes; Quando estamos modelando um domínio, observamos que há várias entidades similares que podem ser abstraídas em um conceito único que engloba esta similaridade; Operação de abstração das Similaridades; O POO incorporou esta operação através da abstração dos atributos e dos métodos que caracterizam objetos semelhantes, especificando-os na CLASSE; Exemplo: Classificação de espécies em Zoologia. Prof. Edilberto Silva - http://www.edilms.eti.br 57
Classe Objeto: abstração de uma entidade do mundo real, através dos atributos e operações; Classe: abstração de um conjunto de objetos similares do mundo real; Agrupamento de objetos similares. Descreve a estrutura de dados, e o comportamento de objetos similares Todo objeto é uma instância de uma Classe; Todas as instâncias de uma classe têm valores próprios para os atributos especificados na classe; Os objetos representados por determinada classe diferenciamse entre si pelos valores de seus atributos; Sistema puramente OO, Classe é também um Objeto. Prof. Edilberto Silva - http://www.edilms.eti.br 59
Classe Conjunto de objetos que possuem propriedades semelhantes (ATRIBUTOS), o mesmo comportamento (MÉTODOS), os mesmos relacionamentos com outros objetos e a mesma semântica PESSOA, CARRO, CASA, VEÍCULO EMPRESA, PAÍS, SERES HUMANOS, HOMENS, MULHERES, MEIO DE TRANSPORTE Prof. Edilberto Silva - http://www.edilms.eti.br 60
Classe Similar a um TAD (Tipo-Abstrato-de-Dados): pode ser usado como base para a criação de objetos que sejam entidades executáveis com atributos e operações (métodos) da classe. Sua especificação é uma especificação da interface na qual as partes visíveis da entidade são expostas. Os objetos criados podem ter outros atributos e procedimentos privativos não aparecem na especificação Prof. Edilberto Silva - http://www.edilms.eti.br 61
Classe Livro Bíblia Relatório Dicionário Prof. Edilberto Silva - http://www.edilms.eti.br 62
Classe Reformar Limpar Pintar Mobiliar CASA Portas Salas Cozinha Quartos Localização Telhado Prof. Edilberto Silva - http://www.edilms.eti.br 63
Características Exemplo de objeto do mundo real a coisa em que você está sentado agora Cadeira É membro - (instância) de uma classe maior de objetos Mobiliário Prof. Edilberto Silva - http://www.edilms.eti.br 64
Peso Cor Classe Mobiliário Comprado Dimensões Localização Vendido Modificado Custo Atributos (Propriedades) Cadeira herda Operações (Serviços e Métodos)
Classe O Objeto Cadeira é um membro (INSTÂNCIA) de uma CLASSE maior de objetos - MOBILIÁRIO CLASSE de objetos descreve um conjunto de objetos que possuem propriedades semelhantes (ATRIBUTOS) mesmo comportamento (MÉTODOS) mesmos relacionamentos com outros objetos mesma semântica Atributos GENÉRICOS da classe MOBILIÁRIO custo, dimensões, peso, localização, cor Atributos se aplicam a todos os objetos da classe MOBILIÁRIO: mesa, cadeira, sofá, armário Prof. Edilberto Silva - http://www.edilms.eti.br 66
Classe Uma vez que o objeto CADEIRA é um membro da classe MOBILIÁRIO, HERDA todos os atributos definidos para a classe Todo objeto da classe MOBILIÁRIO pode ser manipulado de diversas maneiras (OPERAÇÕES) comprado vendido, pesado modificado (pintar de roxo, serrar uma perna) Cada uma dessas operações (SERVIÇOS ou MÉTODOS) modificará um ou mais atributos do objeto Prof. Edilberto Silva - http://www.edilms.eti.br 67
Classe: Mobiliário Custo Dimensões Peso Cor Localização Comprar Vender Pesar Modificar O objeto herda todos os atributos e as operações da classe Classe: Camesa Custo Dimensões Peso Cor Localização Comprar Vender Pesar Modificar Classe: Cadeira Custo Dimensões Peso Cor Localização Comprar Vender Pesar Modificar
Classe <Nome da classe> <Atributos> <Operações> Prof. Edilberto Silva - http://www.edilms.eti.br 69
Classe O objeto CADEIRA e outros da mesma classe ENCAPSULA dados (os valores dos atributos que definem a cadeira) operações (as ações aplicadas para mudar os atributos da cadeira) Prof. Edilberto Silva - http://www.edilms.eti.br 70
Generalização Reformar Limpar Pintar Mobiliar CASA Portas Quartos Salas Localização Cozinha Telhado (Superclasse) PRAIA FAVELA MANSÃO (Subclasse) Limpar Piscina Contratar Criadagem Piscina Quadras Especialização
Animal superclasse Selvagem Doméstico subclasse Hierarquia de Classes Gato Cão De Raça Vira-Lata Objeto Rex instância da classe Vira-Lata Rex
Herança Seres Humanos Nome Data_Nascimento RG Homens Certif_Reservista Mulher Data_Último_Parto Prof. Edilberto Silva - http://www.edilms.eti.br 73
Veículo Véiculo de Rodas Veículo à Motor Veículo Aéreo Bicicleta Caminhão Vapor Avião Planador Caminhão VW Caminhão Ford Caminhão GM
G E N E R A L I Z A Ç Ã O Herança - Exemplo (Classe Base) Veículos (Classes Derivadas) Terrestres Aéreos Aquáticos Carro Avião Iate Moto Helicop Lancha E S P E C I A L I Z A Ç Ã O (Objetos) Prof. Edilberto Silva - http://www.edilms.eti.br 75
Herança Mecanismo que permite definir uma nova classe (subclasse) a partir de uma classe já existente (superclasse) Ao se estabelecer uma Especialização (subclasse) de uma classe, a subclasse herda as características comuns da superclasse, isto é, a especificação dos atributos e dos métodos da superclasse passam a fazer parte da especificação dos atributos e dos métodos da subclasse A subclasse pode adicionar novos métodos, como também reescrever métodos herdados Habilidade de um objeto derivar seus atributos (dados) e métodos (funcionalidade) automaticamente de outro objeto Prof. Edilberto Silva - http://www.edilms.eti.br 76
Herança Classes podem ser construídas a partir de outras já existentes; facilita extensibilidade Quando uma mensagem é enviada para um objeto A procura do método correspondente começa pela classe do objeto Se o método não for encontrado, a procura continua na superclasse A Herança pode ser de dois tipos: Herança Simples: quando uma classe é subclasse de somente uma superclasse Herança Múltipla: quando uma classe é subclasse de várias superclasses e conseqüentemente herda as características de cada uma delas Prof. Edilberto Silva - http://www.edilms.eti.br 77
Exemplo: Sistema de Administração Universitária Pessoa Nome, Data de Nasc. RG Nascer, Comer, Dormir, Morrer RGM (registro) Cursar Estudante Docente Funcionário Graduação Pós-Graduação Assistente Herança Múltipla
Mensagem É o mecanismo através do qual os objetos se comunicam, invocando as operações desejadas Especificação de uma operação do objeto É composta por Seletor: nome simbólico que descreve o tipo da operação descreve O QUE o objeto que envia quer que seja invocado, não como deveria ser invocado o objeto recebedor da mensagem contém a descrição de COMO a operação deveria ser executada Parâmetros: argumentos que uma mensagem pode conter que faz parte da operação e requer uma ordem única Prof. Edilberto Silva - http://www.edilms.eti.br 79
Pessoa Coma cogumelos! Animal Comer Objeto que envia EMISSOR Determina o que deve ser manipulado e aguarda o retorno do objeto que foi Objeto: Animal Mensagem: COMA COGUMELOS Seletor: COMA Parâmetros: COGUMELOS Objeto que recebe RECEPTOR Determina como manipular
Mensagem Um objeto (Emissor) envia uma mensagem a outro (Receptor) que executará o serviço Métodos são invocados por Mensagens Exemplo A chamada de um procedimento/função em LP é uma aproximação inicial de uma mensagem, como em P(10,20), onde P é o seletor e os valores 10 e 20 são os parâmetros Diferença: a ação da mensagem a ser ativada depende essencialmente do objeto que receber a mensagem Prof. Edilberto Silva - http://www.edilms.eti.br 81
Método Origem: LP Smalltalk Quando um objeto é mapeado dentro do domínio do software, os processos que podem mudar a sua estrutura de dados são denominados Operações ou Métodos Métodos são invocados por Mensagens Cada objeto possue seu próprio conjunto de métodos Definições: São procedimentos definidos e declarados que atuam sobre um objeto ou sobre uma classe de objetos Descrição de uma sequência de ações a serem executadas por um objeto Através dos métodos que especifica-se a um objeto COMO FAZER alguma coisa São intrínsecos aos objetos e não podem ser separados Prof. Edilberto Silva - http://www.edilms.eti.br 82
Interface (Protocolo) Objetos se comunicam através de Mensagens, que invocam os Métodos desejados Parte Privada do Objeto (Visão Interna) Métodos Atributos Parte Compartilhada do Objeto ou Interface corresponde à parte externa do objeto, isto é, àquela que é vista por outros objetos com a finalidade de invocar os métodos que o objeto realiza agrupa um conjunto de mensagens que o objeto pode responder as mensagens especificam quais operações sobre o objeto podem ser realizadas, mas não como a operação será executada Prof. Edilberto Silva - http://www.edilms.eti.br 83
Estrutura de um Objeto (classe) <Nome do Objeto> <Métodos> Interface <Atributos> Parte Privada <Métodos> Prof. Edilberto Silva - http://www.edilms.eti.br 84
Ocultamento de Informação (Information Hiding) Característica que visa esconder detalhes de implementação É alcançado em OO, visto que o objeto, quando implementado, possui uma parte privada (atributos e métodos) e uma parte compartilhada (interface) Detalhes de implementação ficam escondidos na parte privada Programadores podem introduzir mudanças na implementação de um método sem afetar o comportamento externo desse método Prof. Edilberto Silva - http://www.edilms.eti.br 85
Encapsulamento de Dados Objetos encapsulam suas estruturas de dados (atributos) Os atributos de um objeto só podem ser manipulados pelos próprios métodos do objeto Restringe a visibilidade do objeto mas facilita o reuso Os DADOS e os MÉTODOS são empacotados sob um nome e podem ser reusados como uma especificação ou componente de programa Prof. Edilberto Silva - http://www.edilms.eti.br 86
Polimorfismo Ao receber uma mensagem para efetuar uma Operação, é o objeto quem determina como a operação deve ser efetuada, pois ele tem o comportamento próprio Como a responsabilidade é do Receptor e não do Emissor, pode acontecer que uma mesma mensagem ative métodos diferentes, dependendo da classe de objeto para onde é enviada a mensagem Permite a criação de várias classes com interfaces idênticas, porém objetos e implementações diferentes Capacidade de uma mensagem ser executada de acordo com as características do objeto que está recebendo o pedido de execução do serviço Prof. Edilberto Silva - http://www.edilms.eti.br 87
Polimorfismo Por exemplo, a operação < pode ser definida em várias classes de números: inteiro (método de comparação interia), string (método da ordem lexicográfica) É comum em LPOOs Prof. Edilberto Silva - http://www.edilms.eti.br 88
Analogia dos conceitos principais no POO e no paradigma tradicional de programação Linguagens Orientadas a Objetos Linguagens Tradicionais Objeto Classe Mensagem Método Interface Valor Tipo (TAD) Chamada de Procedimento Procedimento ou Função Conjunto de nomes e funções para um fim específico Prof. Edilberto Silva - http://www.edilms.eti.br 89
Efetuar uma "análise gramatical" sobre a narrativa de processamento que descreva a bolha Isolar nomes (e locuções nominais), verbos (e locuções verbais) Os nomes e os verbos que são sinônimos ou que não tem nenhuma relação com o processo de modelagem são omitidos Todos os nomes são classes ou atributos (itens de dados) Todos os verbos são operações (métodos) - relacionamento entre classes Prof. Edilberto Silva - http://www.edilms.eti.br 90