Vous êtes sur la page 1sur 33

11/11/2010

INICIAO A PADRES
DE PROJETO COM JAVA

Ministrante: Prof Francisco Cassimiro Neto

Introduo
2

Programao orientada a objetos X


procedural



Problema: trocar a lmpada

Procedural
Foco nos procedimentos
 Pegar nova lmpada
 Pegar escada
 Tirar a lmpada queimada
 Colocar a nova lmpada ...


Orientada a objetos
Foco nos objetos
Lmpada velha
 Lmpada nova
 Pessoa
 Escada



11/11/2010

Objetos
3

Abstraes de coisas da realidade para


modelagem computacional
 Brincar

de Deus Criar as coisas numa realidade


computacional
 Possuem estado e comportamento

Definies bsicas
4

Classes
Conjunto de objetos com caractersticas em comum
 Ex. Pessoa


Subclasse



uma classe gerada a partir da classe pai


O que ela herda?

Objeto
Instncia de uma classe
 Armazena (encapsula) estados pelos atributos
 Comportamento pelo mtodos
 Ex. Cassimiro


11/11/2010

Definies bsicas
5

nome = Cassimiro
idade = 26
Classe - Moldura

Instancia new Pessoa ( )

Pessoa

Pessoa

Pessoa
nome = Tiago
idade = 30

String nome______
double idade______
....

Pessoa
nome = Leila
idade = 25

E pessoa anda? Se voc colocar o mtodo de andar... Sim ela anda

Objetos
6

Objeto da classe Pessoa


 Estado

(Atributos)

 Nome:

Joaquim
 Peso: 90 Kg
 Idade: 33 anos
 Estado civil: Casado
 Comportamento

(Mtodos)

 Geralmente

acessam ou alteram os atributos


 Contm a lgica comportamental do objeto

11/11/2010

Exemplo classe Pessoa


7

Pode especificar uma


restrio de acesso !

Dividir para conquistar


8

Um sistema acadmico poderia ser implementado por


um nico objeto?


Objeto sistema acadmico

Imagine o gasto em manuteno





A maioria dos sistemas vivem mais em manuteno


Todos os estados e funes em um objeto




Cdigo macarronada
Ningum sabe onde comea um funo e termina a outra
A quantidade de atributos e mtodos deste objeto

E o trabalho em uma equipe de desenvolvedores

Ento... cada objeto com uma funo especfica dentro do sistema

Quem ficaria com qual parte?

11/11/2010

Dividir para conquistar


9

Ex. de uso
 Sistema

acadmico para cadastrar alunos de


uma turma de acordo com disciplinas
ministradas por professores

Herana
10

Necessidade de criar uma classe mais


especializada a partir de outra


Ex. Mais abrangente


Empregado
 Dado comum aos empregado






Mtodo comum a empregado




String nome
int salario
float salario
aumentaSalario

Chamada de superclasse

Promove a reutilizao de cdigo (cuidado!!!)

11/11/2010

Herana
11

Ex. Mais especfica

 Gerente
 Dados


especficos do gerente

secretaria, sala

 Mtodo


especfico do gerente

setSecretaria, setSala

 Chamada


de subclasse

Gerente um tipo de Empregado

Uso de Herana
12

Classe Empregado

11/11/2010

Uso de Herana
13

Classe Gerente

 Gerente
 Herda


os campos e mtodos no-privados

Ex. Mtodo aumentaSalario (reutilizao de cdigo)

 Adiciona


Campo secretaria e sala, e mtodo setSecretaria

Uso de Herana
14

A palavra super


Ter acesso a mtodos e construtores da superclasse


a partir da subclasse

Quando da execuo de aumentaSalario o mtodo


aumentaSalario da super executado passando o
percentual

11/11/2010

Observaes em Herana
15

O construtor de subclasse sempre chama o


construtor de uma superclasse
O construtor de Gerente chama o de Empregado
 Chamada no explicita (super) chama o construtor
vazio
 Caso este no exista em Funcionario ir ocorrer erro


public Gerente(int valor)

Toda classe em Java herda da Classe Object

Diagrama de classes
16

11/11/2010

Para pensar
17

Se tivermos vrios tipos de funcionrios


 Estagirio
 No

voluntrio

seria ideal para ter um mtodo aumentaSalario

 Funcionrios
 Teria

que agrega duas funes

que ter dois aumentos

 Imagine

fazer estas alteraes quando se tem


um sistemas com dezenas de tipos de funcinrios

Construtores
18

So blocos de comandos usados para


inicializar um objeto antes que este seja usado
 Possui

o mesmo nome da classe onde foi


declarado
 invocado no momento da criao de um objeto
(new)
 Como um mtodo, pode receber parmetros.
 No

tem tipo de retorno, pois o seu resultado


