Tópicos

  • Interfaces
  • Classes abstractas
  • Polimorfismo

Exercício 1: Predadores e Presas

Considere o Exercício 02 da Aula Prática 02 ou a variante apresentada no Exercício 03 da Aula Prática 03.

Considere agora que existem os conceitos Predador e Presa. Um predador é caracterizado por capturar (caught) e devorar (eat) uma presa, consumindo toda a sua energia (drain). Todas as presas são caracterizadas por terem, além da função de consumo de energia, um predicado que indica se escaparam ao predador (escaped). Tanto os predadores como as presas correm (run).

Considere que, dos animais descritos (cão, gato, rato, pássaro), o cão e o gato são predadores e que o rato e o pássaro são presas. Considere, por simplicidade, que um predador consegue interagir com qualquer presa e que as energias envolvidas são as mesmas em todas as interacções predador presa.

Critique o nível de abstracção que obteve.

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

Exercício 2: Procura num Vector

Modele e implemente a classe Table que contém um número fixo de inteiros (especificado na altura da criação das suas instâncias). Essa classe possui um método ( contains) que permite verificar se um dos números obedece a um critério de selecção definido por um predicado passado na altura da chamada ao método. Considere que os predicados definem o método ok (que recebe um inteiro e devolve um booleano).

Table t = new Table(3);  // table with 3 integers

// inicialização omitida por simplicidade

SelectionPredicate p1 = new GreaterThan(9);

if (t.contains(p1)) System.out.println("YES"); else System.out.println("NO");

SelectionPredicate p2 = new EqualTo(2);

if (t.contains(p2)) System.out.println("YES"); else System.out.println("NO");

Defina Table, SelectionPredicate, GreaterThan e EqualTo.

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