Polimorfismo, Interfaces, Classes Abstractas/Exercício 04: Tabelas e Transformações

From Wiki**3

< Polimorfismo, Interfaces, Classes Abstractas
Revision as of 17:22, 17 October 2011 by Root (talk | contribs) (Created page with "{{TOCright}} = 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 class...")

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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 (print) que permite imprimir todo o conteúdo, aplicando uma transformação a cada valor. A transformação aplicada varia de acordo com o tipo do objecto Transform, passado como como argumento de print. As potenciais transformações têm um método transform (aceita um inteiro e devolve outro inteiro) que permite modificar um valor inteiro de uma forma específica. Defina os conceitos Table e Transform. Defina ainda duas transformações: uma que calcula o sucessor de cada inteiro (Successor); e outra que calcule o quadrado de cada um dos valores da tabela (Square). Pode realizar outros conceitos/métodos que julgue necessitar. Evite repetições de código.

Solução

UML: Diagrama de Classes

PO-tables-transforms.png

Conceito de Tabela

<java5> public class Table {

 private int _vector[];
 public class Table(int size) {
   _vector = new int[size];
   // init table here...
 }
 public void print(Transform t) {
   for (int i: _vector) System.out.println(t.transform(i));
 }

} </java5>

Conceito de Transformação

<java5>

public interface Transform {

 int transform(int i);

}

</java5>

Conceito de Sucessor

<java5> public class Successor implements Transform {

 @Override
 public int transform(int i) {
   return i + 1;
 }

} </java5>

Conceito de Quadrado

<java5> public class Square implements Transform {

 @Override
 public int transform(int i) {
   return i * i;
 }

} </java5>

Programa Principal

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

<java5> public class Application {

} </java5>

Compiling and Running

How to Compile?

The compilation is as follows:

 javac Table.java
 javac Transform.java
 javac Successor.java
 javac Square.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