package carrelloconsoleapp; import javax.swing.imageicon; /* *.java /** * * @author maurizio public class { private String id; private String descrizione; private double prezzo; private int percsconto; carrello.pdf Pag. 1/9 Cozzetto
private int iva; private int qta; private Categoria categoria; private ImageIcon img; /** Costruttore senza parametri public () { /** Costruttore con parametri public (String id, String descrizione, double prezzo, int percsconto, int iva, int qta, Categoria categoria) { this.id = id; this.descrizione = descrizione; this.prezzo = prezzo; this.percsconto = percsconto; this.iva = iva; this.qta = qta; this.categoria = categoria; /** Il prezzo finale è dato dal valore netto + l'iva - lo sconto public double prezzofinale() { return getprezzo()*getqta()+(getprezzo()*getqta()*getiva())/100- (getprezzo()*getqta()*getpercsconto())/100; /** Visualizzazione delle informazioni essenziali del prodotto public String visualizza() { return String.format("\nCodice: %s Titolo: %s Quantità: %d Categoria: %s Prezzo: %f euro",getid(), getdescrizione(), getqta(),getcategoria().getdescrizione(),this.prezzofinale()); public String getid() { return id; public void setid(string id) { this.id = id; public String getdescrizione() { return descrizione; public void setdescrizione(string descrizione) { this.descrizione = descrizione; public double getprezzo() { return prezzo; public void setprezzo(double prezzo) { this.prezzo = prezzo; carrello.pdf Pag. 2/9 Cozzetto
public int getpercsconto() { return percsconto; public void setpercsconto(int percsconto) { this.percsconto = percsconto; public int getiva() { return iva; public void setiva(int iva) { this.iva = iva; public int getqta() { return qta; public void setqta(int qta) { this.qta = qta; public Categoria getcategoria() { return categoria; public void setcategoria(categoria categoria) { this.categoria = categoria; public ImageIcon getimg() { return img; public void setimg(imageicon img) { this.img = img; // fine classe /* * Categoria.java package carrelloconsoleapp; /** * * @author maurizio public class Categoria { private String idcategoria; private String descrizione; carrello.pdf Pag. 3/9 Cozzetto
public Categoria(String idcategoria, String descrizione) { this.idcategoria = idcategoria; this.descrizione = descrizione; public String getidcategoria() { return idcategoria; public void setidcategoria(string idcategoria) { this.idcategoria = idcategoria; public String getdescrizione() { return descrizione; public void setdescrizione(string descrizione) { this.descrizione = descrizione; // fine classe Categoria /* * Carrello.java package carrelloconsoleapp; import java.util.arraylist; import java.util.list; /** * * @author maurizio public class Carrello { private List<> prodotti; // struttura dati di appoggio private static int numprodotti = 0; private double totale; // totale acquisti carrello /** Costruttore public Carrello() { prodotti = new ArrayList<>(); totale = 0; /** Aggiunta di un prodotto al carrello public void aggiungi( p) { if (p==null) return; // ricerca del prodotto p int i = cerca2(p); carrello.pdf Pag. 4/9 Cozzetto
if (i==-1) { // non c'è il prodotto quindi si può aggiungere prodotti.add(p); numprodotti++; else { prodotti.get(i).setqta(prodotti.get(i).getqta()+1); // Il prodotto esiste già nel carrello. Incremento la quantità di 1 // fine aggiungi /** Overloading del metodo aggiungi public void aggiungi( p, int qta) { if (p==null qta<0) return; // ricerca del prodotto p int i = cerca2(p); if (i==-1) { // il prodotto non esiste prodotti.add(p); numprodotti++; i = prodotti.indexof(p); // ora p si trova nel carrello prodotti.get(i).setqta(prodotti.get(i).getqta()+qta); else { prodotti.get(i).setqta(prodotti.get(i).getqta()+qta); //Il prodotto è già nel carrello. Incremento la quantità di qta unità // fine aggiungi /** Rimozione di un prodotto noto il reference del prodotto public void rimuovi( p) { if (p==null) return; // ricerca di p int i = cerca2(p); if (i!=-1) { prodotti.remove(p); numprodotti--; // fine metodo rimuovi /** restituisce true se il carrello è vuoto false in caso contrario public boolean evuoto() { return prodotti.isempty(); /** Restituzione di una stringa che rappresenta il carrello public String daticarrello() { if (!this.evuoto()) { String s=" \n"; if (numprodotti>1) s=s+"nel carrello ci sono "+numprodotti+" prodotti\n"; else s=s+"nel carrello c'è "+numprodotti+" prodotto\n"; carrello.pdf Pag. 5/9 Cozzetto
for ( p: prodotti) s=s+p.visualizza()+"\n"; s = s+string.format("totale carrello: %f euro",this.gettotale()); return s; else return null; // fine metodo daticarrello /** Visualizzazione del carrello public void mostracarrello() { if (this.evuoto()) System.out.println("Il carrello è vuoto"); else System.out.println(this.datiCarrello()); /** Conteggio dei prodotti inseriti nel carrello public int getnumprodotti() { return numprodotti; /** Calcolo del totale complessivo dei prodotti nel carrello public double gettotale() { totale = 0; for ( p: prodotti) { totale = totale + p.prezzofinale(); return totale; /** Ricerca della posizione del prodotto nel carrello se il prodotto esiste public int cerca(string id) { for (int i=0; i<getnumprodotti(); i++) if (id.equals(prodotti.get(i).getid())) return i; return -1; public int cerca2( p) { return prodotti.indexof(p); // fine classe Carrello carrello.pdf Pag. 6/9 Cozzetto
/* * Main.java package carrelloconsoleapp; public class Main { public static void main(string[] args) { // scelgo una categoria Categoria c = new Categoria("LBR","Libri"); // creo 4 prodotti di quella categoria p1 = new ("P1","Java",78,6,10,1,c); p2 = new ("P2","UML",90,0,7,1,c); p3 = new ("P3","C++",80,0,9,1,c); p4 = new ("P4","Javascript",56,0,20,1,c); // creo un carrello (all'inizio è vuoto) Carrello cr = new Carrello(); // mi faccio dare la categoria del prodotto p1 Categoria cg = p1.getcategoria(); // controllo la descrizione della categoria precedente (se coincide) System.out.println("L'oggetto p1 appartiene alla categoria "+cg.getdescrizione()); // dal momento che il carrello è vuoto, adesso non dovrebbero apparire // prodotti nel carrello double tot = cr.gettotale(); System.out.println("Totale carrello "+tot); // aggiungiamo due prodotti System.out.println("Aggiungo i prodotti p1 e p2"); cr.aggiungi(p1); cr.aggiungi(p2); // il carrello non è più vuoto // aggiungo la quantità 1 al prodotto p1 System.out.println("Tento di aggiungere p1 (che esiste già): incremento di 1 la quantità"); cr.aggiungi(p1); // aggiungo nuovi prodotti System.out.println("Aggiungo i prodotti p3, p4 e p2 (p2 si trova già nel carrello, quindi incremento la quantità di 1)"); cr.aggiungi(p3); cr.aggiungi(p4); cr.aggiungi(p2); carrello.pdf Pag. 7/9 Cozzetto
// aggiungo delle quantità ai prodotti p3 e p4 System.out.println("Aggiungo al prodotto p3 4 unità e al prodotto p4 6 unità"); cr.aggiungi(p3,4); cr.aggiungi(p4,6); // cerco un prodotto noto l'id del prodotto System.out.println("Ricerca del prodotto p3 noto id"); int i = cr.cerca(p3.getid()); if (i!=-1) { System.out.println("Il prodotto p3 esiste nel carrello"); System.out.println(p3.visualizza()); else System.out.println("Il prodotto p3 non esiste nel carrello"); // creo un nuovo prodotto p5 p5 = new ("P5","Prova",20,3,4,1,c); // cerco il prodotto p5 (il prodotto non è stato ancora aggiunto) i = cr.cerca2(p5); if (i!=-1) { System.out.println("Il prodotto p5 esiste nel carrello"); System.out.println(p5.visualizza()); else System.out.println("Il prodotto p5 non esiste nel carrello"); System.out.println("Tento di rimuovere p5 che non esiste"); cr.rimuovi(p5); System.out.println("Rimuovo i prodotti p2, p3 e p4"); cr.rimuovi(p2); cr.rimuovi(p4); cr.rimuovi(p3); System.out.println("Rimuovo il prodotto p1"); cr.rimuovi(p1); // in questo momento il carrello è vuoto quindi aggiungo un prodotto System.out.println("Aggiungo p5"); cr.aggiungi(p5); // fine metodo main // fine classe Main Esempio di esecuzione: L'oggetto p1 appartiene alla categoria Libri Il carrello è vuoto Totale carrello 0.0 Aggiungo i prodotti p1 e p2 Nel carrello ci sono 2 prodotti carrello.pdf Pag. 8/9 Cozzetto
Codice: P1 Titolo: Java Quantità: 1 Categoria: Libri Prezzo: 81,120000 euro Codice: P2 Titolo: UML Quantità: 1 Categoria: Libri Prezzo: 96,300000 euro Totale carrello: 177,420000 euro Tento di aggiungere p1 (che esiste già): incremento di 1 la quantità Nel carrello ci sono 2 prodotti Codice: P1 Titolo: Java Quantità: 2 Categoria: Libri Prezzo: 162,240000 euro Codice: P2 Titolo: UML Quantità: 1 Categoria: Libri Prezzo: 96,300000 euro Totale carrello: 258,540000 euro Aggiungo i prodotti p3, p4 e p2 (p2 si trova già nel carrello, quindi incremento la quantità di 1) Nel carrello ci sono 4 prodotti Codice: P1 Titolo: Java Quantità: 2 Categoria: Libri Prezzo: 162,240000 euro Codice: P2 Titolo: UML Quantità: 2 Categoria: Libri Prezzo: 192,600000 euro Codice: P3 Titolo: C++ Quantità: 1 Categoria: Libri Prezzo: 87,200000 euro Codice: P4 Titolo: Javascript Quantità: 1 Categoria: Libri Prezzo: 67,200000 euro Totale carrello: 509,240000 euro Aggiungo al prodotto p3 4 unità e al prodotto p4 6 unità Nel carrello ci sono 4 prodotti Codice: P1 Titolo: Java Quantità: 2 Categoria: Libri Prezzo: 162,240000 euro Codice: P2 Titolo: UML Quantità: 2 Categoria: Libri Prezzo: 192,600000 euro Codice: P3 Titolo: C++ Quantità: 5 Categoria: Libri Prezzo: 436,000000 euro Codice: P4 Titolo: Javascript Quantità: 7 Categoria: Libri Prezzo: 470,400000 euro Totale carrello: 1261,240000 euro Ricerca del prodotto p3 noto id Il prodotto p3 esiste nel carrello Codice: P3 Titolo: C++ Quantità: 5 Categoria: Libri Prezzo: 436,000000 euro Il prodotto p5 non esiste nel carrello Tento di rimuovere p5 che non esiste Rimuovo i prodotti p2, p3 e p4 Rimuovo il prodotto p1 Il carrello è vuoto Aggiungo p5 Nel carrello c'è 1 prodotto Codice: P5 Titolo: Prova Quantità: 1 Categoria: Libri Prezzo: 20,200000 euro Totale carrello: 20,200000 euro BUILD SUCCESSFUL (total time: 0 seconds) carrello.pdf Pag. 9/9 Cozzetto