Definire la classe immutabile Prodotto con i seguenti campi:
Id, che rappresenta un codice univoco per ogni prodotto [Tipo: String]
Tipologia del prodotto (es. scarpe, abito, ecc.) [Tipo: String]
Marca [Tipo: String]
Modello [Tipo: String]
Anno di produzione [Tipo: int] (compreso tra 1900 e 2050)
Prezzo [Tipo: double] (>= 0.0)
Implementare, inoltre, i metodi ritenuti necessari.
Definire una classe Magazzino per la gestione dei prodotti, dove i prodotti sono rappresentati da una lista (List) di prodotti:
Aggiunta di un nuovo prodotto (se l'id del prodotto non è presente)
Rimozione di un prodotto (dato l'id)
Ricerca di tutti i prodotti di una certa marca
Ricerca di tutti i prodotti di un certo modello
Ricerca di tutti i prodotti di un certo tipo
Ordinamento dei prodotti per prezzo crescente
Ordinamento dei prodotti per prezzo decrescente
Stampa di tutti i prodotti
Realizzare un main per testare il funzionamento dell'implementazione creando un menù di scelta. Ad esempio:
1 – Aggiunta di un prodotto
2 – Rimozione di un prodotto
...
0 – Esci
dove si esegue l'operazione relativa quando l'utente sceglie il corrispondente numero. Ogni operazione (a parte l’uscita) può essere svolta un numero arbitrario di volte.
I dati dei prodotti devono essere inseriti da standard input.
Metodi utili:
Collections.sort [documentazione]
sort di List [documentazione]
Esercizio Bonus: Stampare tutti i prodotti raggruppati per marca, con le marche in ordine alfabetico.
Esempio.
Dato il magazzino:
N1 - Scarpe - Nike - Air Force 1 - 2024 - 120
N2 - Vestiti - Nike - Tshirt Sportswear - 2012 - 40
A1 - Scarpe - Adidas - Campus - 2023 - 90
S1 - Scarpe - Starry - Stratos bianche - 2000 - 1000
A2 - Vestiti - Adidas - Tshirt Essentials - 2018 - 35
L'output atteso è del tipo:
--- MARCA ADIDAS ---
A1 - Scarpe - Adidas - Campus - 2023 - 90
A2 - Vestiti - Adidas - T-shirt Essentials - 2018 - 35
--- MARCA NIKE ---
N1 - Scarpe - Nike - Air Force - 2024 - 120
N2 - Vestiti - Nike - T-shirt Sportswear - 2012 - 40
--- MARCA STARRY ---
S1 - Scarpe - Starry - Stratos bianche - 2000 - 1000