sempre uma nova instncia da classe

Uma classe pode ter nenhum, um ou vrios


construtores declarados

11/11/2010

Exemplo de construtores
19

No Eclipse

Classes Abstratas e Interfaces


20

Dizem para suas subclasses o que deve ser


feito sem especificar como
As superclasses so como guia de que
mtodos e campos as subclasses devem ter
No podem ser instanciadas!

10

11/11/2010

Classes Abstratas
21

Mtodos abstratos
 So

somente declarados no tendo um conjunto


de comandos em seu corpo
 Se uma classe possui pelo menos um mtodo
abstrato ela deve ser abstrata
 Um subclasse de uma abstrata deve implementar
os mtodos abstratos da superclasse

Uso de Classes Abstratas


22

Considere a classe abstrata Pessoa

O mtodo abstrato no possui corpo


 darNome

11

11/11/2010

Uso de Classes Abstratas


23

Uma classe que herda Pessoa

O mtodo abstrato deve ser implementado




24

Garante a implementao

O mtodo no abstrato herdado normalmente

Caso de erro em Classes


Abstratas


Por que do erro?

Um objeto Pessoa no pode ser instanciado


 Ele

abstrato !!!

12

11/11/2010

Interfaces
25

Se uma classe tiver todos os mtodos


abstratos ela pode ser uma interface


Todos mtodos da interface so abstratos





Suas implementaes (subclasses) devem implementar


todos os mtodos
No pode ser instanciada

Principal diferena das Classes Abstratas




Qualquer classe pode implementar vrias interfaces

Uso das Interfaces


26

Os dois cdigos tm a mesma funo

13

11/11/2010

Uso das Interfaces


27

Considere as duas interfaces

A classe que implemente as duas interfaces


deve implementar os 3 mtodos

Uso das Interfaces


28

Classe que implementa 2 interfaces

14

11/11/2010

Polimorfismo
29

Permite a manipulao uniforme de objetos


que herdam uma mesma classe
 Ex.

um mtodo que recebe parmetro um objeto


tipo Empregado pode receber um Gerente
pois ele um Empregado
 Um objeto pode trabalhar com uma instncia de
Gerente sabendo apenas que ele Empregado
 No

conhece as especificidades de Gerente

Polimorfismo
30

15

11/11/2010

Uso do Polimorfismo
31

No Eclipse !!!

Exerccio de Fixao
32




Quais seriam os principais objetos em um


sistema de controle de produtos em um
supermercado?
D um bom motivo de usar herana.
Qual a principal diferena entre Classes
Abstratas e Interfaces?

16

11/11/2010

Padres de projeto

33

Agora o bicho vai pegar !!!

Padres
34

Solues de projeto j aprovadas por outros


desenvolvedores
 Soluo

de problemas recorrentes
 Explora a soluo j disponvel por eles


Lembre-se
 Complica


o desenvolvimento
Facilita a manuteno

 Flexibilidade

a mudanas e extenses
 Reutilizao de cdigo

17

11/11/2010

Exemplo de aplicao
35

Jogo de simulao de um lago com patos


 Grande

espcies de patos nadando e produzindo

som

Obs.: Exemplo retirado o livro use a cabea padres de projeto

Alterao
36

Os executivos querem que aos patos voem


 Pensamento

inicial

 Adicionar

um mtodo voar a classe pato que todos os


patos iro voar

18

11/11/2010

Problema
37

Um acionista liga dizendo que at os patos de


borracha voaram
O

comportamento se propagou mais do que


devia

Possveis solues
38

Poderia sobrescrever o mtodo voar em


PatoBorracha p/ no fazer nada
E se aparecesse um pato de madeira, usado
como isca?
 Nem

voa nem grasna

Percebe que o que altera so os


comportamentos
 Voar

e grasnar (nos mtodos)

19

11/11/2010

Possvel soluo
39

Poderia criar uma interface Vovel de modo


que s patos que voem a implemente
 Como

uma Grasnvel

Possvel soluo
40

O que voc acha desta soluo ?

20

11/11/2010

Possvel soluo
41

No existe reutilizao de cdigo


 Fazer

uma mudana no comportamento voo

 Alterar

todas as 48 subclasses de Pato que voam?

Resumindo...
42

A herana no foi uma boa soluo


 Os

comportamentos dos patos mudam entre as


subclasses

Uso de interface tambm no


 No

promove a reutilizao de cdigo

 Fica

duplicado nas subclasses com mesmo


comportamento
 Se for alterar um comportamento tem que mexer em
TODAS subclasses

21

11/11/2010

Principio de projeto
43

Pegue o que varia e separe (encapsule) do


que permanece igual
O

que varia no nosso exemplo?


 Comportamentos dos patos
 Voar


e grasnar

Este princpio base de quase todos os


