Strategy Pattern (padrão de desenho)/Exercício 01: Ordenação de Gatos

From Wiki**3

< Strategy Pattern (padrão de desenho)
Revision as of 13:13, 1 September 2015 by Root (talk | contribs) (Created page with "{{TOCright}} = Problema = Complete a classe '''Application''' por forma a implementar a funcionalidade desejada: ordenar a lista de gatos por idade (a implementação por omi...")

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Problema

Complete a classe Application por forma a implementar a funcionalidade desejada: ordenar a lista de gatos por idade (a implementação por omissão, para Animal, ordena por peso). Não é aceitável a alteração da classe Animal ou da classe Cat. Pode ser necessário criar classes auxiliares.

<java5> import java.util.*;

class Animal implements Comparable<Animal> {

 private Double _weight; 
 public Animal(double weight) { _weight = weight; } 
 public Double getWeight()         { return _weight; } 
 public int    compareTo(Animal a) { return _weight.compareTo(a.getWeight()); } 
 public String toString()          { return "Peso " + _weight; } 

}

class Cat extends Animal {

 private Integer _age; 
 public Cat(int age, double weight) { super(weight); _age = age; } 
 public Integer getAge()   { return _age; } 
 public String  toString() { return super.toString() + " e idade " + _age; } 

}

public class Application {

 public static void main(String args[]) { 
   List<Cat> cats = new ArrayList<Cat>(); 
   cats.add(new Cat(1, 8)); 
   cats.add(new Cat(2, 7)); 
   cats.add(new Cat(3, 6)); 
   Collections.sort(cats);       // ordenação por peso (_weight) 
   for (Cat cat: cats) System.out.println(cat); 
   //... código em falta ...     // ordenação por idade (_age) 
   for (Cat cat: cats) System.out.println(cat); 
 } 

} </java5>

Solução

Compiling and Running

Compiling

Running