Orientao a Objetos Uma Introduo ao Paradigma de
Orientação a Objetos Uma Introdução ao Paradigma de Orientação a Objetos e ao Projeto Orientado a Objetos Elaine Harada Teixeira de Oliveira – DCC – ICE - UFAM 1
Conceitos n As linguagens de POO podem ser divididas em dois grupos: n Puras - Projetadas especificamente para o paradigma de OO n n Híbridas - Extensões de linguagens tradicionais e suportam tanto o estilo tradicional quanto o OO. n n Smalltalk, Eiffel e Java (C++, Objective-C, CLOS e dialetos OO de Pascal) Alguns conceitos: n n n Objetos e encapsulamento Polimorfismo e ligação dinâmica Classes Herança e subclasses Bibliotecas de classe 2
Objetos e Encapsulamento n n n Linguagens tradicionais: dados e procedimentos são consideradas entidades separadas Linguagens OO: entidade única e indivisível – objeto Objeto encapsula os dados e os procedimentos (métodos) Dados só podem ser modificados pelos métodos que são parte do objeto Chamar um método – passar uma mensagem Programa: Processado r virtual n Sistemas OO – coleção de objetos se comunicando, cooperando 3 para atingir um resultado
Objetos e Encapsulamento Exemplo: Um ponto em um plano bidimensional que suporte o seguinte protocolo mensagens: Operações Estado n Recuperar a coordenada x x n Recuperar a coordenada y 100 y n Retornar um novo ponto inverter igual a inversão do ponto < um. Ponto (inverter) coordenada y n Comparar (<) dois pontos + um. Ponto 225 (Retorna um booleano) Variáveis de Métodos instância n Adicionar (+) dois pontos (código) (Retorna um outro ponto) 4 n
Objetos e Encapsulamento – usuários de um objeto não precisam (ou não deveriam) acessar a representação ou a implementação de operações. Duas visões de objetos: uma para usuários potenciais do objeto e outra para os implementadores do objeto Importante para a manutenibilidade e usabilidade Usuário Modifica estado Objeto mensagem Implementador Modifica Objeto Usuário 5
Objetos e Encapsulamento No exemplo: n Polar (raio, ângulo) ao invés de cartesiano (x, y) n Implementação de recuperar a coordenada x iria mudar, mas não afetaria os usuários. Mensagem para recuperar a informação. Terminologia: Método: Um sinônimo para procedimento ou função. Invocado quando uma mensagem é recebida por um objeto. Protocolo: O conjunto de mensagens para as quais o objeto responde 6
Polimorfismo e Ligação Dinâmica Uma das características mais importantes a interpretação da mensagem está nas mãos do receptor Polimorfismo: a mesma mensagem pode ser interpretada de diferentes maneiras por diferentes usuários Mensagens podem ser vistas como chamadas de procedimento de ligação tardia Ligação dinâmica: processo de atrasar a determinação do método real a ser invocado até a hora da execução Exemplo: Polimorfismo e ligação dinâmica Ligação dinâmica X Ligação estática Aplicação com figuras geométricas: 7
Polimorfismo e Ligação Dinâmica Em linguagem estruturada: Abstração da figura em uma definição de tipo: registro variante ou estrutura com um campo que discrimina entre os diferentes tipos de figuras n PROCEDURE Display (uma. Figura: Figura); BEGIN CASE uma. Figura. figura. Tipo OF Triangulo: Mostrar. Triangulo (uma. Figura. Triangulo) Retangulo: Mostrar. Retangulo (uma. Figura. Retangulo) Quadrado: Mostrar. Quadrado (uma. Figura. Quadrado) Circulo: Mostrar. Circulo (uma. Figura. Circulo) END Ligação estática Similarmente: para mover ou computar a área Mostrar. Triangulo Mostrar. Retangulo Mostrar. Quadrado Mostrar. Circulo 8
Polimorfismo e Ligação Dinâmica Em linguagem OO com ligação dinâmica Implementar um método para cada figura, mas o mesmo nome pode ser usado para cada uma delas Não é responsabilidade do usuário determinar o método correto a ser invocado Triangulo Vantagens: mostrar n Sobrecarga de nomes Retangulo n Mais adaptável a mudança mostrar n Uso de código reutilizável genérico Quadrado n mostrar uma. Figura Despachador de mensagem Circulo mostrar 9
Classes n n Sistemas do mundo real dependem de nossa habilidade de classificar e categorizar n Elefantes, tigres, ursos, cavalos e vacas são mamíferos n Prata, chumbo e platina são metais n Poupança, conta corrente e aplicações são tipos de contas bancárias Características comuns n Todos os mamíferos são vertebrados, têm sangue quente e têm pêlo em seu corpo n Todos os metais têm peso atômico n Todas as contas bancárias têm saldo 10
Classes n n Em POO, classe é a abstração que capta os atributos e operações comuns a um conjunto de objetos Classe é a descrição de um conjunto de objetos com características, atributos e comportamentos semelhantes Uma classe descreve a representação e o protocolo de mensagem seguido por cada um dos membros (instâncias) da classe Instância é um objeto individual que é tanto descrito por uma classe particular como é um membro dela 11
Classes n n n A representação do objeto pode ser pensada como um registro em Pascal ou uma estrutura em C – uma coleção de componentes heterogêneos Os campos de um objeto são referidos como variáveis de instância (número da conta, nome do titular e saldo) Variável de instância: dado que é uma parte componente ou campo de um objeto Consultar saldo Conta bancária Retirar Depositar Número da conta Nome do titular Saldo 12
Classes n n Classe: Um repositório para métodos (operações) entendidos por todas as instâncias (objetos) pertencentes àquela classe – um mecanismo de compartilhamento de código Instância: um repositório para dados que descreve o estado de um membro de uma classe Número. Conta Nome. Titular Saldo OPERAÇÕES Depósito: quantidade Retirada: quantidade Saldo 123456 Elaine 777. 77 Minha conta bancária Número. Conta 654321 Nome. Titular Gertrudes Saldo 100000. 00 Conta bancária da Gertrudes Número. Conta Nome. Titular Saldo Conta bancária do Geraldo 162534 Geraldo 100. 00 13
Classes n n Esboço da classe Conta. Bancária n Declaração do nome da classe n Declaração de variáveis (Número. Conta, Nome. Titular e Saldo) n Métodos (Abrir. Conta, Retirar, Depositar e Consultar. Saldo), com os argumentos necessários Criar nova instância da classe Conta. Bancária n Mensagem para o método Abrir. Conta da classe Conta. Bancária n n Em muitas linguagens: new Parâmetros: número da conta, nome do titular e saldo de abertura 14
Herança e Subclasses n Sempre pensamos em objetos como especializações de outros objetos: Metais preciosos - metais Metal precioso n Carros esportivos - carros Carro esportivo Livro de romance n Livros de romance – livros Subclasse, superclasse e diagrama de hierarquia de classe Polígono n n Conta Bancária Conta Corrente Poupança Quadrilátero Aplicação Metal Carro Livro Triângulo Retângulo Quadrado 15
Herança e Subclasses Relacionamento ‘é-um’ X Relacionamento ‘parte de’ n n Máquina Ponto Pistão Círculo Relacionamentos de subclasse são relacionamentos de classe Relacionamentos de parte ou componentes são relacionamentos entre objetos n 16
Herança e Subclasses Especialização e generalização n Exemplo dos polígonos n Zebra – cavalo com listras Subclasse: uma classe que herda métodos e representação de uma classe existente Superclasse: uma classe da qual uma outra classe herda representação e métodos No. Conta Saldo Tempo 123456 10000. 00 5. 0 No. Conta Saldo 654321 3300. 77 No. Conta Saldo 162435 23. 99 Objeto Conta Bancária Conta Corrente Poupança Aplicação 17
Herança e Subclasses n n Aplicação – tempo (variável de instância adicional) Subclasses podem adicionar novas variáveis de instância, mas não podem remover Subclasses podem sobrepor a herança de um método de uma superclasse Métodos de implementação idêntica nas subclasses podem ser implementados uma única vez na superclasse Mensagem enviada Qual método é executado uma. Conta. Aplicação consultar. Tempo método da classe Conta. Aplicação uma. Conta. Corrente consultar. Saldo método herdado da classe Conta. Bancária uma. Conta. Poupança consultar. Tempo uma. Conta. Poupança imprimir erro – nenhum método na superclasse método herdado da classe Objeto 18
Herança e Subclasses Classe Objeto OPERAÇÕES Imprimir Classe Conta Bancária OPERAÇÕES Depositar: quantidade Retirar: quantidade Consultar. Saldo Classe Conta Corrente OPERAÇÕES Classe Aplicações Classe Poupança OPERAÇÕES Retirar: quantidade OPERAÇÕES Depositar: quantidade Retirar: quantidade Consultar. Tempo 19
Herança e Subclasses Uma nova classe pode diferenciar-se de sua superclasse: n Suportando operações adicionais diferentes das herdadas n Suportando novas implementações de operações que poderiam ser herdadas n Sobrepondo as operações existentes suportadas pela superclasse mas inapropriada para a nova classe adicionando uma operação que sinaliza um erro n Acrescentando dados adicionais 20
Bibliotecas de Classe Bibliotecas tradicionais são estáticas. Não permitem sobreposição ou extensão de uma rotina Bibliotecas OO permitem customização e extensão através de subclasses Classes Base: Objeto, Booleano, Caracter, Inteiro, Real, Fracionário, Data, Hora, etc. Classes de Coleção: Dicionário, Vetor, String, Símbolo, Conjunto, Coleção. Ordenada, Coleção. Sorteada, etc. Classes Gráficas: Ponto, Retângulo, Bitmap, etc. (Classes que fornecem acesso às rotinas gráficas) Classes de Interface com o Usuário: Classes que suportam janelas, caixas de diálogo, botões, menus, etc Linguagens OO encorajam a produção de bibliotecas de classe reusáveis 21
Resumo de Conceitos POO pode ser caracterizada como: n Programação com objetos: Objetos têm estado e pode responder questões sobre eles mesmos. Objeto são tipos de dados. Eles encapsulam o estado ou representação de um objeto junto com as operações naquele estado e suportam o princípio de ocultamento de informação. n Passagem de mensagem: Métodos definem como o objeto irá responder a uma dada mensagem. n Programação usando polimorfismo: Mensagens podem ser interpretadas de diferentes modos por diferentes receptores. n Programação usando herança: Compartilhamento de código é atingido através de herança de representação e métodos de uma classe de objeto para outra. Novas classes são definidas como especializações de classes existentes. 22
- Slides: 22