1a Prova de Características de Linguagens de Programação – 19/10/99 a 1 questão: Considere a hierarquia de classes esboçada abaixo: Dinosaurus Tiranosaurus Rex Brontosaurus Brontosaurus Argentinus Brontosaurus Brasilienses A classe abstrata Dinossaurus 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 Brontonsaurus e suas subclasses, de modo a descrever a forma de comer (eat), dormir (sleep) e correr (run) para os tipos de dinossauros correspondentes? Observação: devido ao tempo limitado da prova use algo similar a: System.out.println(“Brontosaurus running”); ... para especificar a forma de correr de um Brotonsaurus, por exemplo. Codigo da classe abstrata Dinossaurus: Public abstract class Dinosaurus { // declarações das variáveis de instância ... // 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: Desenvolva um programa em java que receba duas classes como imput com a sua completa qualificação por extenso ( java.awt.Button e java.awt.Graphics, por exemplo) e que verifique se uma das classes é subclasse da outra. a 4 questão: Considere o trecho abaixo, de um applet escrito em Java. Identifique: os packages utilizados pelo applet; as classes existentes no applet; os objetos, associando-os às classes de que são instâncias; os métodos, associando-os aos seus respectivos objetos; os data-members ou variáveis de instância, associando-os aos seus respectivos objetos; as variáveis locais. import java.awt.*; public class DoodlePad extends java.applet.Applet { DrawPad dp; public void init() { setLayout( new BorderLayout() ); add( "Center", dp = new DrawPad() ); Panel p = new Panel(); p.add( new Button("Clear") ); add( "South", p ); } public boolean action( Event e, Object o ) { dp.clear(); return true; } } class DrawPad extends Canvas { Image drawImg; Graphics drawGr; int xpos, ypos, oxpos, oypos; DrawPad() { setBackground( Color.white ); } public boolean mouseDrag( Event e, int x, int y ) { xpos=x; ypos=y; if ( drawGr != null ) drawGr.drawLine( oxpos, oypos, oxpos=xpos, oypos=ypos ); repaint(); return true; } public boolean mouseDown( Event e, int x, int y ) { oxpos=x; oypos=y; return true; } public void update( Graphics g ) { paint(g); } public void paint( Graphics g ) { if ( drawImg == null ) { drawImg = createImage( size().width, size().height ); drawGr = drawImg.getGraphics(); drawGr.setColor( Color.black ); } g.drawImage(drawImg, 0, 0, null); } public void clear() { drawImg.getGraphics().clearRect(0, 0, size().width, size().height); repaint(); } } a a 5 questão: Dado o trecho do código do applet DoodlePad acima (1 questão), i) explique minuciosamente o que faz este applet (sua funcionalidade); ii) explique como os diversos comandos do applet implementam a funcionalidade descrita por voce. Boa Sorte! Prof. Oscar Luiz Monteiro de Farias