Uma dica: baixe o projeto Eclipse da quinta semana de aula e importe ele no Eclipse antes de começar, assim você pode ver como os conceitos foram aplicados em sala.
Comece baixando também o projeto Eclipse da quarta semana de aula e importando-o no Eclipse também, ele servirá de base para o esse laboratório, é nele que você irá trabalhar. O objetivo deste laboratório é exercitar a criação de superclasses e de fatorar métodos comuns para essas superclasses.
Lembre que
tínhamos uma interface Forma
e quatro classes
implementando essa interface, Quadrado
,
Circulo
, Ponto
e
Composicao
. Também havia uma classe
Coord
para representar coordenadas cartesianas. Se
refamilizarize com o código delas e com os testes em
TesteFormas
, depois faça as tarefas abaixo.
1. As classes Quadrado
, Circulo
e
Ponto
têm uma coisa em comum: todas elas são definidas em
função de um ponto de controle, só que com diferentes
nomes, cse
para os quadrados, centro
para
círculos e local
para ponto. Comece renomeando todos
esses campos para pc
, e modificando todos os locais
necessários no programa para os testes continuarem passando.
2. Vamos agora criar uma nova classe abstrata para fatorar as partes em comum entre as classes
Quadrado
, Circulo
e Ponto
. Crie
uma nova classe chamada FormaPC
. Essa
classe abstrata irá implementar a interface Forma
, e
Quadrado
, Circulo
e Ponto
irão
estender essa nova classe ao invés de implementar
Forma
diretamente. A classe Composicao
continua implementando Forma
diretamente; ela não
deve estender FormaPC
!
3. Mova o campo pc
para a classe
FormaPC
. Crie um construtor para a classe
FormaPC
que inicializa esse campo, e ajuste os
construtores das três classes derivadas dela para chamar o construtor
da superclasse com super
.
4. Quais dos métodos de Quadrado
,
Circulo
e Ponto
podem ser movidos para
FormaPC
? Procure por métodos que dependem apenas
do campo pc
. Mova-os para a superclasse.
5. Adicione um método void mover(int dx, int dy)
à interface
Forma
, esse método deve mover a forma as
distâncias passadas no eixo x e y. Onde as implementações desse
método podem ficar? Implemente o método, e escreva casos
de teste.
6. Adicione uma nova classe Retangulo
. Comece
implementando Retangulo
como uma classe que implementa diretamente a
interface Forma
(não deriva FormaPC
). Depois
reimplemente Retangulo
como uma classe derivada de
FormaPC
, aproveitando as implementações dos
métodos de Forma
em FormaPC
quando possível.
Crie um arquivo .zip
com todo o projeto que você criou
e mande para esse
email até o dia 20/04 (uma sexta-feira). Esse
trabalho vale 0,2 na nota de exercícios, e
poderá ser feito em dupla. Não esqueça de escrever quem são os autores
no email, e em um comentário no(s) seu(s) arquivo(s) .java
.