Relazione sull’esercitazione di laboratorio



Scaricare 166 Kb.
Pagina1/2
29.03.2019
Dimensione del file166 Kb.
  1   2

Relazione sull’esercitazione di laboratorio
Di: Stefano Morini

Data esercitazione: 10/05/2001


Descrizione del problema



  • Progetto e sviluppo del tipo di dato astratto (ADT) Orario, riusando il contatore base.

Un Orario è costituito da ore, minuti e secondi, impostabili e leggibili in ogni momento, può essere incrementato un secondo alla volta, aggiornando coerentemente ore, minuti e secondi.

Deve poter essere costruibile con ora di default o impostata in fase di creazione.

Un Orario deve poter restituire il suo valore nel formato hh:mm:ss, in aggiunta deve anche potersi confrontare con altri oggetti Orario.

  • Progetto e sviluppo del tipo di dato astratto (ADT) Elenco Rilevamenti, che gestisce l’immissione di N rilevazioni di temperatura.


Una Rilevazione consiste in ora, minuti, secondi e nel valore della temperatura.

Si vuole poter chiedere a Elenco Rilevamenti di calcolare la media e di stampare l’elenco.



  • Progetto e sviluppo del componente software che crei un elenco di temperature per 10 rilevamenti. Si immettano nell’elenco 10 rilevamenti con ore e temperatura e si stampi la media richiesta a Elenco Rilevamenti.

Analisi


L’Adt Orario realizzato è un oggetto composto che ha un contatore base al suo interno e che gestisce l’orario nel formato ore, minuti e secondi. Orario può essere costruito con l’ora di default (00:00:00) oppure con un’ora impostata in fase di creazione.

Il valore di Orario è leggibile e scrivibile in qualsiasi momento; la scrittura del valore è vincolata alla correttezza delle ore, minuti, secondi, ciò significa che un orario, per essere valido e impostabile, deve avere le ore comprese tra 0-23,i minuti e i secondi tra 0-59.

L’Orario si può incrementare di un secondo alla volta, per far scorrere il tempo, minuti e ore verranno aggiornati per mantenere la coerenza con il formato ora.

Orario non si preoccupa di come si devono incrementare ore, minuti e secondi, ma delega il tutto alla classe Counter incapsulata al suo interno.

L’Orario può restituire ore ,minuti e secondi separatamente oppure il suo valore formattato nel modo hh:mm:ss.

L’Orario è in grado di dire se è uguale, maggiore o minore di un altro.

L’Adt Elenco Rilevamenti è un lista di rilevamenti gestita a FIFO, quindi è un oggetto che ha al suo interno un insieme di oggetti Rilevamento, e che si occupa dell’organizzazione dei rilevamenti, ma che fa gestire i dati a Rilevamento.

Un rilevamento è un insieme di orario e temperatura.

A sua volta anche Rilevamento è un oggetto composto che ha un Orario al suo interno, e a cui inoltra messaggi per la memorizzazione dell’ora.

Rilevamento principalmente viene usato con la classe Elenco Rilevamenti e quindi viene costruito con orario e temperatura impostati in fase di creazione, ma può essere costruito anche con dati di default (00:00:00 , 0.0).

I valori di Rilevamento sono leggibili in qualsiasi momento.

Elenco Rilevamenti può essere creato con una dimensione di default o impostata durante la costruzione.

Se l’Elenco Rilevamenti e pieno i successivi rilevamenti saranno messi in coda perdendo in rilevamento più vecchio, cioè quello in testa alla lista.

L’elenco è in grado di stampare tutta la sua lista nel formato orario-temperatura, di restituire il numero di rilevamenti al suo interno ed è anche possibile chiedergli di calcolare la media sulle temperature memorizzate in ogni rilevamento.

Il componente software EsempioRil esegue un rilevamento di 10 temperature e un inserimento nell’elenco.

Progetto


Per rappresentare gli ADT si definiscono le classi:

Counter (Sorgente: Counter.java) già discussa nella precedente relazione

Orario (Sorgente: Orario.java)

Rilevamento(Sorgente: Rilevamento.java)

ElencoRil(Sorgente: ElencoRil.java).
Orario:


  • I dati ore, minuti e secondi sono inoltrati a tre oggetti Counter.

In questo modo Orario incapsula tre Counter a cui fa gestire l’incremento.

