Escolar Documentos
Profissional Documentos
Cultura Documentos
Generalizao e Herana
Chamada de Construtores
A classe Object
2/
Tipos Enumerados
Os tipos enumerados so usados para criar novos tipos de dados, que
podem assumir uma gama restrita de valores no-numricos (enumeradores)
Os valores (enumeradores) associados a um enumerado so identificadores
definidos pelo programador.
3/
Tipos Enumerados
Antes da Edio 1.5 do Java SE, a linguagem no oferecia suporte direto a
construo de tipos enumerados.
4/
Simulao de Enumerados
O uso de varveis estticas inteiras tem pelo menos duas desvantagens:
5/
Tipos Enumerados Vantagens?
As contantes que representam os valores enumerados no so compiladas
para as classes que as usam;
A retirada de uma constante que usada por uma outra classe qualquer ser
sinalizada com uma mensagem de erro pela biblioteca de tempo de
execuo, assim que a constante for retirada.
6/
Tipos Enumerados - switch/case
O comando switch / case foi alterado para poder ser utilizado com os tipos
enumerados. O exemplo a seguir mostra como isso feito:
7/
Taxonomia
Muito antes da criao das cincias, os seres humanos j nomeavam as
espcies, o que lhes permitia ter sucesso nas suas atividades de caa;
9/
Taxonomia de Polgonos
10/
A UML representa graficamente uma classe por um retngulo dividido em
trs compartimentos:
Nome (identificador)
Lista de atributos (estado do objeto)
Lista de operaes (comportamento do objeto)
11/
Generalizao
A Generalizao consiste na atividade de identificar aspectos comuns
(similaridades) e no comuns entre os conceitos pertencentes ao domnio da
aplicao;
12/
Por exemplo, a hierarquia de Polgonos em Java poderia ser definida da
seguinte maneira:
A palavra reservada extends usada para declarar que uma classe (ex.
Tringulo) subclasse de outra (ex. Polgono).
13/
Generalizao vs. Teoria dos Conjuntos
A generalizao pode ser vista sob a tica da Teoria dos Conjuntos.
Desse ponto de vista, o diagrama de Venn equivalente ao diagrama de
classes (ilustrado nos slides anteriores)
Polgono
po1
Retngulo
Triangulo Pentgono
Quadrado rt3
tr1 rt1
pen1
tr2 rt2 rt4
qd1 qd2
qd3
po2 po3
14/
Benefcios
Identificar superclasses e subclasses podem nos oferecer os seguintes
benefcios:
15/
Regra um
Pode-se afirmar, informalmente, que toda instncia de uma classe tambm
instncia da sua superclasse;
Atributos (variveis)
Operaes (mtodos)
Relaes (variveis)
16/
Exemplo
Pela regra -um podemos afirmar que:
17/
Outras Consideraes
Nem todas as propriedades vlidas para os objetos de uma classe so
vlidas pra os objetos de sua superclasse;
18/
Exemplo Pagamento com Carto
19/
Herana Simples
Nos exemplos de generalizao apresentados usamos somente herana
simples, ou seja, uma classe somente pode ser descendente direta de uma
nica superclasse;
20/
Generalizao e Herana
No confundir generalizao com herana;
21/
Chamada de Construtores
Quando um objeto de uma classe criado, todos os construtores das classes
ancestrais sero invocados (implcita ou explicitamente);
Por exemplo, uma condio de erro ser sinalizada pelo runtime do Java
quando um quadrado for criado, pois o construtor padro (default) da classe
Polgono, no foi definido explicitamente;
22/
Chamada de Construtores
O erro causado pela invocao implcita do construtor padro da classe
Retngulo, que por sua vez invoca implicitamente o construtor padro da
classe Polgono;
Como o construtor padro da classe Polgono no foi definido, embora
existe um construtor para esta classe, o erro sinalizado;
A soluo definir um construtor Retngulo que ir invocar o construtor da
classe Polgono, usando a palavra reservada super;
23/
Utilizando o construtor super()
24/
A Classe Object
A classe java.lang.Object o ancestral de qualquer classe em Java; ou
seja, toda classe definida em um programa Java herda as propriedades da
classe Object;
A classe Object possui mtodos genricos que podem ser invocados por
qualquer objeto;
Exemplo
25/
Operador Relacional ==
O operador relacional == compara apenas se duas variveis do objeto
referenciam a mesma instncia do objeto;
26/
Operador Relacional == vs. equals
O mtodo equals(...) implementado em Object gera o memso resulta que o
operador ==;
Caso queira implementar um conceito prprio de igualdade, deve-se
sobrescrever o mtodo equals(...) para implementar a nova soluo;
Por exemplo, usa-se o mtodo equals(...) para definir que dois quadrados
que tenham o mesmo permetro so iguais;
27/