From 7176669aad9208ff881849fc56d038b510f5a5d0 Mon Sep 17 00:00:00 2001 From: Nicolas Fley <nicolas.fley@student.ecp.fr> Date: Wed, 5 Apr 2017 17:24:33 +0200 Subject: [PATCH] visitors fixed & Order added --- src/Item/Dish.java | 11 ++++++++-- src/Item/Meal.java | 22 +++++++++++++------ src/Item/VisitablePrice.java | 2 +- src/Item/VisitorPrice.java | 2 +- src/Order/Order.java | 41 ++++++++++++++++++++++++++++++++++++ 5 files changed, 67 insertions(+), 11 deletions(-) create mode 100644 src/Order/Order.java diff --git a/src/Item/Dish.java b/src/Item/Dish.java index b6669d4..ac68bfe 100644 --- a/src/Item/Dish.java +++ b/src/Item/Dish.java @@ -29,7 +29,14 @@ public class Dish extends Item implements VisitablePrice{ /** VISIT LOGIC **/ - public double acceptPrice(VisitorPrice v) { - return v.visitPrice(this); + public void acceptPrice(VisitorPrice v) { + if(v instanceof Meal){ + Meal vMeal = (Meal) v; + vMeal.setPrice(vMeal.getPrice()+price); + } + if(v instanceof Dish){ + Dish vDish = (Dish) v; + vDish.setPrice(vDish.getPrice()+price); + } } } diff --git a/src/Item/Meal.java b/src/Item/Meal.java index e1ae4ef..c6741ad 100644 --- a/src/Item/Meal.java +++ b/src/Item/Meal.java @@ -2,6 +2,8 @@ package Item; import java.util.ArrayList; +import Order.Order; + /** * @@ -88,6 +90,9 @@ public abstract class Meal extends Item implements VisitorPrice{ public double getPrice(){ return price; } + public void setPrice(double _price){ + price = _price; + } public ArrayList<Dish> getListDish() { return listDish; } @@ -102,16 +107,19 @@ public abstract class Meal extends Item implements VisitorPrice{ /** VISIT LOGIC **/ @Override - public double acceptPrice(VisitorPrice v){ - price=0; - for(Dish item: listDish){ - item.acceptPrice(this); + public void acceptPrice(VisitorPrice v){ + price=0; // reseting price + if(v instanceof Order){ + Order vOrder = (Order) v; + for(Dish item: listDish){ + item.acceptPrice(this); + } + vOrder.setPrice(vOrder.getPrice()+this.getPrice()*0.95); } - return this.getPrice(); } @Override - public double visitPrice(VisitablePrice v) { - return v.acceptPrice(this); + public void visitPrice(VisitablePrice v) { + v.acceptPrice(this); } } diff --git a/src/Item/VisitablePrice.java b/src/Item/VisitablePrice.java index 0628659..9c21992 100644 --- a/src/Item/VisitablePrice.java +++ b/src/Item/VisitablePrice.java @@ -1,5 +1,5 @@ package Item; public interface VisitablePrice { - public double acceptPrice(VisitorPrice v); + public void acceptPrice(VisitorPrice v); } diff --git a/src/Item/VisitorPrice.java b/src/Item/VisitorPrice.java index fd8f4f1..f60047f 100644 --- a/src/Item/VisitorPrice.java +++ b/src/Item/VisitorPrice.java @@ -1,5 +1,5 @@ package Item; public interface VisitorPrice { - public double visitPrice(VisitablePrice v); + public void visitPrice(VisitablePrice v); } diff --git a/src/Order/Order.java b/src/Order/Order.java new file mode 100644 index 0000000..f35b236 --- /dev/null +++ b/src/Order/Order.java @@ -0,0 +1,41 @@ +package Order; + +import java.util.ArrayList; + +import Item.Dish; +import Item.Meal; +import Item.VisitablePrice; +import Item.VisitorPrice; + +public class Order implements VisitorPrice{ + + private double price; + + ArrayList<Dish> listDish; + ArrayList<Meal> listMeal; + + public Order() { + // TODO Auto-generated constructor stub + } + + /** GETTER AND SETTER **/ + + public double getPrice() { + return price; + } + + public void setPrice(double price) { + this.price = price; + } + + @Override + public void visitPrice(VisitablePrice v) { + for(Dish dish:listDish){ + dish.acceptPrice(this); + } + for(Meal meal:listMeal){ + meal.acceptPrice(this); + } + } + +} -- GitLab