clp-2012-02

Propaganda
Prova Final de Características de Linguagens de Programação – 04/02/2013
a
1 questão: Considere a hierarquia de classes esboçada abaixo:
Dinosaur
Brontosaur
Brontosaur Argentinus
Tyrannosaur
Brontosaur Brasilienses
A classe abstrata Dinosaur estabelece os métodos que suas subclasses
deverão implementar (vide código abaixo), a fim de estabelecer um
comportamento específico para cada espécie (tipo) de dinossauro. Qual
seria a implementação (explicite o código em Java) que você daria à
classe Brontosaur e suas subclasses, de modo a descrever a forma de comer
(eat), dormir (sleep) e correr (run) para os tipos de dinossauros
correspondentes? Inclua também, no seu código, uma forma de se atribuir
um identificador único a cada dinossauro, a fim de que o mesmo possa ser
rastreado pelos pesquisadores da APDAL (Associação dos Protetores de
Dinossauros da América Latina).
Observação: devido ao tempo limitado da prova use algo similar a:
System.out.println(“Brontosaur running”);
…
para especificar a forma de correr de um Brotonsaur, por exemplo.
Codigo da classe abstrata Dinossaur:
Public abstract class Dinosaur {
// declarações das variáveis de instância
...
int weight;
int height
...
// methods
// constructors
...
// other methods
...
public abstract void eat();
public abstract void sleep();
public abstract void run();
...
}
a
2 questão: Dê um exemplo de polimorfismo que inclua algumas das classes
que voce codificou na questão anterior. Você deve apresentar o código
Java correspondente a um pequeno programa exemplo.
a
3 questão: Considere que um Dinossauro dino1 é maior que um Dinossauro
dino2 se o produto do peso pela altura de dino1
é maior que o produto
correspondente do peso e altura de dino2. Implemente na classe Dinosaur a
interface Relatable que estabelece como comparar o “tamanho” entre dois
objetos.
public interface Relatable {
// this (object calling isLargerThan) and
// other must be instances of the same class
// returns 1, 0, -1 if this is greater
// than, equal to, or less than other
public int isLargerThan(Relatable other);
}
a
4 questão:Desenvolva uma classe em java que possua um método que receba
instâncias de duas classes como input e verifique se uma das classes é
subclasse da outra e vice-versa, ou se as duas classes não pertencem à
mesma hierarquia de classes.
Sugestão: Use os métodos getClass() da classe Object e
getName() da classe Class.
a
5 questão: Considere o código que se segue da classe Aluno. Como você
faria em Java para criar um clone de um objeto que seja instância da
classe Aluno. Forneça o código correspondente.
Obs. A classe Pessoa possui, como variáveis de instância apenas tipos de
dados primitivos e membros imutáveis (p.ex., da classe String).
Obs.:
public class Aluno {
// declaração
private
private
private
das variáveisde instância;
String matricula;
String nome;
Pessoa namorada;
// construtor da classe aluno
public Aluno(String matr, Sring nome) {
matricula = matr;
this.nome = nome;
this.namorada = namorada;
}
public setNamorada (Pessoa namorada) {
this.namorada = namorada;
}
// implementação de outros métodos da classe aluno
...
}
Boa Sorte!
Prof. Oscar Luiz Monteiro de Farias
Download