/**
* Un PerishableProduct etend la notion de Product en ajoutant une
* date limite de consommation. Elle ajoute egalement les methodes
* pour gerer cette date.
* @authors F.Dagnat P.Geffroy
*/
public class PerishableProduct extends Product {
/** Chaque PerishableProduct a un date de peremption */
private Date bestBeforeDate;
/** Un constructeur creant le produit et lui affectant une date de
* peremption
* @param name le nom du nouveau Product
* @param bestBeforeDate la date de peremption */
public PerishableProduct(String name, Date bestBeforeDate) {
super(name);
this.bestBeforeDate = bestBeforeDate;
}
/** indique si le produit est encore consommable */
public boolean isOutOfDate(){
Date now = new Date();
return bestBeforeDate.before(now); // ou now.after(bestBeforeDate);
}
/** retourne la date de peremption. */
public Date getBestBeforeDate(){ return bestBeforeDate; }
/** methode standard qui transforme un objet en chaine de caracteres. */
@Override // pour declarer/prevenir que c'est une *redefinition*
public String toString() {
return super.toString() + " sera perime le " + bestBeforeDate; }
public static void main(String args []) {
PerishableProduct p1, p2, p3;
Date d1, d2, d3;
d1 = new Date(2021, 12, 10);
d2 = new Date(2021, 12, 19);
d3 = new Date(2021, 12, 25);
p1 = new PerishableProduct("beurre", d1);
System.out.println("NombreproduitCrees == " + Product.getNumberCreated());
System.out.println(p1);
p2 = new PerishableProduct("lait", d2);
p3 = new PerishableProduct("buche au chocolat", d2);
if(p1.isOutOfDate())
System.out.println("Aujourd'hui " + new Date() + " " + p1 + " est perime");
else
System.out.println("Aujourd'hui " + new Date() + " " + p1 + " n'est pas perime");
System.out.println(p1);
System.out.println(p3);
System.out.println("numero de p3 :" + p3.getNumber());
System.out.println("Nombre de produits crees = " + Product.getNumberCreated());
System.out.println("Le produit " + p3.getName() + " sera perime le " +
p3.getBestBeforeDate());
}
}