þÿCESTINO DELLA SPESA =================== L'obiettivo e' di scrivere una classe Cestino che permette di gestire un cestino della spesa. Vedere la documentazione generata da javadoc: javadoc Prezzo.java Prodotto.java Cestino.java ProdottoScontato.java Le classi da impementare sono, nell'ordine: - Prezzo (rappresenta un prezzo in euro) - Prodotto (rappresenta un prodotto avente un nome e un prezzo) - Cestino (rappresenta una collezione di prodotti) - ProdottoScontato (rappresenta un prodotto a cui e' applicato uno sconto) Quando si e' terminata l'implementazione di una classe, risolvere gli esercizi corrispondenti. ESERCIZIO 1 (classi Prezzo e Prodotto) ====================================== Eseguire il seguente programma. ------------ public class Esercizio1{ public static void main (String args[]){ Prodotto p1 = new Prodotto("latte", 2, 50); Prodotto p2 = new Prodotto("pasta", 7.25 ); // 7.25 e' un double Prodotto p3 = new Prodotto("caffe' macinato", 5); System.out.println(p1); // EQUIVALE A: System.out.println(p1.toString()); System.out.println(p2); System.out.println(p3); }//end main }//end class ------------ Deve essere stampato: latte ¬ 2,50 pasta ¬ 7,25 caffe' macinato ¬ 5,00 NOTA ---- Se il simbolo dell'euro non e' stampato correttamente significa che la variabile predefinita di shell LANG non e' impostata correttamente. Per stampare il valore di LANG: echo $LANG (oppure usare il comando printenv che stampa il valore di tutte le variabili). Porre ad esempio LANG=en_US.UTF-8 oppure LANG=it_IT.UTF-8 (la sintassi per l'assegnamento dipende dalla shell che si sta usando). Si puo' anche modificare l'implementazione del metodo to String della classe Prezzo in modo che venga stampato latte Euro 2,50 pasta Euro 7,25 caffe' macinato Euro 5,00 ESERCIZIO 2 (classe Cestino) ============================ Scrivere un programma Esercizio2 che costruisce il seguente cestino: Cestino cestino = new Cestino(); cestino.add(new Prodotto("latte",2,50)); cestino.add(new Prodotto("pasta", 7.25)); cestino.add(new Prodotto("caffe' macinato", 5)); cestino.add(new Prodotto("caffe' macinato", 5)); cestino.add(new Prodotto("caffe' arabo", 8)); cestino.add(new Prodotto("biscotti secchi",10)); cestino.add(new Prodotto("pacco biscotti formato famiglia", 18,40)); i) Stampare il contenuto del cestino. Occorre costruire un oggetto Iterator<Prodotto> elenco contenente i prodotti del cestino. L'elenco va attraversato usando i metodi hasNext e next dell'interfaccia Iterator<E>. Notare che non e' possibile usare il ciclo for-each su cestino in quanto la classe Cestino non implementa l'interfaccia Iterable<Cestino>. Per lo stesso motivo, non e' possibile usare il ciclo for-each su elenco. ii) Stampare il costo totale usando il metodo getTotale della classe Cestino. iii) Stampare i prodotti del cestino il cui prezzo e' maggiore di 7 euro (usare il metodo elencoProdottiMaggioriDi della classe Cestino). Deve essere stampato: latte ¬ 2,50 pasta ¬ 7,25 caffe' macinato ¬ 5,00 caffe' macinato ¬ 5,00 caffe' arabo ¬ 8,00 biscotti secchi ¬ 10,00 pacco biscotti formato famiglia ¬ 18,40 TOTALE: ¬ 56,15 PRODOTTI CHE COSTANO PIU' DI ¬ 7,00 pasta ¬ 7,25 caffe' arabo ¬ 8,00 biscotti secchi ¬ 10,00 pacco biscotti formato famiglia ¬ 18,40 ESERCIZIO 3 (classe ProdottoScontato) ===================================== Scrivere un programma Esercizio3 che costruisce il seguente cestino: Cestino cestino = new Cestino(); cestino.add(new Prodotto("latte",2,50)); cestino.add(new Prodotto("pasta", 7.25)); cestino.add(new ProdottoScontato("vino", 10, 20)); cestino.add(new ProdottoScontato("pasta all'uovo", 12.50, 25)); cestino.add(new ProdottoScontato("pasta all'uovo", 12, 50, 25)); cestino.add(new Prodotto("caffe' macinato", 5)); cestino.add(new Prodotto("caffe' macinato", 5)); cestino.add(new ProdottoScontato("caffe' macinato", 5, 10)); cestino.add(new ProdottoScontato("caffe' macinato", 5, 10)); i) Stampare il contenuto del cestino e il costo totale dei prodotti nel cestino. ii) Stampare l'elenco dei prodotti scontati e il loro costo totale. iii) Stampare l'elenco dei prodotti non scontati e il loro costo totale. Deve esser stampato: latte ¬ 2,50 pasta ¬ 7,25 vino ¬ 10,00 Sconto 20% ¬ 8,00 pasta all'uovo ¬ 12,50 Sconto 25% ¬ 9,38 pasta all'uovo ¬ 12,50 Sconto 25% ¬ 9,38 caffe' macinato ¬ 5,00 caffe' macinato ¬ 5,00 caffe' macinato ¬ 5,00 Sconto 10% ¬ 4,50 caffe' macinato ¬ 5,00 Sconto 10% ¬ 4,50 TOTALE: ¬ 55,50 PRODOTTI SCONTATI vino ¬ 10,00 Sconto 20% ¬ 8,00 pasta all'uovo ¬ 12,50 Sconto 25% ¬ 9,38 pasta all'uovo ¬ 12,50 Sconto 25% ¬ 9,38 caffe' macinato ¬ 5,00 Sconto 10% ¬ 4,50 caffe' macinato ¬ 5,00 Sconto 10% ¬ 4,50 TOTALE: ¬ 35,75 PRODOTTI NON SCONTATI latte ¬ 2,50 pasta ¬ 7,25 caffe' macinato ¬ 5,00 caffe' macinato ¬ 5,00 TOTALE: ¬ 19,75 ESERCIZIO 4 =========== Scrivere un programma Esercizio4 che legge da standard input una sequenza di prodotti e stampa i messaggi richiesti nell'Esercizo 3. Una linea di input ha la forma N,nome,prezzo oppure S,nome,prezzo,sconto dove nome e' il nome di un prodotto, prezzo il suo prezzo e sconto la percentuale di sconto. Notare che le linee che iniziano con N si riferiscono a un prodotto non scontato, quelle che iniziano con S a un prodotto scontato. Si assume che: - il nome del prodotto non puo' contenere virgole (la virgola e' ammessa solo per separare gli elementi di una linea). - il prezzo va scritto come le costanti di tipo double in Java, ad esempio: 12.34 5.80 10.00 Per convertire una stringa che rappresenta un double nel suo valore, usare il metodo statico parseDouble della classe Double (analogo al metodo parseInt della classe Integer). - sconto e' un intero n tale che 0<n<100. ESEMPIO ------ Supponiamo che le linee in input siano N,sapone,5.20 N,sapone,5.20 S,sapone da bucato,5.00,10 S,detersivo per i piatti,6.80,5 N,dentifricio alla menta,7.25 S,detergente per i vetri,10.00,25 S,detergente per i vetri,10.00,25 (attenzione a non lasciare linee vuote). L'output deve essere: sapone ¬ 5,20 sapone ¬ 5,20 sapone da bucato ¬ 5,00 Sconto 10% ¬ 4,50 detersivo per i piatti ¬ 6,80 Sconto 5% ¬ 6,46 dentifricio alla menta ¬ 7,25 detergente per i vetri ¬ 10,00 Sconto 25% ¬ 7,50 detergente per i vetri ¬ 10,00 Sconto 25% ¬ 7,50 TOTALE: ¬ 43,61 PRODOTTI SCONTATI sapone da bucato ¬ 5,00 Sconto 10% ¬ 4,50 detersivo per i piatti ¬ 6,80 Sconto 5% ¬ 6,46 detergente per i vetri ¬ 10,00 Sconto 25% ¬ 7,50 detergente per i vetri ¬ 10,00 Sconto 25% ¬ 7,50 TOTALE: ¬ 25,96 PRODOTTI NON SCONTATI sapone ¬ 5,20 sapone ¬ 5,20 dentifricio alla menta ¬ 7,25 TOTALE: ¬ 17,65