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.