private Counter ore , min , sec;



  • Il costruttore di default crea tre Counter di default, partendo così da 00:00:00.

public Orario()

  • Il costruttore con parametri, imposta un determinato valore sui Counter.

public Orario(int pore, int pmin, int psec)

  • Metodo necessario a settare il valore di Orario run-time.

public void setVal(int pore, int pmin, int psec)

  • Metodo di incremento del valore di Orario.

public void inc()

  • Metodo per riportare ore, minuti e secondi allo stato di default.

public void reset()

  • Metodi per restituire singolarmente ore, minuti e secondi.

public int getOre()

public int getMin()

public int getSec()


  • Metodo per restituire il valore di Orario nel formato hh:mm:ss usando una classe di java. Time mi da la possibilità di non preoccuparmi della formattazione dell’ora delegando a lei tutto il lavoro. Durante la compilazione java mi avverte che questa classe è “Deprecated”, e che nelle future versioni non verrà più utilizzata.

public String getValueThroughTime()

  • Metodo primario per restituire il valore di orario Orario.

public String getVal()

  • Metodo privato utilizzato da getVal per formattare la stringa in hh:mm:ss.

Il parametro è un Counter perché esegue una formattazione singolarmente su ore, min e sec.

private String strFormat(Counter x)



  • Metodo per il controllo dell’uguaglianza di due oggetti Orario.

Due oggetti Orario sono uguali quando hanno lo stesso valore.

Ritorna true con Orari uguali false in caso contrario.

public boolean equals(Orario o)


  • Metodo per verificare se un Orario e maggiore del Orario passato per parametro.

Ritorna true con Orario maggiore del parametro false in caso contrario.

public boolean greater(Orario o)



  • Metodo per verificare se un Orario e minore del Orario passato per parametro.

Ritorna true con Orario minore del parametro false in caso contrario.

public boolean lower(Orario o)



  • Metodo privato utilizzato per confrontare due oggetti Orario.

Restituisce una stringa “sono maggiore”, “sono minore”, “sono uguale” che definisce il risultato del confronto.

private String compareWith(Orario o)


Rilevamento:

  • Composto da un oggetto Orario e da un double per memorizzare rispettivamente ora e temperatura.

private Orario ora;

private double temp;



  • Costruttore di default che imposta ora e temperatura a 00:00:00 e 0.0.

public Rilevamento()

  • Il costruttore con parametri, imposta un determinato rilevamento.

public Rilevamento(int pore, int pmin, int psec, double ptemp)

  • Metodi per la restituzione dei valori interni.

Per getTemp recupera la variabile privata interna, per getOra manda un messaggio a Orario per avere indietro l’ora formattata.

public double getTemp() public String getOra()


ElencoRil:

il numero di elementi nell’array.

private Rilevamento ril[];

Riferimento ad un array di riferimenti a Rilevamento. L’array non è ancora stato creato.

private int num;

Indica il numero di elementi nell’array

private int size;

Indica la dimensione dell’array


  • Costruttore di default che crea un array di 5 elementi.

public ElencoRil()

  • Costruttore con impostazione della dimensione dell’array da parametro.

public ElencoRil(int a)

  • Metodo per aggiungere un nuovo oggetto Rilevamento.

I parametri creano un Rilevamento con determinati valori.

public void add(int pore, int pmin, int psec, double ptemp)



  • Metodo per restituire il mumero di elementi presenti nell’array.

public int length()

  • Metodo per stampare direttamente un elenco del rilevamenti.

public void stampaElenco()

  • Metodo per calcolare e restituire la media.

public double mediaTemp()

Dettagli implementativi



Classe Orario:


  • Nel costruttore con parametri effettuo un test per il controllo della correttezza di ore, min e sec prima di costruire i relativi Counter, se non vanno a buon fine li cotruisco come default.

public Orario(int pore, int pmin, int psec){

// Controllo se ora è valida

if ((pore>=0)&&(pore<24))

ore=new Counter(pore);

else


ore = new Counter();

// Controllo se min è valido

if ((pmin>=0)&&(pmin<60))

min=new Counter(pmin);

else

min = new Counter();



// Controllo se sec è valido

if ((psec>=0)&&(psec<60))

sec=new Counter(psec);

else


sec = new Counter();

}

  1   2


©astratto.info 2019
invia messaggio

    Pagina principale