LABORATORIO 10 - APPLICAZIONI ============================= Applicazione OrdinaFiori ------------------------ Realizzare una applicazione OrdinaFiori che permetta di gestire ordini di mazzi di fiori. La applicazione deve avere le seguenti classi: * la classe Fiore, i cui oggetti sono caratterizzati da un nome e da un prezzo e dotata di un costruttore Fiore(String nome, double prezzo) e dei metodi: - String getNome() - double getPrezzo() - void setPrezzo(double prezzo) - String toString() * la classe Mazzo, i cui oggetti sono caratterizzati dalla lista di tipi di fiori e dal numero di fiori di ciascun tipo. Per realizzare questo aspetto ci appoggeremo a un'ulteriore classe Ordine che associ fiori a quantita` (vedi sotto). La classe deve essere dotata di un costruttore che crea un mazzo vuoto e dei seguenti metodi: - void add(Fiore fiore, int quantita): se il tipo di fiore e` gia` presente nel mazzo (vedi nota 1. sotto), deve aggiornare solo la quantita`, altrimenti deve anche inserirlo. - double calcolaPrezzo() - String toString(): visualizza la composizione del mazzo elencando i tipi di fiori in ordine alfabetico (vedi nota 2. sotto), per ciascuno la quantita`, e infine il prezzo totale * la classe Ordine, i cui oggetti sono caratterizzati da tipo di fiore e quantita`. - deve essere possibile modificare la quantita` * una classe OrdinaFiori con un main che chiede all'utente di aggiungere fiori, con i relativi prezzi e quantita`, fino a che l'utente digita "stop". Il programma dovra` stampare la composizione del mazzo e il prezzo totale. Documentare le classi della applicazione e lanciare il comando javadoc Fiore.java Ordine.java Mazzo.java per creare la documentazione, visitabile poi aprendo il file index.html con un browser. NOTE ---- Nota 1. Per verificare se un tipo di fiore (nel nostro caso un Ordine) e` gia` presente in un mazzo utilizziamo il metodo contains della classe ArrayList. Affinche' il metodo funzioni correttamente occorre definire un metodo equals per la classe Ordine e ridefinire (@Override) il metodo equals(Object o) della classe stessa. Per farlo definiamo un metodo equals anche per la classe Fiore. Nota 2. Per ottenere il mazzo in ordine alfabetico utilizziamo il metodo statico sort della classe Collections, che richiede che la classe di base (nel nostro caso Ordine) implementi l'interfaccia Comparable e disponga del metodo compareTo. Ci appoggiamo alla classe Fiore, che dovra` implementare essa stessa l'interfaccia comparable e disporre del metodo compatreTo.