Difference between revisions of "Strategy Pattern (padrão de desenho)/Exercício 01: Ordenação de Gatos"

From Wiki**3

< Strategy Pattern (padrão de desenho)
(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...")
 
 
Line 4: Line 4:
 
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.
 
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>
+
<source lang="java">
import java.util.*;  
+
import java.util.*;
  
class Animal implements Comparable<Animal> {  
+
class Animal implements Comparable<Animal> {
   private Double _weight;  
+
   private Double _weight;
   public Animal(double weight) { _weight = weight; }  
+
   public Animal(double weight) { _weight = weight; }
   public Double getWeight()        { return _weight; }  
+
   public Double getWeight()        { return _weight; }
   public int    compareTo(Animal a) { return _weight.compareTo(a.getWeight()); }  
+
   public int    compareTo(Animal a) { return _weight.compareTo(a.getWeight()); }
   public String toString()          { return "Peso " + _weight; }  
+
   public String toString()          { return "Peso " + _weight; }
}  
+
}
  
class Cat extends Animal {  
+
class Cat extends Animal {
   private Integer _age;  
+
   private Integer _age;
   public Cat(int age, double weight) { super(weight); _age = age; }  
+
   public Cat(int age, double weight) { super(weight); _age = age; }
   public Integer getAge()  { return _age; }  
+
   public Integer getAge()  { return _age; }
   public String  toString() { return super.toString() + " e idade " + _age; }  
+
   public String  toString() { return super.toString() + " e idade " + _age; }
}  
+
}
  
public class Application {  
+
public class Application {
  
   public static void main(String args[]) {  
+
   public static void main(String args[]) {
     List<Cat> cats = new ArrayList<Cat>();  
+
     List<Cat> cats = new ArrayList<Cat>();
     cats.add(new Cat(1, 8));  
+
     cats.add(new Cat(1, 8));
     cats.add(new Cat(2, 7));  
+
     cats.add(new Cat(2, 7));
     cats.add(new Cat(3, 6));  
+
     cats.add(new Cat(3, 6));
  
     Collections.sort(cats);      // ordenação por peso (_weight)  
+
     Collections.sort(cats);      // ordenação por peso (_weight)
     for (Cat cat: cats) System.out.println(cat);  
+
     for (Cat cat: cats) System.out.println(cat);
  
     //... código em falta ...    // ordenação por idade (_age)  
+
     //... código em falta ...    // ordenação por idade (_age)
     for (Cat cat: cats) System.out.println(cat);  
+
     for (Cat cat: cats) System.out.println(cat);
   }  
+
   }
  
 
}
 
}
</java5>
+
</source>
  
 
= Solução =
 
= Solução =

Latest revision as of 20:53, 8 November 2018

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.

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);
  }

}

Solução

Compiling and Running

Compiling

Running