Anda di halaman 1dari 4

IFRN - INSTITUTO FEDERAL DE EDUCAO, CINCIA E TECNOLOGIA DO RN

DIRETORIA DE EDUCAO E TECNOLOGIA DA INFORMAO


EXERCCIO DE REVISO Polimorfismo
PROF. JAILTON CARLOS
jailton.paiva@ifrn.edu.br

Objetivo da Aula
Implementar e entender a herana de classes.
Utilizar os principais mtodos da class Object.
Entender o conceito de classes e mtodos abstratos.
Entender como evitar herana.
Entender a sobrescrita de mtodos e o polimorfismo.
Utilizar a palavra-chave super.
Conceito de downcast e upcast
Tarefa 01: Implementar a estrutura de classes presente no diagrama abaixo. Para cada
campo presente em cada classe, implementar seus respectivos mtodos get e set.



Tarefa 02. A classe Ponto uma classe Geral, serve apenas de base para as outras
classes. Portanto, a classe Ponto no poder ser instanciada. Defina a classe Ponto
como sendo abstrata.


Tarefa 03: Criar uma classe chamada TesteGeometria. Criar o mtodo main, este
dever criar uma instncia das classes Circulo, Quadrado e Cilindro e configurar suas
variveis de instncia.
!"#$"
#x: int
#y: int
%&'()'("
-lado: double
*)+,&-"
#raio: double
*+-+#()"
-altura: double
# visibilidade
protected


Tarefa 04: Implementar construtores pblicos das classes Ponto, Circulo, Quadrado e
Cilindro. Estes construtores devem inicializar as variveis de instncia das suas
respectivas classes de acordo com os parmetros recebidos. Segue as assinaturas
destes construtores:

public Ponto (int x, int y)
public Circulo (int x, int y, double raio)
public Quadrado(int x, int y, double lado)
public Cilindro(int x, int y, double raio, double altura)
Nota: usar a palavra-chave super para chamar o construtor da super-classe.


Tarefa 05: Defina um contrato para que todas as classes filhas sejam obrigadas a
implementarem um mtodo area() e desenhar. Segue as assinaturas dos mtodos:
public void desenhar()
public double area()


Tarefa 06: Implementar os mtodos area() e desenhar() para todas as classes filhas.

Tarefa 07: Crie o mtodo volume para a classe Cilindro().
Nota: Aproveitar o mtodo area() da classe Circulo.

Tarefa 08: Crie um mtodo teste"#$% &'&%(#) *+,#%- ./%+ %0-1&0.%&- *+ 2%/.3$#)
43&*/&*# + 2%$%0*/# + .5&6+ # 671#*# 1+-1+"#$% ,&--&0*# +--&- /+8+/90.%&- + :+;& #
<3+ -+/= %6,/+--#>
!"#$%& '()(%& *+%, 1+-1+"#$%?"#01# ,@A
,>*+-+05&/?@B CC .5&6& # 671#*# *+,+0*+0*# *# #';+1# ?$%D&EF# 1&/*%&@
G

Tarefa 09: Defina a classe Cilindro de forma a evitar herana, ou seja, no permitir
que sejam criadas subclasses a partir dela.

Tarefa 10: Ao imprimir uma instncia da classe Circulo, a JVM imprime a referencia
do objeto, por exemplo, geometria.Circulo@addbf1,altere a classe para que a sada
seja [x=10, y=10], raio=5.0

int x, y, raio;
x=10;
y=10;
raio=5;
Ponto c = new Circulo(x,y,raio);
System.!"#.println(c);// sada [x=10, y=10], raio=5.0

Tarefa 11: Alterar as classes Quadrado,Circulo e Cilindro de forma a permitir
comparar dois objetos de cada uma delas.


Tarefa 12: Como saber se as variveis de referncia p1, p2 e p3 so do Quadrado,
Cilindro e Circulo respectivamente.

|catc 1 = aew Qaacracc(),
|catc 2 = aew C|rca|c(),
|catc 3 = aew C|||acrc(),

|| (1 _________ Qaacracc)
>,stem.cat.r|at|a(1.etC|ass().et>|m|eHame()' e am Qaacracc.'),

|| (2 _________ C|rca|c)
>,stem.cat.r|at|a(2.etC|ass().et>|m|eHame()' e am C|rca|c.'),

|| (3 _________ C|||acrc)
>,stem.cat.r|at|a(3.etC|ass().et>|m|eHame()' e am C|||acrc.'),


!are|a 13. 0 trec|c ce ccc|c aca|\c ccatem am errc, c|s tccas as |astac|as sc cc t|c |catc, mas
c metccc .c|ame() sc esta ce||a|cc aa c|asse C|||acrc, ccrr|a-c.

|catc |] ||aras = aew Qaacracc(10,10,5), aew C|rca|c(10,10,5), aew C|||acrc(10,10,5,),
for (Ponto figura : figuras) {
System.!"#.println(figura.area());
System.!"#.println (figura.volume());
}



Ao final das tarefas o Diagrama de classes ficar:

!"#$"
#x: int
#y: int
<<create>>+Ponto()
<<create>>+Ponto(x: int, y: int)
+getX(): int
+getY(): int
+desenhar()
+area(): double
%&'()'("
-lado: double
<<create>>+Quadrado()
<<create>>+Quadrado(x: int, y: int, lado: double)
+desenhar()
+area(): double
*+),&-"
#raio: double
<<create>>+Circulo()
<<create>>+Circulo(x: int, y: int, raio: double)
+desenhar()
+area(): double
*+-+#()"
-altura: double
<<create>>+Cilindro()
<<create>>+Cilindro(x: int, y: int, radio: double, altura: double)
+desenhar()
+area(): double
+volume(): double

Anda mungkin juga menyukai