From d311e18b127cfa0320a1d9a790e9bd47912739d6 Mon Sep 17 00:00:00 2001 From: Simone Argenziano Date: Fri, 10 Jan 2014 21:29:56 +0100 Subject: [PATCH] Creazione Classi: - PrestazioniDopera2 (Attributi+Metodi setter/getter) Aggiunti gli attributi richiesti alla classe BeniDiConsumo2 Implementate le politiche di sconto generiche per gli articoli con scadenza nell'ultima settimana Implementata scadenza specifica per le Cene. --- it/unisa/info13d/Articoli/BeniDiConsumo2.java | 140 +++++++++++++ .../info13d/Articoli/CeneInRistoranti2.java | 188 ++++++++++++++++++ .../info13d/Articoli/PrestazioniDopera2.java | 82 ++++++++ it/unisa/info13d/Articoli/Utilizzabile2.java | 4 + it/unisa/info13d/Articoli/Vacanze2.java | 139 +++++++++++++ 5 files changed, 553 insertions(+) create mode 100644 it/unisa/info13d/Articoli/BeniDiConsumo2.java create mode 100644 it/unisa/info13d/Articoli/CeneInRistoranti2.java create mode 100644 it/unisa/info13d/Articoli/PrestazioniDopera2.java create mode 100644 it/unisa/info13d/Articoli/Vacanze2.java diff --git a/it/unisa/info13d/Articoli/BeniDiConsumo2.java b/it/unisa/info13d/Articoli/BeniDiConsumo2.java new file mode 100644 index 0000000..59edcfc --- /dev/null +++ b/it/unisa/info13d/Articoli/BeniDiConsumo2.java @@ -0,0 +1,140 @@ +package it.unisa.info13d.Articoli; + +import java.io.Serializable; +import java.util.GregorianCalendar; + +/** + * Created with MONSTER. + * User: xgiovio + * Date: 16/12/13 + * Time: 18.46 + */ + +/** + * + * Classe che rappresenta un bene di consumo all'interno del catalogo. + * + */ +public class BeniDiConsumo2 extends Utilizzabile2 implements Utilizzabile, Serializable { + + /** + * Costruttore che inizializza i valori del bene di consumo + * + * @param idBene + * @param descrizioneBene + * @param prezzoBene + * @param beniInStock + */ + public BeniDiConsumo2 ( int idBene, String descrizioneBene, double prezzoBene, int beniInStock ){ + this.idBene=idBene; + this.descrizioneBene=descrizioneBene; + this.prezzoBene=prezzoBene; + this.beniInStock=beniInStock; + } + + @Override + public boolean eAcquistabile() { + if(beniVenduti=7 ) + return prezzoBene*0.10; //Prezzo scontato del 10% + else + return prezzoBene; //Nessuno sconto applicabile + } + + private int idBene; + private int beniInStock; //Numero totale di prodotti da vendere + private int beniVenduti; //Numero di prodotti venduti + private double prezzoBene; + private double giudizioFornitore; //Giudizio sul fornitore che varia da 1 a 5 + private GregorianCalendar scadenza = new GregorianCalendar(99999,0,1); + private String fornitore; + private String descrizioneBene; + +} diff --git a/it/unisa/info13d/Articoli/CeneInRistoranti2.java b/it/unisa/info13d/Articoli/CeneInRistoranti2.java new file mode 100644 index 0000000..acba769 --- /dev/null +++ b/it/unisa/info13d/Articoli/CeneInRistoranti2.java @@ -0,0 +1,188 @@ +package it.unisa.info13d.Articoli; + +import java.io.Serializable; +import java.util.GregorianCalendar; + +/** + * Created with MONSTER. + * User: xgiovio + * Date: 16/12/13 + * Time: 18.47 + */ + +/** + * + * Classe che rappresenta una cena all'interno del catalogo. + * + */ +public class CeneInRistoranti2 extends Utilizzabile2 implements Utilizzabile, Serializable{ + + /** + * + * @param idCena - l'id della cena + * @param nomeRistorante - il ristorante in cui usufruire dell'offerta + * @param luogo - Ubicazione del ristorante + * @param descrizione_cena - descrizione della cena (cosa viene offerto dal ristorante) + * @param costoPerPersona - costo per singola persona + * @param dataScadenzaOffertaCena - scadenza dell'offerta + * @param numCenedaVendere - offerte disponibile per la cena + */ + + public CeneInRistoranti2(int idCena, String nomeRistorante, String luogo, String descrizione_cena, double costoPerPersona, GregorianCalendar dataScadenzaOffertaCena, int numCenedaVendere){ + this.idCena=idCena; + this.nomeRistorante=nomeRistorante; + this.luogo=luogo; + this.descrizione_cena=descrizione_cena; + this.costoPerPersona=costoPerPersona; + this.dataScadenzaOffertaCena=dataScadenzaOffertaCena; + this.numCenedaVendere=numCenedaVendere; + } + + @Override + public boolean eAcquistabile() { + if((dataScadenzaOffertaCena.before(new GregorianCalendar())) && (numCenedaVendere>ceneVendute)) + return false; + return true; + } + + /** + * @return - l'id della cena + */ + public int getIdCena() { + return idCena; + } + + /** + * @return - in nome del ristorante + */ + public String getNomeRistorante() { + return nomeRistorante; + } + + /** + * @return - l'ubicazione del ristorante + */ + public String getLuogo() { + return luogo; + } + + /** + * @return - descrizione della cena + */ + public String getDescrizione_cena() { + return descrizione_cena; + } + + /** + * @return - il costo per ogni singola persona + */ + public double getCostoPerPersona() { + return costoPerPersona; + } + + /** + * @return - data di scadenza dell'offerta + */ + public GregorianCalendar getDataScadenzaOffertaCena() { + return dataScadenzaOffertaCena; + } + + /** + * @return - il numero di cene ancora disponibili per la vendita + */ + public int getNumCenedaVendere() { + return numCenedaVendere; + } + + /** + * @return - il numero di cene vendute + */ + public int getCeneVendute() { + return ceneVendute; + } + + /** + * @param nomeRistorante - setta il nome del ristorante + */ + public void setNomeRistorante(String nomeRistorante) { + this.nomeRistorante = nomeRistorante; + } + + /** + * @param luogo - setta il l'ubicazione del ristorante + */ + public void setLuogo(String luogo) { + this.luogo = luogo; + } + + /** + * @param descrizione_cena - setta la descrizione della cena (Esempio: pizza margherita, patate e dolce) + */ + public void setDescrizione_cena(String descrizione_cena) { + this.descrizione_cena = descrizione_cena; + } + + /** + * @param costoPerPersona - setta il costo per singola persona + */ + public void setCostoPerPersona(double costoPerPersona) { + this.costoPerPersona = costoPerPersona; + } + + /** + * @param dataScadenzaOffertaCena - setta la data di scadenza per l'offerta + */ + public void setDataScadenzaOffertaCena(GregorianCalendar dataScadenzaOffertaCena) { + this.dataScadenzaOffertaCena = dataScadenzaOffertaCena; + } + + /** + * @param numCenedaVendere - setta il numero di cene da vendere + */ + public void setNumCenedaVendere(int numCenedaVendere) { + this.numCenedaVendere = numCenedaVendere; + } + + /** + * Questo metodo all'atto dell'acquisto da parte di un utente, decrementa le cene da vendere ed incrementa quelle vendute + */ + public void setCeneVendute() + { + numCenedaVendere--; + ceneVendute++; + } + + @Override + /** + * Questo metodo stabilisce se è possibile applicare o meno uno sconto alle cene. + * @return Restitisce il prezzo originale se la politica di socnto non è applicabile, altrienti restituisce il prezzo scontato del 10%. + */ + public double get_prezzo_scontato() { + GregorianCalendar dataOdierna = new GregorianCalendar(2008, 11, 18); + + long milliseconds1 = dataOdierna.getTimeInMillis(); + long milliseconds2 = dataScadenzaOffertaCena.getTimeInMillis(); + + long diff = milliseconds2 - milliseconds1; + long diffGiorni = diff / (24 * 60 * 60 * 1000); //differenza in giorni + + if( diffGiorni>=7 ) + { + if( ceneVendute >= ( numCenedaVendere/2 ) ) + return costoPerPersona * ( 0.2 ); //il prezzo viene scontato del 20% (10%+10%) + else + return costoPerPersona * ( 0.1 ); //il prezzo viene scontato del 10% + } + else + return costoPerPersona; + } + + private int idCena; + private String nomeRistorante; + private String luogo; + private String descrizione_cena; + private double costoPerPersona; + private GregorianCalendar dataScadenzaOffertaCena; + private int numCenedaVendere; + private int ceneVendute; +} \ No newline at end of file diff --git a/it/unisa/info13d/Articoli/PrestazioniDopera2.java b/it/unisa/info13d/Articoli/PrestazioniDopera2.java new file mode 100644 index 0000000..ad8df52 --- /dev/null +++ b/it/unisa/info13d/Articoli/PrestazioniDopera2.java @@ -0,0 +1,82 @@ +package it.unisa.info13d.Articoli; + +public class PrestazioniDopera2 extends Utilizzabile2{ + + + + @Override + public boolean eAcquistabile() { + // TODO Auto-generated method stub + return false; + } + @Override + public double get_prezzo_scontato() { + return 0; + } + + + + public int getIdPrOpera() { + return idPrOpera; + } + + public void setIdPrOpera(int idPrOpera) { + this.idPrOpera = idPrOpera; + } + + public int getGiudizioFornitore() { + return giudizioFornitore; + } + + public void setGiudizioFornitore(int giudizioFornitore) { + this.giudizioFornitore = giudizioFornitore; + } + + public int getPrestazioniVendute() { + return prestazioniVendute; + } + + public void setPrestazioniVendute(int prestazioniVendute) { + this.prestazioniVendute = prestazioniVendute; + } + + public double getPrezzoPrestazione() { + return prezzoPrestazione; + } + + public void setPrezzoPrestazione(double prezzoPrestazione) { + this.prezzoPrestazione = prezzoPrestazione; + } + + public String getLocalita() { + return Localita; + } + + public void setLocalita(String localita) { + Localita = localita; + } + + public String getDescrizione() { + return Descrizione; + } + + public void setDescrizione(String descrizione) { + Descrizione = descrizione; + } + + public String getFornitore() { + return Fornitore; + } + + public void setFornitore(String fornitore) { + Fornitore = fornitore; + } + + private int idPrOpera; + private int giudizioFornitore; + private int prestazioniVendute; + private double prezzoPrestazione; + private String Localita; + private String Descrizione; + private String Fornitore; +} \ No newline at end of file diff --git a/it/unisa/info13d/Articoli/Utilizzabile2.java b/it/unisa/info13d/Articoli/Utilizzabile2.java index 309d3c9..d6f8628 100644 --- a/it/unisa/info13d/Articoli/Utilizzabile2.java +++ b/it/unisa/info13d/Articoli/Utilizzabile2.java @@ -11,6 +11,10 @@ package it.unisa.info13d.Articoli; public abstract class Utilizzabile2 { public abstract boolean eAcquistabile(); + /** + * + * @return metodo per l'applicazione delle politiche di sconto relative ad un articolo. + */ public abstract double get_prezzo_scontato(); diff --git a/it/unisa/info13d/Articoli/Vacanze2.java b/it/unisa/info13d/Articoli/Vacanze2.java new file mode 100644 index 0000000..e2ad8d0 --- /dev/null +++ b/it/unisa/info13d/Articoli/Vacanze2.java @@ -0,0 +1,139 @@ +package it.unisa.info13d.Articoli; + +import java.io.Serializable; +import java.util.GregorianCalendar; + +/** + * Created with MONSTER. + * User: xgiovio + * Date: 16/12/13 + * Time: 18.45 + */ +public class Vacanze2 extends Utilizzabile2 implements Utilizzabile, Serializable{ + + /** + * Costruttore per inizialiazzare una Vacanza + * + * @param idViaggio + * @param localitaViaggio + * @param dataPartenzaViaggio + * @param scadenzaOfferta + * @param prezzoPSingola + */ + public Vacanze2(int idViaggio, String localitaViaggio, GregorianCalendar dataPartenzaViaggio, GregorianCalendar scadenzaOfferta, double prezzoPSingola){ + this.idViaggio = idViaggio; + this.localitaViaggio = localitaViaggio; + this.dataPartenzaViaggio = dataPartenzaViaggio; + this.scadenzaOfferta = scadenzaOfferta; + this.prezzoPSingola = prezzoPSingola; + } + + @Override + public boolean eAcquistabile() { + if(scadenzaOfferta.before(new GregorianCalendar())) //L'offerta della vacanza scade se la data sua scadenza e successiva a quella della data odierna + return false; + return true; + } + + /** + * @return - id del viaggio + */ + public int getIdViaggio() { + return idViaggio; + } + + /** + * @return - localita' del viaggio + */ + public String getLocalitaViaggio() { + return localitaViaggio; + } + + /** + * @return - data di partenza + */ + public GregorianCalendar getDataPartenzaViaggio() { + return dataPartenzaViaggio; + } + + /** + * @return - data di scadenza dell'offerta + */ + public GregorianCalendar getScadenzaOfferta() { + return scadenzaOfferta; + } + + /** + * @return - il prezzo per singola persona + */ + public double getPrezzoPSingola() { + return prezzoPSingola; + } + + /** + * @return - il numero di viaggi venduti + */ + public int getViaggiVenduti() { + return viaggiVenduti; + } + + /** + * @param localitaViaggio - setta la localit' del viaggio + */ + public void setLocalitaViaggio(String localitaViaggio) { + this.localitaViaggio = localitaViaggio; + } + + /** + * @param dataPartenzaViaggio - setta la data di patenza del viaggio + */ + public void setDataPartenzaViaggio(GregorianCalendar dataPartenzaViaggio) { + this.dataPartenzaViaggio = dataPartenzaViaggio; + } + + /** + * @param scadenzaOfferta - setta la data di scadenza dell'offerta della vacanza + */ + public void setScadenzaOfferta(GregorianCalendar scadenzaOfferta) { + this.scadenzaOfferta = scadenzaOfferta; + } + + /** + * @param prezzoPSingola - setta il prezzo per singola persona + */ + public void setPrezzoPSingola(double prezzoPSingola) { + this.prezzoPSingola = prezzoPSingola; + } + + /** + * Questo metodo incrementa, dopo ogni acquisto, il numero di viaggi venduti + */ + public void setViaggiVenduti() + { + viaggiVenduti++; + } + + @Override + public double get_prezzo_scontato() { + GregorianCalendar dataOdierna = new GregorianCalendar(2008, 11, 18); + + long milliseconds1 = dataOdierna.getTimeInMillis(); + long milliseconds2 = scadenzaOfferta.getTimeInMillis(); + + long diff = milliseconds2 - milliseconds1; + long diffGiorni = diff / (24 * 60 * 60 * 1000); //differenza in giorni + + if( diffGiorni>=7 ) + return prezzoPSingola*0.10; //Prezzo scontato del 10% + else + return prezzoPSingola; //Nessuno sconto applicabile + } + + private int idViaggio; + private String localitaViaggio; + private GregorianCalendar dataPartenzaViaggio; + private GregorianCalendar scadenzaOfferta; + private double prezzoPSingola; + private int viaggiVenduti; + +}