Inventario dei capi di abbigliamento
====================================
Descrizione
-----------
Implementare le seguenti classi:
- Capo, le cui istanze rappresentano generici capi di abbigliamento e sono
caratterizzate da colore, taglia e prezzo in Euro (identificati da
espressioni di tipo String, int e double, rispettivamente);
- Camicia, le cui istanze rappresentano camicie e sono caratterizzate, oltre
che da quanto descritto per la classe Capo, da numero di bottoni e presenza
o meno di asole per gemelli (identificati rispettivamente da espressioni di
tipo int e boolean);
- Pantalone, le cui istanze rappresentano pantaloni e sono caratterizzate,
oltre che da quanto descritto per la classe Capo, dalla lunghezza espressa
in centimetri (identificata da un'espressione di tipo int);
- Gonna, le cui istanze rappresentano gonne e sono caratterizzate, oltre che da
quanto descritto per la classe Capo, da lunghezza e tipo di materiale
(identificati rispettivamente da espressioni di tipo int e String);
- Cappotto, le cui istanze rappresentano cappotti e sono caratterizzate, oltre
che da quanto descritto per la classe Capo, dal tipo di materiale
(identificato da un'espressione di tipo String).
Implementare infine nella classe Soluzione un metodo main che legga da file la
descrizione di una serie di capi di abbigliamento e stampi il prezzo
dell'ultimo capo avente colore rosso, o alternativamente stampi 0.0 nel caso in
cui la descrizione non contenga alcun capo rosso.
Il nome del file andra' specificato come argomento dalla linea di comando.
Vincoli
-------
Il file da leggere conterra' la descrizione di un capo di abbigliamento per
ogni sua riga, nel seguente formato:
- la descrizione inizia con una stringa che identifica il tipo di capo e che
puo' assumere solamente i valori "CAMICIA", "PANTALONE", "GONNA" e
"CAPPOTTO" (pena emissione di una IllegalArgumentException, che fa parte di
java.lang e che estende RuntimeException);
- la riga continua elencando i valori che identificano il particolare capo di
abbigliamento, nel medesimo ordine indicato nella descrizione della classe
corrispondente e utilizzando gli spazi come caratteri separatori;
- l'unica eccezione riguarda l'ultima caratteristica della classe Camicia: le
corrispondenti righe nel file termineranno con la stringa "GEMELLI" oppure
con la stringa "BOTTONI" a seconda che la camicia abbia o meno asole per
gemelli.
Per esempio, il seguente file (le righe composte esclusivamente da trattini
delimitano l'inizio e la fine)
------
CAMICIA BIANCO 46 35.00 7 GEMELLI
CAMICIA BLU 48 26.50 6 BOTTONI
GONNA GIALLO 42 21.99 40 COTONE
CAPPOTTO NERO 50 270.00 LANA
PANTALONE MARRONE 46 40.00 120
------
indica un insieme di indumenti composti da una camicia bianca di taglia 46,
prezzo pari a 35 Euro, con sette bottoni e asole per gemelli, da una camicia
blu di taglia 48, prezzo di 26.50 Euro, sei bottoni e senza asole per gemelli,
una gonna gialla di taglia 42, prezzo pari a 21.99 Euro, lunga 40 centimetri e
di cotone, e cosi' via.
Ipotizzare che i colori vengano indicati sempre al maschile singolare, e che
tutte le stringhe siano eslusivamente composte da caratteri maiuscoli.
Esempi
------
Ipotizzando che il file sopra descritto abbia nome inventario.txt, eseguendo
$ java Soluzione inventario.txt
si otterrebbe come output
0.0
Nel caso invece il file avesse il contenuto seguente
------
CAMICIA BIANCO 46 35.00 7 GEMELLI
CAMICIA ROSSO 48 26.50 6 BOTTONI
GONNA GIALLO 42 21.99 40 COTONE
CAPPOTTO NERO 50 270.00 LANA
GONNA ROSSO 40 29.00 30 COTONE
PANTALONE MARRONE 46 40.00 120
------
l'output del programma dovrebbe essere
29.00
Suggerimenti
------------
Elaborare le informazioni comuni alle varie classi in un unico punto, piuttosto
che scrivere codice duplicato.