Fondamenti di Informatica I
Corso di Laurea in Ingegneria Informatica e Ingegneria Automatica
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: libero/occupato, targa dell'auto se occupato (una stringa), ora da cui e' occupato (un intero).
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 liberoString toString( )
: che restituisce "-------"
se il posto auto e' libero, la targa dell'auto se esso e' occupato void arrivaAuto(String targa, int ora)
: modifica lo stato
del posto auto ponendolo ad occupato e ponendo a targa
la targa
dell'auto che lo occupa e a ora
l'ora da cui e' occupato, se
il posto e' gia occupato non fa nullavoid parteAuto()
: modifica lo stato del posto auto a libero boolean libero()
: restituisce true
se il posto
auto e' libero, false
altrimentiString getAuto()
: restituisce la targa dell'auto che lo occupa
se il posto e' occupato, null
altrimentint getOra()
: restituisce l'ora da cui e' occupato se il posto
e' occupato, -1
altrimentiProgramma di esempio: 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:
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 contenenti gli indici di tutti i posti
liberi di p
static void entraAuto(PostoAuto[] p, String a, int o)
: 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
a assegnando
come ora d'arrivo o
; se non sono presenti posti liberi lasci
p
immutatostatic 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 e' parcheggiata
l'auto a
(rappresentata dalla targa); se l'auto a non e' presente
lasci p
immutatostatic int autoPresenteDaPiuTempo(PostoAuto[] p)
: che dato
un parcheggio p
rappresentato semplicemente come un array di
posti auto, restituisca l'indice del posto auto dove e' parcheggiata l'auto
parcheggiata da piu' tempo; se sono presenti piu' 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 n)
: 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 su file ogniuno con il proprio stato; i record postiauto
hanno la seguente forma:
<libero> <targa auto> <ora>dove
libero
e' "true"
o "false"
;targa
auto
e' la targa dell'auto se il posto e' occupato, la stringa
vuota altrimenti; e ora e' un intero che rappresenta l'ora di arrivo
dell'auto se il posto e' occupato, la stringa vuota altrimenti. Suggerimento
si introduca un metodo ausiliario per la lettura di un singolo recordstatic void scriviParcheggioSuFile(PostoAuto[] p, String n)
: dato un parcheggio p
rappresentato semplicemente come un array
di posti auto e una stringa n
che rappresenta il nome di un file,
scriva su detto file i record postiauto
(vedi sopra) corrispondenti
al intero parcheggioParte 3. Realizzare una classe Parcheggio
per
rappresentare parcheggi i cui oggetti supportano le stesse funzionalita' di
UsaPostoAuto
.