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

As linguagens de POO podem ser divididas em dois grupos:
 Puras - Projetadas especificamente para o paradigma de
OO


Híbridas - Extensões de linguagens tradicionais e
suportam tanto o estilo tradicional quanto o OO.


Smalltalk, Eiffel e Java
(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
2
Objetos 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:
Processado
r virtual

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
 Recuperar a coordenada x
coordenada x
x
 Recuperar a coordenada y
100
y
 Retornar um novo ponto
inverter
igual a inversão do ponto
< umPonto
(inverter)
coordenada y
 Comparar (<) dois pontos
+ umPonto
225
(Retorna um booleano)
Variáveis de
Métodos
instância
 Adicionar (+) dois pontos
(código)
(Retorna um outro ponto)
4

Objetos 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 objeto
Importante para a manutenibilidade e usabilidade
Usuário
Modifica estado
Objeto
mensagem
Implementador
Modifica
Objeto
Usuário
5
Objetos 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
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

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)
END
END
Ligação estática
Similarmente: para mover ou computar a área
MostrarTriangulo
MostrarRetangulo
MostrarQuadrado
MostrarCirculo
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
 Sobrecarga de nomes
Retangulo
 Mais adaptável a mudança
mostrar
 Uso de código reutilizável genérico
Quadrado

mostrar
mostrar umaFigura
Despachador
de mensagem
Circulo
mostrar
9
Classes


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
10
Classes




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



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


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úmeroConta
NomeTitular
Saldo
OPERAÇÕES
Depósito:quantidade
Retirada:quantidade
Saldo
123456
Elaine
777.77
Minha conta
bancária
NúmeroConta
654321
NomeTitular Gertrudes
Saldo
100000.00
Conta
bancária da
Gertrudes
NúmeroConta
NomeTitular
Saldo
Conta
bancária do
Geraldo
162534
Geraldo
100.00
13
Classes


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
14
Herança e Subclasses

Sempre pensamos em objetos como especializações de outros objetos:
Metais preciosos - metais
Metal precioso
 Carros esportivos - carros
Carro esportivo
Livro de romance
 Livros de romance – livros
Subclasse, superclasse e diagrama
de hierarquia de classe
Polígono


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’


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

16
Herança e Subclasses
Especialização e generalização

Exemplo dos polígonos

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
NoConta
Saldo
Tempo
123456
10000.00
5.0
NoConta
Saldo
654321
3300.77
NoConta
Saldo
162435
23.99
Objeto
Conta
Bancária
Conta
Corrente
Poupança
Aplicação
17
Heranç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 é executado
umaContaAplicação consultarTempo método da classe ContaAplicação
umaContaCorrente consultarSaldo método herdado da classe
ContaBancária
umaContaPoupança consultarTempo
umaContaPoupanç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
ConsultarSaldo
Classe Conta Corrente
OPERAÇÕES
Classe Aplicações
Classe Poupança
OPERAÇÕES
Retirar: quantidade
OPERAÇÕES
Depositar: quantidade
Retirar: quantidade
ConsultarTempo
19
Heranç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
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çã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
21
Resumo 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.
22
Download

Classe