padres
 Deixar

independente o que varia !!!

Separando o que varia


44

Criar dois conjuntos de classes


 Um

engloba o comportamento de voar e outro de


grasnar

Sabemos que os mtodos voar() e grasnar()


que variam na classe Pato
 Tiramos

os dois mtodos da classe


 Cria um conjunto de classes para cada
comportamento

22

11/11/2010

Separando o que varia


45

Comportamentos de Patos

Comportamento de
voar

Tira o que varia


Pato

Comportamento
de grasnar

Soluo
46

Poder-se-ia colocar um comportamento


especfico para um pato especfico
 Pato

Real-> Voa e Grasna

E se pudesse alterar o comportamento do


pato depois dele ter sido criado
 Depois

de instanciado
 O pato que no voa pode aprender a voar
 Alterao no tempo de execuo

23

11/11/2010

Soluo
47

Utilizar uma interface para representar cada


comportamento
e
ComportamentoGrasnar
 Dica: quando queira encapsular alguma coisa,
use interface ou classe abstrata
 ComportamentoVoar

No vai ser o a classe Pato que implementa o


comportamento
 Ela

delega para um conjunto de outras classes

Outro princpio
48

Programe para uma interface, no para uma


implementao especfica
 Utilizao

O comportamento vinha de uma


implementao
 Mtodos

do polimorfismo

voar() e grasnar () em Pato

Agora o comportamento vem de uma interface


e
ComportamentoGrasnar

 ComportamentoVoar

24

11/11/2010

Soluo
49

Soluo
50

Conjunto de comportamentos

Pato s tem conhecimento das interfaces (abstraes)


No tem conhecimento das classes concretas
Pato esta programado para um interface!!!

25

11/11/2010

Vantagens
51

Qualquer objeto podem reutilizar os


comportamentos
 No

esto mais presos na classe Pato

Pode-se adicionar um novo Grasnar ou Voar


sem precisar mexer em Pato
 Aberto

a extenso e no a alterao

Cdigo da implementao
52

No eclipse !!!

26

11/11/2010

Cdigo de implementao
53

Pode-se tirar os atributos e mtodos comuns aos


patos (borracha, real, cabea vermelha)


Coloc-los em super classe Pato

Os comportamentos podem ser alterados em


tempo de execuo


A alterao s possvel devido ao polimorfismo


setVoo espera um objeto ComportamentoVoar
 ComportamentoVoar pode ser VoarComAsas ou NaoVoar


Houve variao de comportamento sem precisar


alterar o cdigo

Comportamentos
54

Estes algoritmos de comportamento


so intercambiveis

27

11/11/2010

Novo princpio
55

Relao tem-um
 Cada

pato tem um ComportamentoVoar e um


ComportamentoGrasnar
 Ao invs de herdar os comportamentos os patos
obtm-nos por meio da composio com o objeto
de comportamento


Princpio
 Dar

prioridade a composio

Primeiro padro
56

Voc j implementou o primeiro padro


 Estratgia
 Define

uma famlia de algoritmos, encapsula cada um


deles e os torna intercambiveis. A estratgia deixa o
algoritmo variar independente (sem alterar) dos
clientes (Patos) que o utilizam

28

11/11/2010

Princpios
57




Encapsule o que varia


Deve ser aberto a extenso e fechado para
alterao de cdigo
D prioridade composio em detrimento da
herana
Programe para interfaces, no para
implementaes

Resumo
58

Padres so uma experincia orientadas a


objetos comprovada
 J

foi utilizado noutros projetos

A maioria dos padres permite que uma parte


varie dependente das demais
 Tenta-se

encapsular o que varia

Padres fornecem uma linguagem


compartilhada
 Voc

pode dizer outra linguagem compartilhada?

29

11/11/2010

Resumo
59

Estratgia
 Define

uma famlia de algoritmos, encapsula


cada um deles e os torna intercambiveis. A
estratgia deixa o algoritmo variar independente
(sem alterar) dos clientes que o utilizam

Exerccio
60




Organize as classes
Identificar uma classe abstrata, uma interface
e oito classes
Desenhar setas entre as classes
 Seta

de herana
 Seta de implementa
 Linha de composio


Colocar o mtodo setArma() na classe correta

30

11/11/2010

Exerccio
61

Duvido!!!
62

Depois de ter feito o exerccio anterior o


implementar no eclipse

31

11/11/2010

Aprofundamento
63

Existem diversos outros padres de projetos

Quero mais !
64

Aplicao da estratgia em no exemplo de


Funcionrio
O

que varia so os comportamentos de adicional


de frias e o aumento de salrio

32

11/11/2010

Quero mais !
65

Fim
66

S(C)em perguntas ?

cassimirofcn@gmail.com

33

Vous aimerez peut-être aussi