Sei sulla pagina 1di 10

Esercizio.

Si deve preparare un sistema per gestire la compagnia di autonoleggio Avis. A tale scopo si consideri la

classe AUTO riportata di seguito, che si può suppore interamente implementata.

class Auto {

friend istream& operator>>(istream&, Auto&);

friend ostream& operator<<(ostream&, const Auto&);


private:

string marca;

string modello;

unsigned cilindrata;
unsigned nPorte;

string alimentazione;

string targa;

public:

Auto();

Auto(const string&,const string&,unsigned,unsigned,const string&,const


string&);

const string& getMarca() const;

const string& getModello() const;

unsigned getCilindrata() const;


unsigned getNPorte() const;

string getAlimentazione() const;

string getTarga() const;


};

La compagnia ha una serie di filiali dislocate sul territorio nazionale. Ciascuna di esse gestisce una serie di automobili,

le quali possono essere affidate in noleggio ai clienti della compagnia. Si noti che, per semplicità, ciascuna auto presa in

noleggio da un cliente in una certa filiale può essere riconsegnata solo nella filiale dove è stata ritirata. Ciascuna filiale
deve sapere in ogni momento quali sono le auto disponibili e quali, invece, sono fuori in noleggio. Inoltre, il sistema

deve prevedere la possibilità che la compagnia decida di assegnare delle nuove auto ad una filiale. A tale scopo, si

implementino tutti i metodi della classe FILIALE, la cui interfaccia è riportata di seguito:

class Filiale{

friend ostream& operator<<(ostream&, const Filiale&);

private:
Auto* elencoAuto;

bool* autoDisponibili;

unsigned n; unsigned nMaxAuto;

unsigned nMaxAuto;
public:

Filiale();

Filiale(Auto*, bool*, unsigned);


Filiale(const Filiale&);

~Filiale();

Filiale& operator=(const Filiale&);

void bool aggiungiAuto(const Auto&);


bool ritiraAuto(unsigned);

bool riconsegnaAuto(unsigned);

};

Infine, si dia una possibile interfaccia di una classe AUTONOLEGGIO che contiene un elenco di 10 filiali. La classe
deve contenere necessariamente un metodo operator[] che dato un indice i consente di accedere direttamente alla
filiale in posizione i,
e un metodo cercaAuto che, data una stringa t, e ifica e di nibile nell a n leggi (ci nelle a ie filiali)
na che abbia na a ga i c i 3 ca a e i cen ali ian a i i a t. N.B. I metodi operator[] e cercaAuto devono
essere implementati.
CLASSE AUTO

istream operator istream i Auto a

i a marca a modello a cilindrata


Parte a alimentazione
an a
toga

return i

ostream operator o drum Auto a

0 a marca a modello

return o i
CLASSE FILIALE

ostream operatoe ostream o filialeal


f I
for int i o io
f in Auto Itt
o
f elencoAuto
li disponibile

autoDisponibili ti call
f
return o

Filiale Filiale elencotanto Co auto DisponibiliD

in Auto o n Max Antolo

Filiale Filiale Auto E D unsigned N


bagel
Nanto n Nra Auto N
Elena Anto new Auto
InRexAuto
Auto Disponibili new bad InAuto

Auto
fecit i o in i a

elena detti E li
auto DisponibiliCi D i

Filiale Filiale const Filiale


f
n MaxAuto
f Auto
n Max Anto
nAuto
f in

elencoAuto new Auto Grattato


auto Disponibili new tool InAuto

fa int i o in Auto i tt

elencoAuto li elenco Auto


f i
auto Disponibili li li
f autoDisponibili

Filiale
i Filiale operator coattadelf
f this f 1
delete E elencoAuto
delete autoDisponibili
Auto
f in inAuto

n MaxAnto
nMaxAuto

elencoAuto
f Auto Grattato
new

auto Disponibili new boot InAuto


fa int i o i in Auto i tt

elencoAuto li elenco Auto


f i

auto Disponibili li li
f autoDisponibili
return this

void Filiale hole aggiungi Auto const Auto a

f nato n RexAuto

f Gradito o n tra Auto io

else ritrattato 2

Auto temp E new Auto Grattato i

tool tapD un tool In MaxAuto

fa int i o ian RaAnto i a

templi elencoAuto li
tempDID auto Disponibili È
delete I elencoAuto
delete E auto Disponibili

elencoAuto temp E

auto Disponibili tempDi

elenco AutoInAuto a

auto Disponibili InAuto bue


nAnto tt i

pool Filiale filiale ritira Auto unsigned i


autoDisponibili tua
if autoDisponibili ti
i
false
return tua
else return false
pool Filiale filiale riconsegna Auto unsigned i
autoDisponibili
if autoDisponibili ti
i false
tua
return tua
else return false
y

CLASSE AUTONOLEGGIO

class Autonoleggio
private
Filiale elencati balli o

public
Filiale operator CIhaled unsigned
baal cercaAuto stung
g
Filiale Autonoleggio Autonoleggio operator
Rf
Filiale

una
gradi
return elencoFiliali i

tool Autonoleggio Autonoleggio string t


carattericentrali
stay

int
fa i o i cio itt

fa mt g 0 se elencatedi litri Auto Itt


string targa
elenco
Khalili elencoAuto
III
foe Mt x2 Ken lett

carattericentrali t
targa Di
f stampa carattericentrali D
return bene
else carattericentrali
i
return false