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 ]