Tópicos

  • Strategy (padrão de desenho)
  • State (padrão de desenho)
  • O exercício de C++ deve ser entregue, em papel, na aula prática da semana de 2014/11/23 - ex10cpp.pdf

    Exercício 1: Ordenação

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

    }

    [ resolução: procurar resolver antes de consultar ]

    Exercício 2: Semáforo

    Um semáforo tem um temporizador que emite impulsos a intervalos regulares. Estes impulsos chegam ao controlador do semáforo sob a forma de chamadas ao método tick . O semáforo tem ainda vários botões para controlo de situações especiais. Assim, o botão de pânico que faz com que o controlador mude o semáforo para a cor vermelha, qualquer que seja a anterior (método panic ). O botão off faz com que o semáforo mude imediatamente para amarelo intermitente (método off ). Esta situação é interrompida através dos botões on (volta ao comportamento normal; método on ) ou de pânico. O botão on é a única forma de fazer semáforo sair da situação de pânico e recuperar o funcionamento normal. Além do código de controlo, o semáforo tem ainda um método ( status ) que permite saber a cor actual do semáforo. O semáforo começa intermitente e quando recupera das situações de intermitência e de pânico fica vermelho.

    Implemente o semáforo e a sua máquina de estados.

    [ resolução: procurar resolver antes de consultar ]