Progettino

L'obiettivo del progettino è implementare un piccolo generatore d'itinerari stradali.

Il progettino è individuale e dovrà essere consegnato prima di sostenere la prova scritta.

Il progetto è composto da una classe principale Mappy che gestisce tutte le interazioni con l'utente.

class Mappy {

}

Per generare gli itinerari, la classe principale si serve di informazioni contenute nelle connessioni. In Java, tali connessioni sono rappresentate da una classe astratta Connection.

abstract class Connection {
  String from;
  String to;
  float km;
  int time;
}

Una connessione contiene le due città che sono connesse, un numero di chilometri (rappresentato come un numero in virgola mobile) ed un tempo medio di percorso. Una connessione fra due città può essere una connessione tramite autostrada, superstrada, o strada statale. In Java, tali connessioni saranno rappresentate da sotto-classi della classe Connection. Una classe Motorway contiene il numero dell'autostrada e il costo del pedaggio autostradale.

class Motorway extends Connection {
  int number;
  float price;
}

Una classe Expressway contiene il nome della superstrada e il numero dei chilometri con doppia carreggiata.

class Expressway extends Connection {
  String name;
  float safe;
}

Una classe MainRoad contiene il numero della strada statale e un booleano che indica se ci sono semafori su tale strada.

class MainRoad extends Connection {
  int number;
  boolean trafficLight;
}

Un itinerario è una classe astratta Itinerary. Ha due sotto-classi. La classe ItineraryStep contiene una connessione e  il resto dell'itinerario. La classe EmptyItinerary è un itinerario vuoto.

abstract class Itinerary {
}

class ItineraryStep extends Itinerary {
  Connection step;
  Itinerary next;
}

class EmptyItinerary extends Itinerary {
}

Aggiungere alla class Itinerary i metodi seguenti:

Sia data l'interface Compare

interface Compare {
  boolean isBetter(Itinerary i1, Itinerary i2);
}

che permette di sapere se un itinerario è preferibile ad un altro.

Aggiungere alla class Mappy i metodi seguenti:

Dare delle implementazioni dell'interface Compare che permettano di ottenere un itinerario con un tempo di percorso minimo, con un numero di chilometri minimo, con un costo minimo, con un minimo cambio di strade.

Ogni class di questo progetto deve implementare il metodo toString che permette di convertire un oggetto in una stringa.

Il progetto dovrà essere corredato di un insieme di esempi che ne illustra il corretto funzionamento.

Lo studente dovrebbe seguire le convenzioni di codifica date durante il corso. Per verificare la conformità del progetto, si può usare l'archivio checkstyle.jar. Eseguendo

java -jar checkstyle.jar File.java
si genera un file report che indica la conformità del codice.
Laurent Théry
Last modified: Tue May 16 18:16:26 MEST 2006