1a Prova de Características de Linguagens de Programação – 04/05/99 a 1 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.applet.*; import java.awt.*; public class Broadway extends Applet implements Runnable { Thread animrect; int locx,locy; int width, height; static final byte UP = 0; static final byte DOWN = 1; static final byte LEFT = 2; static final byte RIGHT = 3; byte state; // state the rect is in static final int REFRESH_RATE = 100; public void init() { System.out.println(">> init <<"); setBackground(Color.black); locx = 80; locy = 100; width = 110; height = 90; state = UP; } public void start() { System.out.println(">> start <<"); animrect = new Thread(this); if (animrect != null) { animrect.start(); } } public void paint(Graphics g) { System.out.println(">> paint <<"); g.setColor(Color.yellow); // in ms g.fillRect(0,0,90,90); g.fillRect(250,0,40,190); g.fillRect(80,110,100,20); // hidden rectangle g.setColor(Color.blue); g.fillRect(80,200,220,90); g.fillRect(100,10,90,80); g.setColor(Color.lightGray); g.fillRect(locx,locy,width,height); g.setColor(Color.red); g.fillRect(200,0,45,45); g.fillRect(0,100,70,200); g.setColor(Color.magenta); g.fillRect(200,55,60,135); } void updateRectangle() { switch (state) { case DOWN: locy += 2; if (locy >= 110) { state = UP; } break; case UP: locy -= 2; if (locy <= 90) { state = RIGHT; } break; case RIGHT: locx += 2; if (locx >= 90) { state = LEFT; } break; case LEFT: locx -= 2; if (locx <= 70) { state = DOWN; } break; } } public void run() { while (true) { repaint(); updateRectangle(); try { Thread.sleep (REFRESH_RATE); } catch (Exception exc) { }; } } public void stop() { System.out.println(">> stop <<"); if (animrect != null) { animrect.stop(); animrect = null; } } } a a 2 questão: Dado o trecho do código do applet Broadway 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. a 3 questão: Explique, exemplificando a partir do “sistema” formado pela casa aonde você mora, os conceitos fundamentais da orientação a objetos, relativos a: abstração, encapsulamento, hierarquia, herança, polimorfismo, modularidade, tipos, concorrência e persistência. Observação: Todos os seus exemplos têm que estar associados ao contexto da casa, isto é, seus objetos, pessoas, acontecimentos, etc... a 4 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 5 questão: Faça um programa em java que crie pelo menos 4 (quatro ) objetos que sejam instâncias de deferentes classes, cuidando para que elas tenham o método toString() implementado. A seguir armazene os objetos em um container do tipo Vector. A seguir recupere-os do container e imprima a representação em String destes objetos. Boa Sorte! Prof. Oscar Luiz Monteiro de Farias