Corso di Interfacce Utente - A.A. 2002-2003

PROGETTO DI RECUPERO - DOCUMENTO 2

Descrizione del programma che implementa l'applicazione

Introduzione

Il programma e' composto da 5 classi java (contenute in 5 file):

  1. PairOfDouble implementa una coppia di coordinate double, e' usata per rappresentare punti e vettori
  2. SteadyCircle implementa un cerchio, e' usata per i buchi, e' super-classe di MovingCircle
  3. MovingCircle implementa un cerchio mobile, e' usata per la pallina, e' sotto-classe di SteadyCircle
  4. SteadyBlock implementa un rettangolo, e' usata per gli ostacoli, e' super-classe di WorkEnv
  5. WorkEnv implementa l'ambiente di lavoro con i buchi, gli ostacoli, la pallina ecc., essendo anche una rettangolo e' sotto-classe di SteadyBlock
Nel seguito sono documentate le variabili e funzioni pubbliche di queste 5 classi.

Nota: non tutte le funzioni vi saranno utili per sviluppare l'interfaccia, comunque qui per completezza sono state documentate tutte.

classe PairOfDouble

Le istanze di questa classe sono coppie di coordinate che rappresentano a seconda del contesto punti oppure vettori nel piano. I punti servono per le posizioni. i vettori servono per le velocita'.

Elementi appartenenti alla classe (static)

Funzioni relative al calcolo di distanze:

Costruttori:

Elementi appartenenti ad ogni oggetto istanza della classe

Variabili che descrivono lo stato interno:

Funzioni che agiscono sul punto o vettore:

classe SteadyCircle

Le istanze di questa classe sono cerchi fermi. Serve direttamente per rappresentare i buchi. Un cerchio fermo e' caratterizzato da:

Elementi appartenenti alla classe (static)

Costruttori:

Elementi appartenenti ad ogni oggetto istanza della classe

Funzioni relative alla posizione (del centro) di questo cerchio:

Funzioni relative al raggio di questo cerchio:

classe MovingCircle

Le istanze di questa classe sono cerchi mobili. Serve per rappresentare la pallina. E' sotto-classe di SteadyCircle da cui eredita tutte le caratteristiche. In piu' e' caratterizzata da:

Elementi appartenenti alla classe (static)

Costante che la massima intensita' della velocita' come fattore moltiplicativo rispetto al raggio del cerchio mobile:

Costanti che definiscono i possibili valori della storia per un cerchio mobile:

Non appena la pallina cade in un buco viene distrutta, percio' non e' necessario un valore di storia per descrivere questo caso.

Costruttori:

Elementi appartenenti ad ogni oggetto istanza della classe

Variabili che descrivono lo stato interno sono private, accessibili in lettura e scrittura solo tramite funzioni.

Funzioni relative alla velocita' di questo cerchio mobile:

Funzioni relative alla storia di questo cerchio mobile (che cosa gli e' accaduto nell'ultimo passo di simulazione. I valori ammissibili della storia sono MovingCircle.OBSTACLE, MovingCircle.BORDER, MovingCircle.PLAIN (non eiste un valore per il caso "caduto in un buco) perche' le palline cadute non esistono piu'):

classe SteadyBlock

Un'istanza di questa classe e' un rettangolo fermo. Serve direttamente per rappresentare gli ostacoli. Un rettangolo fermo e' caratterizzato da:

Elementi appartenenti alla classe (static)

Costanti che definiscono le possibili posizioni di un punto rispetto al rettangolo, sono maschere binarien che si possono combinare con operatori bit a bit (es. nord-est si ottiene con NORTH|EAST):

Costruttori:

Elementi appartenenti ad ogni oggetto istanza della classe

Variabili che rappresentano il contorno dell'ambiente di lavoro sono private, accessibili solo attraverso le funzioni.

Funzioni relative al punto di ancoraggio (angolo di x ed y minime) di questo rettangolo:

Funzioni relative a larghezza ed altezza di questo rettangolo:

Altre funzioni relative alla geometria del rettangolo:

Funzioni relative al calcolo di distanze:

classe WorkEnv

Un'istanza di questa classe e' un ambiente di lavoro. E' sotto-classe di SteadyBlock da cui eredita tutte le caratteristiche. Queste caratteristiche ereditate descrivono la geometria dell'area di lavoro, che e' un rettangolo. In piu' e' caratterizzato da:

WorkEnv usa oggetti della classe java Vector per memorizzare i buchi e gli ostacoli contenuti nell'area di lavoro.

Elementi appartenenti alla classe (static)

Costruttore:

Elementi appartenenti ad ogni oggetto istanza della classe

Variabili che rappresentano l'ambiente di lavoro sono private, accessibili solo attraverso le funzioni.

Funzioni per gestire gli ostacoli presenti nell'area di lavoro:

Funzioni per gestire i buchi presenti nell'area di lavoro:

Funzioni relative al rettangolo che definisce l'area di lavoro e a sue sotto-aree:

Funzioni relative alla pallina e alla simulazione:

Funzioni relative agli attrattori:

Funzioni di lettura:

Funzioni di scrittura: