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