22
1 Orientação a Orientação a Objetos 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 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 –

Embed Size (px)

Citation preview

Page 1: 1 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 –

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

Page 2: 1 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 –

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

Page 3: 1 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 –

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

Page 4: 1 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 –

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

Page 5: 1 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 –

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

Page 6: 1 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 –

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

Page 7: 1 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 –

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:

Page 8: 1 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 –

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

Page 9: 1 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 –

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

Page 10: 1 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 –

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

Page 11: 1 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 –

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

Page 12: 1 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 –

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

Page 13: 1 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 –

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

Page 14: 1 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 –

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

Page 15: 1 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 –

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

Page 16: 1 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 –

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

Page 17: 1 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 –

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

Page 18: 1 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 –

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

Page 19: 1 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 –

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

Page 20: 1 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 –

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

Page 21: 1 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 –

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

Page 22: 1 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 –

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.