Difference between revisions of "Polimorfismo, Interfaces, Classes Abstractas/Exercício 02: Tabelas e Predicados"

From Wiki**3

< Polimorfismo, Interfaces, Classes Abstractas
(Problema)
Line 6: Line 6:
 
<java5>
 
<java5>
 
Table t = new Table(3);  // table with 3 integers
 
Table t = new Table(3);  // table with 3 integers
 +
 
// inicialização omitida por simplicidade
 
// inicialização omitida por simplicidade
 +
 
SelectionPredicate p1 = new GreaterThan(9);
 
SelectionPredicate p1 = new GreaterThan(9);
 +
 
if (t.contains(p1)) System.out.println("YES"); else System.out.println("NO");
 
if (t.contains(p1)) System.out.println("YES"); else System.out.println("NO");
 +
 
SelectionPredicate p2 = new EqualTo(2);
 
SelectionPredicate p2 = new EqualTo(2);
 +
 
if (t.contains(p2)) System.out.println("YES"); else System.out.println("NO");
 
if (t.contains(p2)) System.out.println("YES"); else System.out.println("NO");
 
</java5>
 
</java5>

Revision as of 17:23, 11 October 2009

Problema

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).

<java5> 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"); </java5>

Defina Table, SelectionPredicate, GreaterThan e EqualTo.

Solução

UML: Diagrama de Classes

PO-table-predicates.png

Conceito de tabela: Table

<java5> </java5>

Conceito de predicado de selecção: SelectionPredicate

<java5> </java5>

Selecção de um número maior que um dado: GreaterThan

<java5> </java5>

Selecção de um número Igual a um dado: EqualTo

<java5> </java5>

Programa Principal

O programa principal é como indicado no enunciado do problema e indicado abaixo por motivos de clarificação:

<java5> </java5>

Compiling and Running

How to Compile?

The compilation is as follows:

 javac Table.java
 javac SelectionPredicate.java
 javac GreaterThan.java
 javac EqualTo.java
 javac Application.java

In fact, compiling Application.java would cause the rest of them be compiled as well (the Java compiler accounts for all explicit class dependencies).

Running

The program starts at a main function (in this case, contained in the Application class):

 java Application