Você está na página 1de 44

Projeto

Orientado a Objetos
Centro de Inform-ca Universidade Federal de Pernambuco Sistemas de Informao Vinicius Cardoso Garcia vcg@cin.ufpe.br
2011 Vinicius Cardoso Garcia

Agenda
Obje-vos, princpios e padres Herana e polimorsmo Excees Interfaces e classes abstratas Converso e genricos

Algoritmos e Estrutura de Dados Conceitos Bsicos de Programao em Java 2011 Vinicius Cardoso Garcia

Obje1vos do projeto orientado a objetos

Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia

Princpios de projeto OO

Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia

Abstrao
Decomposio do sistema em partes fundamentais descritas por uma linguagem simples e precisa Tipos Abstratos de Dados (TAD)
O que cada operao faz, mas no como faz Em Java um TAD pode ser expresso por uma interface e materializado por uma classe

Em Java, uma classe implementa uma interface


Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia

Encapsulamento
Os diferentes componentes de um sistema no devem revelar detalhes de suas respec-vas implementaes Oferece liberdade na implementao Restrio: manter a interface abstrata

Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia

Modularidade
Organizar os diferentes componentes do sistema Diviso dos componentes do sistema em unidades funcionais separadas

Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia

Organizao hierrquica

Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia

Padres de Projeto
Soluo para um determinado problema de projeto de sobware epico A-vidade para casa: pesquisar sobre padres de projeto
Exemplos, onde e como podem ser u-lizados Benehcios, vantagens e desvantagens
Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides. Design Pajerns: Elements of Reusable Object-Oriented Sobware. 1 ed. Estados Unidos da Amrica: Addison-Wesley, 1995. ISBN 0-201-63361-2
Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia

Herana
Projeto de classes genricas que podem ser especializadas em classes mais par-culares
Reuso de cdigo Classe base ou superclasse

Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia

10

Polimorsmo
Muitas formas, ou seja, a habilidade de uma varivel de objeto assumir diferentes formas

Sobrecarga
Mesmo mtodo com diferentes formas
Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia

11

USANDO HERANA EM JAVA


Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia

12

Herana em Java
Especializao
Renando uma classe genrica em subclasses especcas
Relao do -po um com a superclasse Pode-se usar sobrecarga de mtodos

Extenso
Reu-lizao do cdigo escrito para as superclasses
Adio de mtodos que no existem na superclasse

Em Java, a classe pode estender apenas uma nica classe (mesmo que no use a clusula extends explicitamente) -> herana simples
Todas as classes estendem a java.lang.Object
Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia

13

Tipos de sobrecarga de mtodos


Subs-tuio
Subs-tuio completa

Renamento
Adiciona cdigo (comportamento)
Todos os construtores usam :: encadeamento de construtores

Explicitamente: clusula super

Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia

14

Palavra reservada this


Referncia instncia corrente da classe Quando pode ser -l?

The dog local varable = 5.0! The dog field = 2!

Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia

15

Exemplo: Progresses numricas


Progresso aritm-ca: prximo nmero por adies Progresso Geomtrica: prximo nmero por mul-plicaes

Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia

16

Progresso aritm1ca

Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia

17

Progresso geomtrica

Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia

18

Progresso Fibonacci

Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia

19

Diagrama

Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia

20

Teste

Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia

21

EXCEES
Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia

22

Lanando excees
Lanadas por trechos de cdigo que detectam alguma condio inesperada Tambm podem ser lanadas pelo ambiente de execuo Java Capturada por trechos de cdigo ou o programa encerrado Instanciar o objeto de exceo no momento em que ela est para ser lanada
throw new excep%on_type(param0, param1, ..., paramN-1)

Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia

23

Capturando excees
Deve exis-r pelo menos uma clusula catch nally opcional e executado indiferentemente se as excees forem lanadas ou capturadas

Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia

24

Capturando excees

Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia

25

INTERFACES E CLASSES ABSTRATAS


Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia

26

Implementando interfaces
Interface de Programao da Aplicao (API) Exemplo: Inventrio de an-guidades

Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia

27

Exemplo: Inventrio de An1guidades

Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia

28

Exemplo: Inventrio de An1guidades

Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia

29

Exemplo: Inventrio de An1guidades

Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia

30

Herana ml1pla e interfaces


Em Java, herana ml-pla permi-da para interfaces, mas no para classes
Mtodos de interfaces no possuem corpos

Exemplo: mistura
Classes projetadas para proporcionar funcionalidades adicionais a classes existentes

Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia

31

Exemplo: Itens segurveis

Neste caso, observa-se que o mtodo insuredValue no mais opicional

Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia

32

Classes abstratas e 1pagem forte


Declarao de mtodo vazia (sem implementao) e denies concretas de mtodos e variveis de instncia No pode ser instanciada Uma varivel s pode ser de um -po Mtodo tem um nico -po de retorno

Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia

33

CONVERSES E GENRICOS
Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia

34

Converso
Ampliadas
Corre quando um -po T conver-do para um -po ampliado U
T e U so classes e U uma superclasse de T T e U so interfaces e U uma superinterface de T T uma classe que implementa uma interface U

Reduzidas
Ocorre quando um -po T conver-do para um -po reduzido S
T e S so classes e S uma subclasse de T T e S so interfaces e S uma subinterface de T T uma interface implementada pela classe S
Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia

35

Excees de converso
Operador instanceof que permite testar se uma varivel refere-se a um objeto de uma certa classe

Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia

36

Converses com interfaces


O mtodo equalTo da interface Person recebe um parmetro do -po Person Logo, pode-se passar um objeto de qualquer classe que implemente a interface Person

Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia

37

Converses com interfaces

Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia

38

Converses com interfaces


Diretrio de pares de objetos que implementam Person O mtodo remove pesquisa o contedo do diretrio e remove o par de pessoas especicado (se exis-r)

Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia

39

Converses com interfaces


Supondo que se preencha um diretrio myDirectory com pares de Student
Obje-vo: encontrar o companheiro de quarto para um estudante (smart_one) Esse comando gera um explicit cast required
Converso reduzida sem conversor explcito!!!

Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia

40

Genricos
Tipo que no denido em tempo de compilao, mas especicado em tempo de execuo Denio da classe em termos de um conjunto de parmetros de @po que podem ser u-lizados
Abstrair os -pos de variveis internas

Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia

41

Genricos

Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia

42

Genricos
Para restringir o -po do parmetro, usa-se clusula extends

Podemos declarar uma varivel referindo uma instncia de PersonPairDirectory, que armazene objetos do -po Student

Para esta instncia, o mtodo ndOther retorna Student, logo, o comando abaixo est correto

Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia

43

Denio genrica de mtodos


Mtodo que compara as chaves de quaisquer dois objetos Pair (as chaves devem implementar a interface Comparable)

Elementos armazenados em um arranjo no podem ser uma varivel de -po ou -po parametrizado Um arranjo denido como um -po parametrizado seja inicializado com um arranjo no paramtrico recm criado
No 100% seguro, gera um warning

Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia

44