Escolar Documentos
Profissional Documentos
Cultura Documentos
Java e Modelo de Objetos. Copyright © 1999, by Jorge H. C. Fernandes. Todos os Direitos Reservados.
Ferramentas Convencionais
Java e Modelo de Objetos. Copyright © 1999, by Jorge H. C. Fernandes. Todos os Direitos Reservados.
Um Kit de Soquetes
Java e Modelo de Objetos. Copyright © 1999, by Jorge H. C. Fernandes. Todos os Direitos Reservados.
Polimorfismo e o Kit de
Soquetes
Java e Modelo de Objetos. Copyright © 1999, by Jorge H. C. Fernandes. Todos os Direitos Reservados.
Uma Definição Polimórfica
para o “Kit”
O ato de girar uma chave de torção acoplada a
um soquete pode ser usado em várias situações
distintas
Todos os soquetes tem uma mesma interface
com a chave, que neste caso é um orifício
quadrado
Sem conhecimento da chave de torção, cada
soquete tem um acoplador especial, adaptado a
porcas de tamanho diferente
Para usar a mesma chave e método de torção
ao se criar um novo formato de porca é preciso
apenas criar um novo soquete
Java e Modelo de Objetos. Copyright © 1999, by Jorge H. C. Fernandes. Todos os Direitos Reservados.
Uma Interpretação Orientada a
Objetos para o “Kit”
porca = objeto todos os soquetes tem a
caixa de porcas de mesma interface
mesmo tamanho = classe (assinatura de método)
soquete = método com a chave de torção
(método polimótfico)
cada soquete (método)
se aplica a uma única cada soquete (método)
caixa de porca (classe) tem um acoplador
(implementação de
torçer a chave = método méotodo) diferente que
polimórfico se adapta a uma classe
de porcas
Java e Modelo de Objetos. Copyright © 1999, by Jorge H. C. Fernandes. Todos os Direitos Reservados.
Uma Implementação em Java
do “Kit de Soquetes” (1)
Java e Modelo de Objetos. Copyright © 1999, by Jorge H. C. Fernandes. Todos os Direitos Reservados.
Uma Implementação em Java
do “Kit de Soquetes” (2)
class ChaveDeTorcao {
/* Aperta qualquer porca */
void aperte(Porca porca) {
porca.acopleETorca();
}
}
Java e Modelo de Objetos. Copyright © 1999, by Jorge H. C. Fernandes. Todos os Direitos Reservados.
Uma Implementação em Java
do “Kit de Soquetes” (3)
Java e Modelo de Objetos. Copyright © 1999, by Jorge H. C. Fernandes. Todos os Direitos Reservados.
Onde Colocar os Parafusos?
class ChaveDeTorcao {
/* Aperta qualquer porca */
void aperte(Porca porca) {
porca.acopleETorca();
}
}
Porca Parafuso
Java e Modelo de Objetos. Copyright © 1999, by Jorge H. C. Fernandes. Todos os Direitos Reservados.
Parafuso é uma Porca?
Porca
Porca10mm Porca8mm
Parafuso
Porca12mm
Parafuso8mm
Parafuso10mm
Parafuso12mm
Java e Modelo de Objetos. Copyright © 1999, by Jorge H. C. Fernandes. Todos os Direitos Reservados.
Porcas e Parafusos são
Primos?
Roscável abstract class Roscável {
abstract void acopleETorca();
}
Porca Parafuso
Parafuso8mm
Porca10mm Porca8mm Parafuso10mm
Porca12mm Parafuso12mm
Java e Modelo de Objetos. Copyright © 1999, by Jorge H. C. Fernandes. Todos os Direitos Reservados.
Reescrevendo o Cliente do
Método Polimórfico
class ChaveDeTorcao {
/* Aperta qualquer porca */
void aperte(Porca porca) {
porca.acopleETorca();
}
}
class ChaveDeTorcao {
/* Aperta qualquer roscável */
void aperte(Roscável r) {
r.acopleETorca();
}
}
Java e Modelo de Objetos. Copyright © 1999, by Jorge H. C. Fernandes. Todos os Direitos Reservados.
Que Outros Parentescos?
ItemEstoque
Reciclável Oxidável
Roscável
Porca Parafuso
Parafuso8mm
Java e Modelo de Objetos. Copyright © 1999, by Jorge H. C. Fernandes. Todos os Direitos Reservados.
Problemas com Herança
Múltipla
interface Roscável {
void acopleETorca();
}
Java e Modelo de Objetos. Copyright © 1999, by Jorge H. C. Fernandes. Todos os Direitos Reservados.
Classes e Interfaces
ItemEstoque
Interfaces
Reciclável Oxidável
Roscável
Java e Modelo de Objetos. Copyright © 1999, by Jorge H. C. Fernandes. Todos os Direitos Reservados.
Interfaces Roscável, Oxidável
e Reciclável
interface Reciclável {
String categoriaReciclagem();
}
Java e Modelo de Objetos. Copyright © 1999, by Jorge H. C. Fernandes. Todos os Direitos Reservados.
Implementação de Interfaces
abstract class Porca extends ItemEstoque
implements Roscável, Oxidável, Reciclável {
int faces;
abstract void acopleETorca();
abstract String índiceOxidação();
String categoriaReciclagem() {return “Metal”;}
}
Java e Modelo de Objetos. Copyright © 1999, by Jorge H. C. Fernandes. Todos os Direitos Reservados.