Upload
internet
View
132
Download
2
Embed Size (px)
Citation preview
1
Orientação a ObjetosOrientação a ObjetosOrientação a ObjetosOrientaçã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
2
ConceitosConceitos As linguagens de POO podem ser divididas em dois grupos:
Puras - Projetadas especificamente para o paradigma de OO
Smalltalk, Eiffel e Java Híbridas - Extensões de linguagens tradicionais e suportam
tanto o estilo tradicional quanto o OO. (C++, Objective-C, CLOS e dialetos OO de Pascal)
Alguns conceitos: Objetos e encapsulamento Polimorfismo e ligação dinâmica Classes Herança e subclasses Bibliotecas de classe
3
Objetos e EncapsulamentoObjetos e Encapsulamento
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:
Sistemas OO – coleção de objetos se comunicando, cooperando para atingir um resultado
Processador virtual
4
Exemplo:
Um ponto em um plano bidimensional que suporte o seguinte
protocolo mensagens: Recuperar a coordenada x Recuperar a coordenada y Retornar um novo ponto
igual a inversão do ponto
(inverter) Comparar (<) dois pontos
(Retorna um booleano) Adicionar (+) dois pontos
(Retorna um outro ponto)
Objetos e EncapsulamentoObjetos e Encapsulamento
Estado
Variáveis de
instância
Operações
Métodos (código)
x
y
inverter
< umPonto+ umPonto
coordenada x
coordenada y
100
225
5
Objetos e EncapsulamentoObjetos e Encapsulamento
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 objetoImportante para a manutenibilidade e usabilidade
ObjetoUsuári
o Modifica estado
mensagem
ObjetoImplementad
or ModificaUsuári
o
6
Objetos e EncapsulamentoObjetos e Encapsulamento
No exemplo: Polar (raio, ângulo) ao invés de cartesiano (x, y) 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
7
Polimorfismo e Ligação DinâmicaPolimorfismo 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:
8
Polimorfismo e Ligação DinâmicaPolimorfismo 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
PROCEDURE Display (umaFigura: Figura);BEGIN CASE umaFigura.figuraTipo OF Triangulo: MostrarTriangulo (umaFigura.Triangulo) Retangulo: MostrarRetangulo (umaFigura.Retangulo) Quadrado: MostrarQuadrado (umaFigura.Quadrado) Circulo: MostrarCirculo (umaFigura.Circulo) ENDEND
Similarmente: para mover ou computar a área
MostrarTriangulo
MostrarRetangulo
MostrarQuadrado
MostrarCirculo
Ligação estática
9
Polimorfismo e Ligação DinâmicaPolimorfismo e Ligação Dinâmica
Em linguagem OO com ligação dinâmicaImplementar um método para cada figura, mas o
mesmo nome pode ser usado para cada uma delasNão é responsabilidade do usuário determinar o
método correto a ser invocadoVantagens: Sobrecarga de nomes Mais adaptável a mudança Uso de código reutilizável genérico
mostrar umaFigura
Despachador de
mensagem
mostrar
Triangulo
Retangulo
Quadrado
Circulo
mostrar
mostrar
mostrar
10
ClassesClasses
Sistemas do mundo real dependem de nossa habilidade de classificar e categorizar Elefantes, tigres, ursos, cavalos e vacas são
mamíferos Prata, chumbo e platina são metais Poupança, conta corrente e aplicações são tipos
de contas bancárias Características comuns
Todos os mamíferos são vertebrados, têm sangue quente e têm pêlo em seu corpo
Todos os metais têm peso atômico Todas as contas bancárias têm saldo
11
ClassesClasses
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
12
ClassesClasses
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
Conta bancária
Consultar saldo
Retirar
Depositar
Número da contaNome do titular
Saldo
13
ClassesClasses 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
OPERAÇÕESDepósito:quantidadeRetirada:quantidadeSaldo
NúmeroConta 123456NomeTitular ElaineSaldo 777.77NúmeroConta 654321NomeTitular Gertrudes Saldo 100000.00NúmeroConta 162534NomeTitular Geraldo Saldo 100.00
Minha conta
bancária
Conta bancária
da Gertrudes
Conta bancária
do Geraldo
14
ClassesClasses
Esboço da classe ContaBancária Declaração do nome da classe Declaração de variáveis (NúmeroConta,
NomeTitular e Saldo) Métodos (AbrirConta, Retirar, Depositar e
ConsultarSaldo), com os argumentos necessários Criar nova instância da classe ContaBancária
Mensagem para o método AbrirConta da classe ContaBancária
Em muitas linguagens: new Parâmetros: número da conta, nome do titular e
saldo de abertura
15
Herança e SubclassesHerança e Subclasses Sempre pensamos em objetos como especializações de outros objetos:
Metais preciosos - metais Carros esportivos - carros Livros de romance – livros
Subclasse, superclasse e diagrama de hierarquia de classe
Metal preciosoCarro esportivo
Livro de romance
MetalCarroLivro
Conta Bancária
Conta Corrent
e
Poupança
Aplicação
Polígono
Quadrilátero Triângul
oRetângul
o
Quadrado
16
Herança e SubclassesHerança e Subclasses Relacionamento ‘é-um’ X Relacionamento ‘parte de’
Relacionamentos de subclasse são relacionamentos de classe
Relacionamentos de parte ou componentes são relacionamentos entre objetos
Máquina
Pistão
Ponto
Círculo
17
Herança e SubclassesHerança e SubclassesEspecialização e generalização Exemplo dos polígonos Zebra – cavalo com listrasSubclasse: 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
NoConta 123456Saldo 10000.00Tempo 5.0
Objeto
Conta Bancári
aConta
Corrente
Aplicação
Poupança
NoConta 654321Saldo 3300.77
NoConta 162435Saldo 23.99
18
Herança e SubclassesHerança e Subclasses 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 é executadoumaContaAplicação consultarTempo método da classe ContaAplicaçãoumaContaCorrente consultarSaldo método herdado da classe
ContaBancáriaumaContaPoupança consultarTempo erro – nenhum método na
superclasseumaContaPoupança imprimir método herdado da classe Objeto
19
Herança e SubclassesHerança e Subclasses
OPERAÇÕES
Imprimir
OPERAÇÕESDepositar: quantidadeRetirar: quantidadeConsultarSaldo
OPERAÇÕES
OPERAÇÕESRetirar: quantidade
OPERAÇÕESDepositar: quantidadeRetirar: quantidadeConsultarTempo
Classe Objeto
Classe Conta Bancária
Classe Conta Corrente
Classe Poupança
Classe Aplicações
20
Herança e SubclassesHerança e Subclasses
Uma nova classe pode diferenciar-se de sua superclasse:
Suportando operações adicionais diferentes das herdadas
Suportando novas implementações de operações que poderiam ser herdadas
Sobrepondo as operações existentes suportadas pela superclasse mas inapropriada para a nova classe adicionando uma operação que sinaliza um erro
Acrescentando dados adicionais
21
Bibliotecas de ClasseBibliotecas 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çãoOrdenada, ColeçãoSorteada, 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
22
Resumo de ConceitosResumo de Conceitos
POO pode ser caracterizada como: 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.
Passagem de mensagem: Métodos definem como o objeto irá responder a uma dada mensagem.
Programação usando polimorfismo: Mensagens podem ser interpretadas de diferentes modos por diferentes receptores.
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.