Si vuole realizzare un programma per la gestione di un parcheggio formato da una collezione di posti auto. Per ciascun posto auto del parcheggio sono memorizzate le seguenti informazioni:
Parte 1.
Scrivere una classe PostoAuto
per la gestione di un posto auto che
implementi i seguenti metodi:
PostoAuto()
: costruttore senza parametri che costruisce un
posto auto libero;String toString()
: che restituisce "-------"
se il posto auto è libero, la targa dell'auto se esso è
occupato;void arrivaAuto(String targa, int ora)
: modifica lo stato
del posto auto ponendolo ad occupato e ponendo la targa dell'auto che lo
occupa pari a targa
e l'ora da cui è occupato pari a
ora
; se il posto è gia occupato non fa nulla;void parteAuto()
: modifica lo stato del posto auto a
libero;boolean libero()
: restituisce true
se il posto
auto è libero, false
altrimenti;String getAuto()
: restituisce la targa dell'auto che
occupa il posto, se il posto è occupato, null
altrimenti;int getOra()
: restituisce l'ora da cui é occupato se
il posto é occupato, -1
altrimenti.ProvaPostoAuto.java
public class ProvaPostoAuto { public static void main (String[] args) { PostoAuto pa = new PostoAuto(); System.out.println(pa); pa.arrivaAuto("BJ300GH",12); System.out.println("Libero: " + pa.libero() + ", auto: " + pa.getAuto() + ", ora arrivo: " + pa.getOra()); System.out.println(pa); pa.parteAuto(); System.out.println(pa); } }
Parte 2. Scrivere una classe UsaPostoAuto
che contiene
una serie di metodi statici pubblici che sono clienti di
PostoAuto
. In particolare essa contiene i seguenti metodi:
static int primoPostoLibero(PostoAuto[] p)
: che dato un
parcheggio p
rappresentato semplicemente come un array di
posti auto, restituisca l'indice del primo posto libero in
p
;
static int contaPostiLiberi(PostoAuto[] p)
: che dato un
parcheggio p
rappresentato semplicemente come un array di
posti auto, restituisca il numero di posti liberi in p
;
static int[] qualiPostiLiberi(PostoAuto[] p)
: che dato un
parcheggio p
rappresentato semplicemente come un array di
posti auto, restituisca un array di interi contenente gli indici di tutti
i posti liberi di p
;
static void entraAuto(PostoAuto[] p, String a, int ora)
:
che dato un parcheggio p
rappresentato semplicemente come un
array di posti auto, modifichi tale array introducendo l'auto
a
(rappresentata dalla targa) nel primo posto libero
disponibile di p
, assegnando ora
come ora
d'arrivo; se non sono presenti posti liberi lasci p
immutato
static void esceAuto(PostoAuto[] p, String a)
: che dato un
parcheggio p
rappresentato semplicemente come un array di
posti auto, modifichi tale array rendendo libero il posto auto dove
è parcheggiata l'auto a
(rappresentata dalla targa);
se l'auto a
non è presente lasci p
immutato;
static int autoPresenteDaPiuTempo(PostoAuto[] p)
: che dato
un parcheggio p
rappresentato semplicemente come un array di
posti auto, restituisca l'indice del posto auto dove è
parcheggiata l'auto parcheggiata da più tempo; se sono presenti
più auto che soddisfano la condizione restituisca l'indice di una
qualsiasi; se non sono presenti auto restituisca -1
;
static String[] tutteLeAutoPresenti(PostoAuto[] p)
: che
dato un parcheggio p
rappresentato semplicemente come un
array di posti auto, restituisca un array di stringhe che rappresentano
le targhe di tutte le auto presenti in p
;
static PostoAuto[] leggiParcheggioDaFile(String nomefile)
:
che dato il nome di un file che contiene record postiauto
costruisca un array di PostiAuto
che rappresenta il
parcheggio avente esattamente i posti auto memorizzati sul file, ognuno
con il proprio stato; i record postiauto hanno la seguente forma:
libero targa auto oradove
libero
è "true"
o
"false"
,
targa auto
è la targa dell'auto se il
posto è occupato, la stringa vuota altrimenti, e
ora
è un intero che rappresenta
l'ora di arrivo dell'auto se il posto è occupato, la
stringa vuota altrimenti;
static void scriviParcheggioSuFile(PostoAuto[] p, String
nomefile)
: dato un parcheggio p
rappresentato
semplicemente come un array di posti auto e il nome di un file,
scriva su detto file i record postiauto (vedi sopra)
corrispondenti al intero parcheggio.
Parte 3.
Realizzare una classe Parcheggio
per rappresentare parcheggi, i
cui oggetti supportano le stesse funzionalità di
UsaPostoAuto
.