clp-1997-02

Propaganda
1a Prova de Características de Linguagens de Programação – 31/10/97
1a questão: Considere o trecho abaixo, de um programa escrito em Java. Identifique:
 as classes aí existentes;
 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
import
import
import
import
import
import
import
java.awt.Frame;
java.awt.TextField;
java.awt.Panel;
java.awt.Button;
java.awt.GridLayout;
java.awt.Event;
java.awt.Color;
java.awt.Label;
import book;
import java.util.Vector;
class bookWindow extends Frame {
TextField title;
TextField author;
TextField publisher;
Vector theBooks;
int currentIdx;
bookWindow() {
super("Book Shelf");
// initialize the growable array
theBooks = new Vector(3);
currentIdx = 0;
Panel centerPanel = new Panel();
centerPanel.setLayout (new GridLayout(0,2));
centerPanel.add(new Label("
Title"));
centerPanel.add(title = new TextField("Life and Death", 20));
//........aditional code goes here...
add("Center", centerPanel);
Panel bottomPanel = new Panel();
bottomPanel.add(new Button("store"));
bottomPanel.add(new Button("clear"));
//.......aditional code goes here...
add("South", bottomPanel);
move(200, 100);
pack();
show();
}
public boolean handleEvent(Event evt) {
switch (evt.id) {
case Event.ACTION_EVENT:
if ("store".equals(evt.arg)) {
book aBook = new book(title.getText(),
author.getText(),
publisher.getText());
theBooks.addElement(aBook);
currentIdx = theBooks.size();
return true;
}
//....... aditional code goes here...
if ("prev".equals(evt.arg)) {
if (currentIdx > 0) {
book aBook = (book) theBooks.elementAt(--currentIdx);
title.setText(aBook.getTitle());
author.setText(aBook.getAuthor());
publisher.setText(aBook.getPublisher());
}
return true;
}
//....... aditional code goes here...
if ("exit".equals(evt.arg)) {
System.exit(0);
return true;
}
break;
default:
return false;
}
return false;
}
}
class bookGUI {
public static void main(String args[]) {
new bookWindow();
}
}
2a questão: Dado o trecho do código do applet HelloWeb3 abaixo, qual seria uma possível seqüência com que os
comandos do applet seriam executados, após realizarmos, via um cliente http (eg. Netscape, Mosaic ou Internet
Explorer) um acesso ao arquivo HelloWeb3.htm existente em um servidor http? Diga também, qual a seqüência de
eventos que corresponderia à seqüência de execução de comandos por você apontada. Considere, na sua resposta, que
toda a funcionalidade do applet deve ser explorada.
<--HelloWeb3.html file--/>
<html>
<head>
<title>HelloWebThird</title>
</head>
<body>
<h3>HelloWeb3</h3>
<applet code=HelloWeb3 width=300 height=200>
<param name="message" value="Hello Web!" >
</applet>
</body>
</html>
====================================================================================
1.
2.
3.
4.
5.
6.
7.
8.
9.
//...HelloWeb3.java file
import java.applet.Applet;
import java.awt.*;
public class HelloWeb3 extends Applet {
int messageX = 125, messageY = 95;
String theMessage;
Button theButton;
int colorIndex = 0;
static Color[] someColors = { Color.black, Color.red, Color.green,
Color.blue, Color.magenta };
10.
public void init() {
11.
theMessage = getParameter("message");
12.
theButton = new Button("Change Color")
13.
14.
}
add(theButton);
15.
16.
17.
public start() {
//...here goes some code...
}
18.
19.
20.
public stop() {
//...here goes some code...
}
21.
22.
23.
24.
public void paint( Graphics gc ) {
gc.setColor( currentColor() );
gc.drawString( theMessage, messageX, messageY );
}
25.
26.
27.
28.
29.
30.
31.
public boolean action ( Event e, Object arg ) {
if ( e.target == theButton ) {
changeColor();
return true;
}
return false;
}
32.
33.
34.
35.
36.
37.
public boolean mouseDrag(Event evt, int x, int y ) {
messageX = x;
messageY = y;
repaint();
return true;
}
38.
39.
40.
41.
42.
43.
synchronized private void changeColor() {
if ( ++colorIndex == someColors.length )
colorIndex = 0;
theButton.setForeground( currentColor() );
repaint();
}
44.
45.
46.
synchronized private Color currentColor() {
return someColors[ colorIndex ];
}
47. }
3a questão: Explique as diferenças e semelhanças existentes entre os conceitos de Polimorfismo e Sobrecarga de
Métodos. Exemplifique com trechos de código em Java.
4a questão: Qual o significado dos dois princípios da Orientação a Objetos: a) Information Hiding ou Encapsulamento;
b) Abstração?
5a questão: Aponte os erros de compilação que seriam registrados no código java que se segue. Explique o porque
destes erros.
Observação: assuma como corretos:
i) A variável CLASSPATH, que inclui o path "/linux".
ii) A localização dos arquivos no file system. Na 1a linha dos arquivos encontra-se o path dos mesmos.
======================================
======================================
//directory: /linux/mycode/fruits
//...apple.java file
//directory: /linux/mycode/fruits
//...plum.java file
package fruits;
public class apple {
protected int i;
private int k;
int j;
}
package fruits;
class plum {
static apple a = new apple();
static {a.i = 0;}
}
======================================
class foo {
void foo () {
apple a = new apple();
a.i = 0;
a.k = 3;
}
}
//directory: /linux/mycode/sauces
//...chutney.java file
package sauces;
import fruits.*;
int z;
class chutney {
static apple a = new apple();
static {a.i = 0;}
z = 3;
}
//directory: /linux/mycode/fruits
//...pippin.java file
package fruits;
import java.lang.Math;
class pippin extends apple {
double j, k;
double pippin (int, int) {
//...here goes the constructor code...
}
void grind() {
i = 0;
j = 2; k = 3;
k = Math.pow (k, j);
}
}
=======================================
//directory: /linux/mycode/sauces
//...applesauce.java file
package sauces;
import mycode.fruits.*;
class applesauce extends apple {
int i;
double j , k;
void foo() {
i = 0;
a.i = 20;
j = 2; k = 3;
a.k = 9;
k = Math.pow (k, j);
}
}
=======================================
Boa Sorte!
Prof. Oscar Luiz Monteiro de Farias
Download