Padrões de Projetos

Propaganda
Padrões de Projeto
2 – Revisão de Programação Orientada a Objetos
PROGRAMAÇÃO ORIENTADA A
OBJETOS
Padrões de Projeto - Revisão de
POO
Revisão rápida com análise acerca de algumas de suas
implicações em Padrões de Projeto
2
1.
2.
3.
4.
5.
Composição, agregação, associação
Herança
Reescrita
Sobrecarga
Polimorfismo
PARTE 2
Padrões de Projeto - Revisão de
POO
"O homem absurdo é aquele que nunca muda.“
- Georges Clemenceau
3
Composição, Agregação e
Associação
• Composição
• Agregação
• Uma locomotiva (todo) tem
um farol (parte), mas não
deixa de existir se não o tiver;
• Associação
• Um trem usa uma estrada de
ferro (a estrada não faz parte
do trem, mas ele depende
dela).
Padrões de Projeto - Revisão de
POO
• Um trem é formado por 1
locomotiva e n vagões;
• Relacionamento tem-um;
4
Herança
• Praticando! (10 minutos)
• Imagine o sistema de um banco... Nesse sistema precisamos
armazenar dados de funcionários (que podem exercer
diferentes funções, ex.: secretário ou gerente) e clientes.
• Vamos modelar essa parte do sistema! 
Padrões de Projeto - Revisão de
POO
• Objetivo 1: reuso de código.
5
Herança
Padrões de Projeto - Revisão de
POO
• Relacionamento É-UM  em java, instanceof
6
Herança
• Objetivos:
Reuso de código;
Polimorfismo.
• Palavras-chave:
• extends: para herdar as caraterísticas de uma classe;
• Instanceof: para testar relacionamentos É-UM entre objetos
Padrões de Projeto - Revisão de
POO
1.
2.
7
Quais seriam as implicações dessa nova
abordagem?
Padrões de Projeto - Revisão de
POO
Se não houvesse herança em Java, como você
poderia reaproveitar o código de outra classe?
8
Herança vs Composição
• Exemplo: Carro
• Imagine que você criou um carro com vários utilitários, ex.: GPS,
direção hidráulica, injeção eletrônica. Então, no seu sistema você
percebe que precisa lidar com carros Opala, mas Opala não tem
GPS nem inj. eletrônica.
• Como poderíamos resolver isso? Próxima aula aprenderemos
uma solução com o nosso 1º padrão de projeto. 
Padrões de Projeto - Revisão de
POO
• Herança: quando uma classe herda a outra, ela está muito
ligada à outra
• Composição: estende uma classe através da delegação de
trabalho a ela
9
Overriding
• Outros nomes: sobrescrever (overwriting), reescrever,
sobrepor...
• No exemplo anterior, suponha que os funcionários, de modo
geral, ganhem uma bonificação de 10%. Mas, devido o fato do
gerente ter mais responsabilidade, seria justo que ele ganhasse
uma bonificação de 20% de seu salário. Como nós alteraríamos o
nosso modelo para satisfazer essa nova especificação?
(modele/implemente apenas as classes Funcionário e Gerente)
Padrões de Projeto - Revisão de
POO
• Praticando! (10 minutos)
10
Padrões de Projeto - Revisão de
POO
Overriding
11
Overriding
• Objetivo: especializar um método herdado.
1.
A assinatura deve ser igual ou bem similar:
1.
2.
3.
2.
Lista de argumentos exatamente igual;
Tipo de retorno deve ser “igual” (lembrar da relação É-UM, pois
subtipos também são aceitos);
Modificador de acesso pode ser menos restritivo;
Para haver reescrita deve, primeiramente, haver herança.
Padrões de Projeto - Revisão de
POO
• Regras para sobrescrever um método:
Mais regras em: Livro de Certificação Java
• SCJP Sun Certified Programmer for Java 6
• OCP Java SE 6 Programmer
12
Overloading
Padrões de Projeto - Revisão de
POO
• Outro nome: sobrecarregar, ...
13
Overloading
• Objetivo: prover ao usuário a possibilidade de executar uma
funcionalidade do sistema passando diferentes inputs (tipos de dados)
• Regras para sobrecarregar um método...
1.
2.
3.
4.
Os métodos sobrecarregados devem alterar a lista de argumentos;
Os métodos sobrecarregados podem alterar o tipo de retorno;
Os métodos sobrecarregados podem alterar o modificador de acesso;
Um método pode ser sobrecarregado na mesma classe ou em uma
subclasse.
• Também é possível sobrecarregar um construtor.
Padrões de Projeto - Revisão de
POO
• É basicamente a uma outra implementação de um método já existente
mas com argumentos diferentes.
Mais regras em: Livro de Certificação Java
• SCJP Sun Certified Programmer for Java 6
• OCP Java SE 6 Programmer
14
Polimorfismo
Polivárias
morfoformas
• O que guarda uma variável do tipo Funcionário?
Gerente g = new Gerente();
Funcionario f = g;
f.setSalario(1000);
Gerente
Gerente
g
get/setNome()
get/setIdade()
get/setSalario()
Senha
numFuncionariosGerenciados
getBonificacao()
Autentica()
Funcionario
f
Padrões de Projeto - Revisão de
POO
• Uma referência para um funcionário... 
15
Polimorfismo
• O que guarda uma variável do tipo Funcionário?
Gerente g = new Gerente();
Funcionario f = g;
f.setSalario(1000);
System.out.println(f.getBonificacao());
Gerente
Gerente
g
get/setNome()
get/setIdade()
get/setSalario()
Senha
numFuncionariosGerenciados
getBonificacao()
Autentica()
Decidido em tempo de
execução
Funcionario
f
Padrões de Projeto - Revisão de
POO
• Uma referência para um funcionário.
16
Polimorfismo
• Por que polimorfismo?
public void registra(Funcionario funcionario) {
this.totalDeBonificacoes += funcionario.getBonificacao();
}
public double getTotalDeBonificacoes() {
return this.totalDeBonificacoes;
}
Padrões de Projeto - Revisão de
POO
class ControleDeBonificacoes {
private double totalDeBonificacoes = 0;
}
17
Polimorfismo
• Por que polimorfismo?
• O que acontece se futuramente precisarmos criar outros tipos
de funcionários?
• Não
importa
como
nos
referenciamos
aControleDeBonificacoes();
um objeto, o
ControleDeBonificacoes
controle = new
método
que
será invocado é
Gerente
funcionario1 = new
Gerente();
funcionario1.setSalario(1000);
sempre o do objeto em questão.
controle.registra(funcionario1);
•Funcionario
Programe
pra uma
funcionario2 = newsempre
Funcionario();
funcionario2.setSalario(1000);
superclasse!
controle.registra(funcionario2);
System.out.println(controle.getTotalDeBonificacoes());
Padrões de Projeto - Revisão de
POO
• Dicas sobre polimorfismo:
18
• Essa aula utilizou alguns exemplos modificados das apostilas
caelum além de alguns conceitos e exemplos abordados na
apostilas para certificação java (SCJP e OCJP).
• Ahhh, alguns destes exemplos também saíram da minha
cabeça. 
Padrões de Projeto - Revisão de
POO
Referências
19
Download