clp-2008-02

Propaganda
Características das Linguagens de Programação - 2008 – P1
1a questão - Considere o seguinte trecho de um programa, que inclui o método abaixo, de uma classe
arbitrária, que move objetos do tipo Point, além de outros comandos:
. . .
public void movePoint(Point point, int dX, int dY) {
// move o ponto para x+dX, y+dY
point.setXY(point.getX() + dX, point.getY() + dY); // →B
...
//atribui uma nova referência a point
point = new Point(0, 0); // →C
}
...
// outros comandos do programa, incluindo o método main
...
Point myPoint = new Point (100, 100); // →A
...
//invocação do método movePoint
XXX.movePoint(myPoint, 23, 53 ); // →D
. . .
//código da classe Point
public class Point {
public int x = 0;
public int y = 0;
//constructor
public Point(int x, int y) {
this.x = x;
this.y = y;
}
public void setXY (int dx, int dy) {
x = dx;
y = dy;
}
public int getX() {
return x;
}
public int getY() {
return y;
}
}// fim da class Point
Nos pontos assinalados como →A, →B, →C e →D, qual o valor das coordenadas (variáveis de
instância) x e y de myPoint?
2a questão - Considere o código da classe Point da questão anterior. Crie uma classe Circle que
seja uma extensão da classe Point (relação de herança), adicionando dois métodos, um –
Perimeter () - para calcular o perímetro e outro – Área ()- para calcular a área de objetos do tipo
círculo. A seguir, crie uma classe Sphere, que seja uma extensão de Circle, para representar
objetos do tipo esfera. Faça o override do método Área, de forma a agora calcular a área da
esfera, e, a seguir, adicione o método Volume(), a fim de calcular o volume da esfera.
Obs. Não se esqueça de incluir os construtores e variáveis de instância necessários para uma
representação correta dos objetos.
3a questão - Considere o código do applet KeyEventDemo abaixo, que trata alguns eventos
gerados pelo usuário ao interagir com a interface gráfica do applet.
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
public class KeyEventDemo extends Applet
implements KeyListener, ActionListener {
TextArea displayArea;
TextField typingArea;
String newline;
public void init() {
Button button = new Button("Clear");
button.addActionListener(this);
typingArea = new TextField(20);
typingArea.addKeyListener(this);
displayArea = new TextArea(5, 20);
displayArea.setEditable(false);
setLayout(new BorderLayout());
add("Center", displayArea);
add("North", typingArea);
add("South", button);
newline = System.getProperty("line.separator");
}
public void keyTyped(KeyEvent e) {
displayInfo(e, "KEY TYPED: ");
}
public void keyPressed(KeyEvent e) {
displayInfo(e, "KEY PRESSED: ");
}
public void keyReleased(KeyEvent e) {
displayInfo(e, "KEY RELEASED: ");
}
public void actionPerformed(ActionEvent e) {
//Clear the text components.
displayArea.setText("");
typingArea.setText("");
typingArea.requestFocus();
}
protected void displayInfo(KeyEvent e, String s){
String charString, keyCodeString, modString, tmpString;
char c = e.getKeyChar();
int keyCode = e.getKeyCode();
int modifiers = e.getModifiers();
if (Character.isISOControl(c)) {
charString = "key character = (an unprintable control character)";
} else {
charString = "key character = '" + c + "'";
}
keyCodeString = "key code = " + keyCode
+ " ("
+ KeyEvent.getKeyText(keyCode)
+ ")";
modString = "modifiers = " + modifiers;
tmpString = KeyEvent.getKeyModifiersText(modifiers);
if (tmpString.length() > 0) {
modString += " (" + tmpString + ")";
} else {
modString += " (no modifiers)";
}
displayArea.append(s
+ newline + "
"
+ charString
+ newline + "
"
+ keyCodeString
+ newline + "
"
+ modString
+ newline);
}
}
Assinale apenas as afirmativas corretas (uma afirmativa errada assinalada desconta uma certa...):
a) As linhas de código “button.addActionListener(this);” e “typingArea.addKeyListener(this);”
adicionam, respectivamente, os objetos button e typingArea ao applet, a fim de que os mesmos
possam ser mostrados na sua interface gráfica.
b) Os eventos que o applet trata restringem-se àqueles decorrentes do usuário pressionar qualquer
tecla do teclado.
c) O applet trata os eventos que ocorrem quando: i) o usuário pressiona o mouse, quando este se
encontra sobre o objeto do tipo button identificado pelo string “Clear”; ii) o usuário digita
qualquer tecla do teclado.
d) As interfaces KeyListener e ActionListener já fornecem o código de métodos padronizados, os
quais precisam ser reescritos, a fim de que os eventos correspondentes sejam adequadamente
tratados.
e) Os métodos responsáveis pelo tratamento de eventos são: displayInfo(KeyEvent e, String s);
requestFocus( ); actionPerformed(ActionEvent e) .
4a questão - Considere ainda o código fonte do applet KeyEventDemo da questão anterior.
Identifique:
a) as classes aí existentes;
b) os objetos, associando-os às classes de que são instâncias;
c) os métodos, associando-os aos seus respectivos objetos, ou às classes, em se tatando de métodos
estáticos;
d) os data-members ou variáveis de instância, associando-os aos seus respectivos objetos;
e) as variáveis locais.
Boa Sorte!
Prof. Oscar Luiz Monteiro de Farias
Download