Class ParkingControl

java.lang.Object
  extended by ParkingControl

public class ParkingControl
extends Object

Esercitazione LOO n.5 - A.A.2005/2006 Gestisce un parcheggio che deve interagire con i sistemi di emissione e lettura dei tagliandi di sosta e di gettoniera.

Version:
2005-12-10
Author:
Nicola Asuni, Fabrizio Solinas

Constructor Summary
ParkingControl(int posti)
          Costruttore della classe che si occupa di inizializzare lo stato dell'oggetto, il parametro individua il numero di posti disponibili.
 
Method Summary
 long addCar()
          Invocato dalla macchina emettitrice quando un'auto entra nel parcheggio, se il valore di ritorno è positivo è il numero di serie del ticket emesso da registrare sulla banda magnetica e indica che c'è posto nel parcheggio, se il valore è 0 indica che non c'è posto nel parcheggio.
 int[] averageOccupancy()
          Restituisce l'occupazione media del parcheggio arrotondata all'intero pi� vicino, del giorno precedente, per ogni ora del giorno; in altre parole il primo elemento dell'array indicher� il numero medio di macchine presenti dalle 8 alle 9 e cos� via sino all'ultima ora dalle 19 alle 20; il calcolo della media � inteso come numero di minuti totale diviso 60.
 int averageRevenue()
          Restituisce l'importo, in centesimi di euro, medio giornaliero incassato nell'ultimo mese.
 boolean exit(long ticketnum, Date time)
          Dà l'autorizzazione al sollevamento della sbarra quando il lettore all'uscita del parcheggio legge il biglietto con il numero di serie e il tempo di ingresso passati come parametri, devono essere eseguiti i controlli per verificare che il pagamento sia stato effettuato nei 10 minuti precedenti e che il tempo di ingresso sia coincidente (con una tolleranza di 2 minuti) con quello registrato nel sistema.
 int getIntervalPrice(int costo, int hourstart, int hourend, Calendar in, Calendar out)
          Restituisce il costo per l'intervallo specificato.
 long getIntervalTime(int hourstart, int hourend, Calendar inx, Calendar outx)
          Restituisce il numero di minuti di occupazione per l'intervallo specificato.
 int getPrice(long ticketnum)
          Invocato dalla gettoniera per ottenere il costo della sosta sulla base del numero di serie del biglietto, il parcheggio costa 1 euro all'ora dalle 8 del mattino alle 13, 50 centesimi all'ora dalle 13 alle 17 e 1 euro all'ora dalle 17 alle 20, dalle 20 alle 8 il parcheggio � chiuso.
 int howMany()
          Restituisce il numero di macchine presenti nel parcheggio.
 void payment(long ticketnum)
          Invocato dalla gettoniera per comunicare l'avvenuto pagamento della sosta del biglietto con il numero di serie indicato.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ParkingControl

public ParkingControl(int posti)
Costruttore della classe che si occupa di inizializzare lo stato dell'oggetto, il parametro individua il numero di posti disponibili.

Parameters:
posti - numero di posti disponibili nel parcheggio.
Method Detail

addCar

public long addCar()
Invocato dalla macchina emettitrice quando un'auto entra nel parcheggio, se il valore di ritorno è positivo è il numero di serie del ticket emesso da registrare sulla banda magnetica e indica che c'è posto nel parcheggio, se il valore è 0 indica che non c'è posto nel parcheggio.

Returns:
numero di serie del biglietto se il posto è disponibile, zero altrimenti.

averageOccupancy

public int[] averageOccupancy()
Restituisce l'occupazione media del parcheggio arrotondata all'intero pi� vicino, del giorno precedente, per ogni ora del giorno; in altre parole il primo elemento dell'array indicher� il numero medio di macchine presenti dalle 8 alle 9 e cos� via sino all'ultima ora dalle 19 alle 20; il calcolo della media � inteso come numero di minuti totale diviso 60.

Returns:
Occupazione media del parcheggio.

averageRevenue

public int averageRevenue()
Restituisce l'importo, in centesimi di euro, medio giornaliero incassato nell'ultimo mese.

Returns:
importo, in centesimi di euro, medio giornaliero incassato nell'ultimo mese.

exit

public boolean exit(long ticketnum,
                    Date time)
Dà l'autorizzazione al sollevamento della sbarra quando il lettore all'uscita del parcheggio legge il biglietto con il numero di serie e il tempo di ingresso passati come parametri, devono essere eseguiti i controlli per verificare che il pagamento sia stato effettuato nei 10 minuti precedenti e che il tempo di ingresso sia coincidente (con una tolleranza di 2 minuti) con quello registrato nel sistema.

Parameters:
ticketnum - numero di serie del biglietto.
Date - time tempo (timestamp) di ingresso.
Returns:
true se l'uscita � autorizzata, false altrimenti.

getIntervalPrice

public int getIntervalPrice(int costo,
                            int hourstart,
                            int hourend,
                            Calendar in,
                            Calendar out)
Restituisce il costo per l'intervallo specificato.

Parameters:
int - costo costo orario dell'intervallo
hourstart - ora di inizio dell'intervallo (compresa)
hourend - ora di fine dell'intervallo (non compresa)
Calendar - in data di ingresso
Calendar - out data di uscita
Returns:
costo in centesimi di euro per l'occupazione della fascia oraria specificata

getIntervalTime

public long getIntervalTime(int hourstart,
                            int hourend,
                            Calendar inx,
                            Calendar outx)
Restituisce il numero di minuti di occupazione per l'intervallo specificato.

Parameters:
hourstart - ora di inizio dell'intervallo (compresa)
hourend - ora di fine dell'intervallo (non compresa)
Calendar - inx data di ingresso
Calendar - outx data di uscita
Returns:
numero di minuti di occupazione

getPrice

public int getPrice(long ticketnum)
Invocato dalla gettoniera per ottenere il costo della sosta sulla base del numero di serie del biglietto, il parcheggio costa 1 euro all'ora dalle 8 del mattino alle 13, 50 centesimi all'ora dalle 13 alle 17 e 1 euro all'ora dalle 17 alle 20, dalle 20 alle 8 il parcheggio � chiuso.

Parameters:
ticketnum - numero di serie del biglietto.
Returns:
costo della sosta, 0 in caso di errore.

howMany

public int howMany()
Restituisce il numero di macchine presenti nel parcheggio.

Returns:
numero di macchine presenti nel parcheggio.

payment

public void payment(long ticketnum)
Invocato dalla gettoniera per comunicare l'avvenuto pagamento della sosta del biglietto con il numero di serie indicato.

Parameters:
ticketnum - numero di serie del biglietto.