clp-1999-02

Propaganda
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
Download