Tópicos

  • "Composite" (padrão de desenho)

Exercicio 1: Verificador

Os elementos de uma colecção de nomes ( String ) têm um conjunto de propriedades a verificar. Para tal, foi criado um verificador automático que faz uso de avaliadores booleanos representados por objectos. Cada avaliador booleano tem uma função " ok " que aceita uma String e devolve um valor booleano. Implemente os seguintes predicados e operadores: NonZeroLength , LengthIsOdd , LengthIsOdd , LengthGreaterThan , LengthLesserThan , LengthEqualTo , And (operador binário que é verdadeiro quando dois elementos são verdadeiros), Or (operador binário que é falso quando dois elementos são falsos), Not (operador unário que é verdadeiro quando o seu argumento é falso).

Exemplo:

String s1 = "batata";

String s2 = "oo";

String s3 = "xyz";

Verifier v = new Or(new And(new LengthGreaterThan(5), new LengthLesserThan(8)), new LengthEqualTo(2));

boolean b1 = v.ok(s1); // true

boolean b2 = v.ok(s2); // true

boolean b3 = v.ok(s3); // false

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

Exercício 2: Cobrador de Impostos

Um cobrador de impostos entrevista pessoas, perguntando-lhes qual é o seu rendimento, para poder calcular o montante a cobrar. O cobrador é muito competente e, além de pessoas individuais, pode também abordar empresas e realizar a mesma operação. Tanto as empresas, como as pessoas, são vistas como contribuintes singulares. Para melhorar a agilidade das finanças públicas, os cobradores de impostos foram treinados para cobrarem impostos em regiões geográficas (províncias, distritos, cidades). As províncias contêm vários distritos. Os distritos contêm várias cidades, assim como pessoas e empresas (situadas em regiões rurais). As cidades contêm pessoas e empresas.

Implemente o cobrador de impostos por forma a não ser sensível às várias distribuições de contribuintes. Assuma que o cobrador de impostos invoca sempre o método " contribuição " sobre o contribuinte (retorna um valor inteiro). As entidades não atómicas permitem a adição de outras entidades, de acordo com as suas restrições específicas.

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

Exercício 3: Construção e Visualização de Páginas

Uma página é constituída por vários elementos, que podem, ou não, ter eles próprios estrutura: imagens (são elementos atómicos que representam entidades gráficas); blocos de texto (elementos atómicos que apenas podem conter texto); figuras (contêm uma ou mais imagens e podem ter uma legenda - um bloco de texto); parágrafos (podem vários blocos de texto). A página pode conter um ou mais elementos dos apresentados anteriormente. Todos os elementos implementam o método "render", que permite apresentar a página. Escreva um método " main" que crie uma página e lhe adicione múltiplos elementos, por forma a permitir exemplificar a funcionalidade.

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