Núcleo de Computação Eletrônica Curso de Programação de Computadores Maio a Setembro/2000 Análise e Projeto de Sistemas Conceitos de Orientação a Objetos Renata Araujo Ricardo Storino Objeto Definição: Propósito: Entidade de software que reflete de alguma forma o mundo real representar uma entidade do mundo real Objetos possuem: 2 Um conceito, uma abstração com significado específico em um contexto Identidade Conjunto de características que determinam seu estado Comportamento específico definido por um conjunto de ações Exemplos Identidade: ‘Beija-flor Biju’ Identidade: ‘Pessoa Mário’ Características: Características: penas azuis bico fino vôo rápido Comportamento: voar piar 3 olhos pretos nasceu em 16/02/70 pesa 70kg mede 1,70m Comportamento: andar falar comer rir Exemplos Identidade: ‘Telefone da minha casa’ Características: azul número 576-0989 tone Comportamento: tocar discar Identidade: ‘ônibus da escola’ Características: cor amarela placa LXY 7684 30 assentos a diesel Comportamento: frear andar correr buzinar acelerar 4 Objeto Representação Identidade Características (estado) Funcionário_Mário Nome = Mário Sá Nasc = 16/02/70 Salário = 3.000 InformarSalário CalcularIdade Comportamento Serviços, Interface ou protocolo Mário 5 Objeto Implementação Interface Visível Conjunto de operações Parte encapsulada (escondida) Implementação Estrutura de dados – Estado Implementação de suas operações - Métodos Estrutura de Dados (estado) 6 Serviços, Interface ou protocolo Objeto Exemplo: Funcionário Mário Sá InformarSalário Estrutura de Dados 7 Nome = Mário Sá Nasc = 16/02/70 Salário = 3.000 CalcularIdade Serviços, Interface ou protocolo Classe Definição: Uma classe pode ser vista como uma “fábrica de objetos” Objetos de uma classe são denominados “instâncias” 8 Abstrações utilizadas para representar um conjunto de objetos com características e comportamento idênticos Todos os objetos são instâncias de alguma classe Todos os objetos de uma classe são idênticos no que diz respeito a sua interface e implementação Exemplo Características: Comportamento: cor das penas formato do bico velocidade de vôo Pássaro Identidade: ‘Beija-flor Biju’ Características: cor das penas: azuis formato do bico: fino velocidade de vôo: rápida Comportamento: voar piar 9 voar piar Identidade: ‘Minha pomba’ Características: cor das penas: cinza formato do bico: curto velocidade de vôo: média Comportamento: voar piar Exemplo Características: Telefone cor número discagem Comportamento: tocar discar Identidade: ‘Meu celular’ Identidade: ‘Telefone da minha casa’ Características: cor: azul número: 576-0989 discagem: tone Comportamento: tocar discar 10 Características: cor: preta número: 99193467 discagem: tone Comportamento: tocar discar Classe Funcionário Nome Nasc Salário Classe InformarSalário CalcularIdade Funcionário_Helena Nome=Helena Reis Nasc=28/01/1965 Salário = 4.000 InformarSalário CalcularIdade 11 Instâncias (objetos) Funcionário_Mário Nome=Mário Sá Nasc=16/02/1970 Salário = 3.000 InformarSalário CalcularIdade Atributos Descrevem as características das instâncias de uma classe Seus valores definem o estado do objeto O estado de um objeto pode mudar ao longo de sua existência A identidade de um objeto, contudo, nunca muda Funcionário_Helena Funcionário Nome Nasc Salário InformarSalário CalcularIdade Nome=Helena Reis Nasc=28/01/1965 Salário = 4.000 InformarSalário CalcularIdade Funcionário_Mário Nome=Mário Sá Nasc=16/02/1970 Salário = 3.000 InformarSalário CalcularIdade 12 Serviços/Métodos Representam o comportamento das instâncias de uma classe Correspondem ao protocolo ou ações das instâncias de uma classe Funcionário_Helena 4000 Funcionário Nome=Helena Reis Nasc=28/01/1965 Salário = 4.000 Nome Nasc Salário InformarSalário CalcularIdade InformarSalário CalcularIdade 3000 Informar Salário? 13 Funcionário_Mário Nome=Mário Sá Nasc=16/02/1970 Salário = 3.000 InformarSalário CalcularIdade Serviços/Métodos Um método é a implementação de uma operação Métodos só tem acesso aos dados da classe para a qual foram definidos Os dados de uma classe só podem ser manipulados por métodos da classe (pelo princípio do encapsulamento) Métodos possuem argumentos, variáveis locais , valor de retorno etc Alguns métodos especiais: 14 Construtores – criam objetos de uma classe Destrutores – destroem objetos de uma classe Mensagens 15 Objetos são entidades independentes que necessitam se comunicar Troca de mensagens como paradigma de comunicação entre objetos Os dados de um objeto não podem ser manipulados ou vistos por outro objeto Para obter informações ou ativar o comportamento de objetos, é preciso enviar-lhes mensagens Objetos só reagem a mensagens que fazem parte das ações do protocolo de sua classe Ao receber uma mensagem, o objeto busca em seu protocolo um método que irá responder a tal mensagem Mensagens Funcionário Nome Nasc Salário InformarSalário CalcularIdade Funcionário_Helena 4000 Nome=Helena Reis Nasc=28/01/1965 Salário = 4.000 Informar Salário? InformarSalário CalcularIdade Funcionário_Helena ? Calcular Desconto? Nome=Helena Reis Nasc=28/01/1965 Salário = 4.000 InformarSalário CalcularIdade 16 ERRO! Polimorfismo 17 Possibilidade de enviar uma mesma mensagem para objetos de classes diferentes Cada uma das classes implementa um método específico para responder à mensagem Definição de protocolos comuns CalcularÁrea() { área = pi * Raio * Raio; retorna área ; } Polimorfismo Círculo Coordenada X Coordenada Y Raio CalcularÁrea CírculoXpto CalcularÁrea() Coordenada X = 10 Coordenada Y = 15 Raio = 2 CalcularÁrea 12,68 Retângulo ReatânguloXpto Coordenada X Coordenada Y Largura Altura Coordenada X = 10 Coordenada Y = 15 Largura = 3 Altura = 2 CalcularÁrea CalcularÁrea 18 CalcularÁrea() { área = Largura * Altura; retorna área; CalcularÁrea() 6 Herança 19 Conceito que expressa similaridades entre classes Estabelecem relacionamentos de generalizaçãoespecialização (“é-um”) entre classes Permitem estabelecer hierarquias de classificação Herança Anfíbio ... 20 Sapo Ex. Sapo Cururu Réptil Mamífero •Sapo Cururu é uma instância de Sapo •Sapo Cururu “é um” Anfíbio •Sapo Cururu “é um” Animal Animal Roedor Rato Ex. Mickey Mouse ... •Mickey Mouse é uma instância de Rato •Mickey Mouse “é um” Roedor •Mickey Mouse “é um” Mamífero •Mickey Mouse “é um” Animal Ave Vegetal •Mickey Mouse mama •Sapo Cururu NÃO mama •Sapo Cururu e Mickey Mouse respiram e têm coração Herança Funcionário Nome Nasc Salário Nome=Helena Reis Nasc=28/01/1965 Salário = 4.000 InformarSalário CalcularIdade InformarSalário CalcularIdade Gerente Nome Nasc Salário Projeto InformarProjeto InformarSalário CalcularIdade 21 Funcionário_Helena Gerente_Mário Nome=Mário Sá Nasc=16/02/1970 Salário = 3.000 Projeto = HelpCallCenter InformaProjeto InformarSalário CalcularIdade Herança Todo objeto Gerente “é um” objeto Funcionário Funcionário Superclasse (características comuns) Subclasse (características específicas) Funcionário_Helena Nome Nasc Salário Nome=Helena Reis Nasc=28/01/1965 Salário = 4.000 InformarSalário CalcularIdade InformarSalário CalcularIdade Gerente_Mário Gerente Nome=Mário Sá Nasc=16/02/1970 Salário = 3.000 Projeto = HelpCallCenter Projeto InformarProjeto 22 InformarSalário CalcularIdade InformaProjeto Herança Polimorfismo Suponha que gerentes recebam um adicional de 5% do salário por gerenciar projetos... Funcionário Nome Nasc Salário InformarSalário CalcularIdade InformarSalário: Gerente retorna o valor contido no atributo ‘Salário’ adicionado com 5% 23 Projeto InformarProjeto InformarSalário InformarSalário: retorna o valor contido no atributo ‘Salário’ Embora o serviço tenha o mesmo nome, dependendo da classe, terá um comportamento distinto Herança Polimorfismo Funcionário_Helena Nome=Helena Reis Nasc=28/01/1965 Salário = 4.000 4000 Informar Salário? InformarSalário CalcularIdade Gerente_Mário Nome=Mário Sá Nasc=16/02/1970 Salário = 3.000 Projeto = HelpCallCenter InformarSalário CalcularIdade InformaProjeto 24 3150 Informar Salário? Herança Herança Múltipla Exemplo: 25 Classes herdam características de várias classes Numa empresa administradora de cartões de crédito, alguns de seus funcionários são também seus clientes... Herança Cliente Funcionário_Helena Funcionário Nome=Helena Reis Nasc=28/01/1965 Salário = 4.000 InformarSalário CalcularIdade Nome Endereço Cartão Débito Nome Nasc Salário InformarCartão InformarDébito InformarSalário CalcularIdade Herança Múltipla Funcionário_Cliente Desconto InformarDesconto InformarDébito 26 Cliente_Márcia Nome= Márcia Silva Endereço=Rua X, 201 Cartão = Credicard Débito = 1000 InformarCar~tão InformarDébito Funcionário_Cliente_Zé Nome= Zé Pereira Nasc=16/02/1970 Salário = 3.000 Endereço= Rua Y casa 8 Cartão = Visa Débito = 3000 Desconto = 10% InformarSalário CalcularIdade InformarCartão InformarDébito InfromarDesconto Classe Abstrata Representação de uma classe que não possui instâncias Utilizada com objetivo de: Indivíduo Nome Endereço Nasc diminuir a complexidade auxiliar a classificação e organização da modelagem InformarNome Funcionário 27 Classe sem instâncias Cliente Salário Cartão Débito InformarSalário CalcularIdade InformarCartão InformarDébito Relacionamentos 28 Instâncias de classes podem manter relacionamentos com instâncias de outras classes Associações simples, com significado não definido previamente Associações com semântica pré-definida Relacionamentos Associações Simples Um supervisor supervisiona 1 ou vários (1,N) Funcionários Cardinalidade 1,N Funcionário Supervisor supervisiona 0,N Um Funcionário é supervisionado por nenhum ou vários (0,N) Supervisores Cardinalidade 29 Semântica Relacionamentos Agregações Semântica pré-definida de composição Um Departamento contém 1 ou vários (1,N) Funcionários Cardinalidade 1,N Funcionário Departamento 1 Todos os Funcionários pertencem a um Departamento Cardinalidade 30 Semântica Cardinalidade 31 0..1 - nenhum ou apenas um 0..N - nenhum ou vários 1 - somente um 1..N - vários