clp-2014-02

Propaganda
Características das Linguagens de Programação – 2014/02 – P1 – 09/12/2014
1a questão: Considere um ponto P em R2, determinado por um par de coordenadas (x, y). Forneça em Java o código da
classe Point que implementa uma abstração correspondente a um dado ponto em R2. Você deverá fornecer explicitamente o
código do construtor P(double x, double y) para a classe Point, além do código para os métodos, cujas definições são:
 public double getXCoordinate ();
/* retorna a coordenada x do ponto */
 public double getYCoordinate ();
/* retorna a coordenada y do ponto */
 public setXYCoordinates (double x, double y);
/* atribui um novo valor às coordenada x e y do ponto */
 public moveTo (double x, double y);
/* move o ponto para as novas coordenadas x e y */
 public printAtts ();
/* imprime as coordenadas do ponto */
Observe, ao máximo, o espírito do encapsulamento.
2a questão: Considere um círculo C em R2, determinado pelo par de coordenadas (x,y) referente ao seu centro e o seu raio R.
Forneça o código da classe Circle, que herda da classe Point e implementa a abstração correspondente a um círculo em R2.
Você deverá prover o código de dois construtores para Circle. O primeiro, Circle(Point p, double radius) e, o segundo,
Circle(double x, double y, double radius), este último construído a partir do construtor de Point. Faça o override dos
métodos herdados de Point, quando necessário. Adicionalmente você deverá fornecer o código para os seguintes métodos:
 public double getPerimeter ();
/* retorna o perímetro do círculo */
 public double getArea ();
/* retorna a área do círculo */
 public setRadius (double r);
/* atribui um novo valor ao raio do círculo */
 public double getRadius ();
/* retorna o raio do círculo */
 public Point getCenter();
/* retorna o objeto Point correspondente ao centro do círculo */
3a questão: Considere agora uma esfera em R3, determinada pela tupla (x, y, z) referente ao seu centro e o seu raio R.
Forneça o código da classe Sphere que implementa essa abstração. Sphere herda de Circle. Para a classe Sphere forneça o
construtor, construído a partir do construtor de Circle e acrescentando a coordenada z, correspondendo ao centro da esfera.
Faça o override dos métodos herdados de Point e de Circle, quando necessário. Adicionalmente você deverá fornecer o
código para os seguintes métodos:
 public double getVolume();
/* retorna o volume da esfera */
 public double getZcoordinate ();
/* retorna a coordenada z do centro da esfera */
 public setXYZCoordinates (double x, double y, double z); /* atribui um novo valor à coordenada z do centro da
esfera */
4a questão: A partir do código gerado nas questões anteriores forneça um pequeno programa que exemplifique o conceito
de polimorfismo.
5a questão: Considere que ume esfera e1 é maior que uma outra esfera e2, se o volume da esfera e1 é maior que o volume
da esfera e2. Implemente, na classe Sphere, a interface Relatable, que estabelece como comparar o “tamanho” entre dois
objetos.
public interface Relatable {
// this (object calling isLargerThan) and
// other must be instances of the same class
// returns 1, 0, -1 if this is greater
// than, equal to, or less than other
public int isLargerThan(Relatable other);
}
6a questão: Considere a seguinte implementação alternativa para a classe Sphere:
public class Sphere{
Point3D center; // ponto em 3 dimensões, caracterizado pelas coordenadas x,y,z.
int radius;
// implementação do construtor de Sphere
...
// implementação dos outros métodos de Sphere
…
}
Como você faria em Java para criar um clone de um objeto que seja instância da classe Sphere? Forneça o código
correspondente .
Boa Sorte!
Download