MAB 240 – Computação II

MAB 240 - Computação II

Fabio Mascarenhas

Laboratório 5 - 09/04/2012

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.

Enviando

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.


Last modified: Sun Apr 8 10:54:05 BRT 2012