Nesta prática você vai exercitar alguns conceitos de orientação a objetos resumidos nos slides sobre encapsulamento, classes e objetos em Java (disponível também em vídeo).
-
Baixe o programa Circle.java.
-
Acrescente um método
public void setRadius(double radius)
à classe Circle, para alterar o raio de um círculo. -
Modifique o método
main
para chamar o métodosetRadius
no círculoc
. -
Acrescente as seguintes linhas ao final do método
main
:Circle c2; c2.setRadius(5.0);
Compile o programa. O que acontece?
-
Corrija o programa, criando um objeto da classe Circle que será referenciado por
c2
. Compile novamente o programa. -
Acrescente um novo construtor à classe
Circle
, que receba valores parax
,y
er
. -
Modifique o método
main
para criar outros objetos da classeCircle
, usando o novo construtor. Mostre a área dos novos objetos. -
Baixe o programa TestCircle.java e coloque-o na mesma pasta do programa Circle.java.
-
No programa TestCircle.java, teremos um erro de compilação se acrescentarmos este código ao final do método
main
:c1.r = 0.5;
Este erro se deve à visibilidade
private
do atributor
. Caso o atributo deva poder ser alterado, a forma mais recomendada é definir um método setter. O métodosetRadius
é um exemplo de setter. Outra opção (menos recomendada, mas usada na prática em classes muito pequenas ou para atributos constantes) seria alterar a visibilidade do atributo parapublic
. Teste essa opção no atributor
deCircle
e observe que o erro de compilação fica resolvido. -
Agora restaure para
private
a visibilidade do atributor
no programa Circle.java. Inclua a seguinte linha de código ao final do métodomain
:c.r = 0.5;
Compile o programa e veja que não haverá erro relacionado à visibilidade. Qual será o motivo disso?
-
No programa Circle.java, acrescente a seguinte linha no construtor
Circle()
:System.out.println("New Circle");
Compile e execute os programas Circle.java e TestCircle.java, observando as saídas.
-
No programa TestCircle.java, acrescente a seguinte linha ao final do método
main
:Circle[] circs = new Circle[10];
Você acha que a saída do programa será modificada?
-
Acrescente as seguintes linhas ao programa TestCircle.java:
for (int i = 0; i < circs.length; i++) { circs[i] = new Circle(); }
Qual será a saída do programa agora?
-
Crie uma classe denominada
Point
, que armazene as coordenadas(x,y)
de um ponto num plano. A coordenada default para qualquer ponto deve ser(0.0,0.0)
. Além do construtor, esta classe deve conter:-
um método que desloque as coordenadas de um ponto (x,y) para as coordenadas (x+dx,x+dy), sendo dx e dy argumentos do método
-
um método que calcule a distância entre 2 pontos (x1,y1) e (x2,y2) segundo o teorema de Pitágoras:
dx = x2 - x1 dy = y2 - y1 distancia = sqrt(dx*dx + dy*dy)
Dica: para o cálculo da raiz quadrada, consulte os exemplos da seção Beyond Basic Arithmetic, na página de tutoriais Java da Oracle.
-
-
Crie um programa Java que utilize a classe
Point
do exercício anterior.