Tópicos

  • Decorator (padrão de desenho)
  • Adapter (padrão de desenho)
  • O exercício de C++ deve ser entregue, em papel, na aula prática da semana de 2014/12/08 - ex12cpp.pdf

    Exercício 1: Textos Formatados

    Um texto é constituído por palavras. Quando o texto é apresentado, através do método render, cada palavra pode aparecer sem qualquer modificação de aspecto (utiliza-se o método render correspondente). É ainda possível modificar dinamicamente o aspecto das palavras, permitindo que sejam apresentadas em negrito, itálico, sublinhado, ou em combinações variadas (e.g. negrito e itálico ou itálico sublinhado , etc.). No entanto, a apresentação é sempre realizada da mesma forma (sempre através do método render).

    Além de apresentável graficamente, um texto pode ser convertido numa cadeia de caracteres, contendo a sua informação textual ( String). Esta operação é realizada através do método text (invocado sobre cada um dos elementos designados acima).

    Implemente as classes que permitem representar o texto completo, as palavras, respectivas modificações gráficas. Implemente ainda uma aplicação que ilustre o comportamento. Represente as características gráficas da seguinte forma:

    normal <span>normal</span>
    negrito <b>negrito</b>
    itálico <i>itálico</i>
    sublinhado <u>sublinhado</u>

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

    Exercício 2: Cat Stream

    Um canal de saída binário ( DataOutputStream ) permite escrever valores correspondentes a atributos de instâncias da classe Cat (gatos): respectivamente e em grupos de 3, a idade ( writeInt ), o peso ( writeFloat ) e o nome ( writeUTF ). Interessa, contudo, que as aplicações que trabalham com gatos não tenham contacto directo com o canal binário, sendo apenas colocadas em contacto com o "canal de gatos" ( CatOutputChannel ). O canal de gatos deve aceitar como parâmetro do construtor o canal binário e deve providenciar um método put (com um argumento Cat ). As excepções de entradas e saídas produzidas pelo canal binário devem ser propagadas. O canal deve ainda fornecer uma função close que fecha todos os canais (o de gatos e o binário). Implemente o canal de gatos e uma aplicação que demonstre a utilização.

    A classe Cat é como se indica de seguida:

    public class Cat {
        private int _age = 0;
        private float _weight = 0;
        private String _name = "";

        public Cat(int age, float weight, String name) { _age = age; _weight = weight; _name = name; }

        public int getAge() { return _age; }
        public void setAge(int age) { _age = age; }

        public float getWeight() { return _weight; }
        public void setWeight(float weight) { _weight = weight; }

        public String getName() { return _name; }
        public void setName(String name) { _name = name; }

        public String toString() { return "Cat [_age=" + _age + ", _weight=" + _weight + ", _name=" + _name + "]"; }
    }

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