From 9f9d9bd1726c366bfc3993d825eece4624a9c8fb Mon Sep 17 00:00:00 2001
From: Peter Hertkorn <peter.hertkorn@reutlingen-university.de>
Date: Thu, 12 Nov 2020 21:38:51 +0100
Subject: [PATCH] Add classes for pizzeria ingredients

---
 src/pizzeria/PizzaTestDrive.java              | 38 ++++++++++++++
 src/pizzeria/ingredients/BlackOlives.java     |  8 +++
 src/pizzeria/ingredients/Cheese.java          |  5 ++
 src/pizzeria/ingredients/Clams.java           |  5 ++
 src/pizzeria/ingredients/Dough.java           |  5 ++
 src/pizzeria/ingredients/Eggplant.java        |  8 +++
 src/pizzeria/ingredients/FreshClams.java      |  8 +++
 src/pizzeria/ingredients/FrozenClams.java     |  8 +++
 src/pizzeria/ingredients/Garlic.java          |  8 +++
 src/pizzeria/ingredients/MarinaraSauce.java   |  7 +++
 .../ingredients/MozzarellaCheese.java         |  8 +++
 src/pizzeria/ingredients/Mushroom.java        |  8 +++
 src/pizzeria/ingredients/Onion.java           |  8 +++
 src/pizzeria/ingredients/ParmesanCheese.java  |  8 +++
 src/pizzeria/ingredients/Pepperoni.java       |  5 ++
 src/pizzeria/ingredients/PepperoniPizza.java  | 17 +++++++
 src/pizzeria/ingredients/PlumTomatoSauce.java |  7 +++
 src/pizzeria/ingredients/RedPepper.java       |  8 +++
 src/pizzeria/ingredients/ReggianoCheese.java  |  8 +++
 src/pizzeria/ingredients/Sauce.java           |  5 ++
 src/pizzeria/ingredients/SlicedPepperoni.java |  8 +++
 src/pizzeria/ingredients/Spinach.java         |  8 +++
 src/pizzeria/ingredients/ThickCrustDough.java |  7 +++
 src/pizzeria/ingredients/ThinCrustDough.java  |  7 +++
 src/pizzeria/ingredients/Veggies.java         |  5 ++
 .../pizza/ChicagoStyleCheesePizza.java        | 16 ++++++
 src/pizzeria/pizza/ChicagoStyleClamPizza.java | 16 ++++++
 .../pizza/ChicagoStylePepperoniPizza.java     | 19 +++++++
 .../pizza/ChicagoStyleVeggiePizza.java        | 18 +++++++
 src/pizzeria/pizza/NYStyleCheesePizza.java    | 12 +++++
 src/pizzeria/pizza/NYStyleClamPizza.java      | 13 +++++
 src/pizzeria/pizza/NYStylePepperoniPizza.java | 17 +++++++
 src/pizzeria/pizza/NYStyleVeggiePizza.java    | 16 ++++++
 src/pizzeria/pizza/Pizza.java                 | 50 +++++++++++++++++++
 src/pizzeria/store/ChicagoPizzaStore.java     | 18 +++++++
 src/pizzeria/store/NYPizzaStore.java          | 19 +++++++
 src/pizzeria/store/PizzaStore.java            | 18 +++++++
 src/readme.txt                                |  1 -
 38 files changed, 449 insertions(+), 1 deletion(-)
 create mode 100644 src/pizzeria/PizzaTestDrive.java
 create mode 100644 src/pizzeria/ingredients/BlackOlives.java
 create mode 100644 src/pizzeria/ingredients/Cheese.java
 create mode 100644 src/pizzeria/ingredients/Clams.java
 create mode 100644 src/pizzeria/ingredients/Dough.java
 create mode 100644 src/pizzeria/ingredients/Eggplant.java
 create mode 100644 src/pizzeria/ingredients/FreshClams.java
 create mode 100644 src/pizzeria/ingredients/FrozenClams.java
 create mode 100644 src/pizzeria/ingredients/Garlic.java
 create mode 100644 src/pizzeria/ingredients/MarinaraSauce.java
 create mode 100644 src/pizzeria/ingredients/MozzarellaCheese.java
 create mode 100644 src/pizzeria/ingredients/Mushroom.java
 create mode 100644 src/pizzeria/ingredients/Onion.java
 create mode 100644 src/pizzeria/ingredients/ParmesanCheese.java
 create mode 100644 src/pizzeria/ingredients/Pepperoni.java
 create mode 100644 src/pizzeria/ingredients/PepperoniPizza.java
 create mode 100644 src/pizzeria/ingredients/PlumTomatoSauce.java
 create mode 100644 src/pizzeria/ingredients/RedPepper.java
 create mode 100644 src/pizzeria/ingredients/ReggianoCheese.java
 create mode 100644 src/pizzeria/ingredients/Sauce.java
 create mode 100644 src/pizzeria/ingredients/SlicedPepperoni.java
 create mode 100644 src/pizzeria/ingredients/Spinach.java
 create mode 100644 src/pizzeria/ingredients/ThickCrustDough.java
 create mode 100644 src/pizzeria/ingredients/ThinCrustDough.java
 create mode 100644 src/pizzeria/ingredients/Veggies.java
 create mode 100644 src/pizzeria/pizza/ChicagoStyleCheesePizza.java
 create mode 100644 src/pizzeria/pizza/ChicagoStyleClamPizza.java
 create mode 100644 src/pizzeria/pizza/ChicagoStylePepperoniPizza.java
 create mode 100644 src/pizzeria/pizza/ChicagoStyleVeggiePizza.java
 create mode 100644 src/pizzeria/pizza/NYStyleCheesePizza.java
 create mode 100644 src/pizzeria/pizza/NYStyleClamPizza.java
 create mode 100644 src/pizzeria/pizza/NYStylePepperoniPizza.java
 create mode 100644 src/pizzeria/pizza/NYStyleVeggiePizza.java
 create mode 100644 src/pizzeria/pizza/Pizza.java
 create mode 100644 src/pizzeria/store/ChicagoPizzaStore.java
 create mode 100644 src/pizzeria/store/NYPizzaStore.java
 create mode 100644 src/pizzeria/store/PizzaStore.java
 delete mode 100644 src/readme.txt

diff --git a/src/pizzeria/PizzaTestDrive.java b/src/pizzeria/PizzaTestDrive.java
new file mode 100644
index 0000000..803aabe
--- /dev/null
+++ b/src/pizzeria/PizzaTestDrive.java
@@ -0,0 +1,38 @@
+package pizzeria;
+
+import pizzeria.pizza.Pizza;
+import pizzeria.store.ChicagoPizzaStore;
+import pizzeria.store.NYPizzaStore;
+import pizzeria.store.PizzaStore;
+
+public class PizzaTestDrive {
+ 
+	public static void main(String[] args) {
+		PizzaStore nyStore = new NYPizzaStore();
+		PizzaStore chicagoStore = new ChicagoPizzaStore();
+ 
+		Pizza pizza = nyStore.orderPizza("cheese");
+		System.out.println("Ethan ordered a " + pizza.getName() + "\n");
+ 
+		pizza = chicagoStore.orderPizza("cheese");
+		System.out.println("Joel ordered a " + pizza.getName() + "\n");
+
+		pizza = nyStore.orderPizza("clam");
+		System.out.println("Ethan ordered a " + pizza.getName() + "\n");
+ 
+		pizza = chicagoStore.orderPizza("clam");
+		System.out.println("Joel ordered a " + pizza.getName() + "\n");
+
+		pizza = nyStore.orderPizza("pepperoni");
+		System.out.println("Ethan ordered a " + pizza.getName() + "\n");
+ 
+		pizza = chicagoStore.orderPizza("pepperoni");
+		System.out.println("Joel ordered a " + pizza.getName() + "\n");
+
+		pizza = nyStore.orderPizza("veggie");
+		System.out.println("Ethan ordered a " + pizza.getName() + "\n");
+ 
+		pizza = chicagoStore.orderPizza("veggie");
+		System.out.println("Joel ordered a " + pizza.getName() + "\n");
+	}
+}
diff --git a/src/pizzeria/ingredients/BlackOlives.java b/src/pizzeria/ingredients/BlackOlives.java
new file mode 100644
index 0000000..74d73d8
--- /dev/null
+++ b/src/pizzeria/ingredients/BlackOlives.java
@@ -0,0 +1,8 @@
+package pizzeria.ingredients;
+
+public class BlackOlives implements Veggies {
+
+	public String toString() {
+		return "Black Olives";
+	}
+}
diff --git a/src/pizzeria/ingredients/Cheese.java b/src/pizzeria/ingredients/Cheese.java
new file mode 100644
index 0000000..286d72d
--- /dev/null
+++ b/src/pizzeria/ingredients/Cheese.java
@@ -0,0 +1,5 @@
+package pizzeria.ingredients;
+
+public interface Cheese {
+	public String toString();
+}
diff --git a/src/pizzeria/ingredients/Clams.java b/src/pizzeria/ingredients/Clams.java
new file mode 100644
index 0000000..1acd9e0
--- /dev/null
+++ b/src/pizzeria/ingredients/Clams.java
@@ -0,0 +1,5 @@
+package pizzeria.ingredients;
+
+public interface Clams {
+	public String toString();
+}
diff --git a/src/pizzeria/ingredients/Dough.java b/src/pizzeria/ingredients/Dough.java
new file mode 100644
index 0000000..b97771a
--- /dev/null
+++ b/src/pizzeria/ingredients/Dough.java
@@ -0,0 +1,5 @@
+package pizzeria.ingredients;
+
+public interface Dough {
+	public String toString();
+}
diff --git a/src/pizzeria/ingredients/Eggplant.java b/src/pizzeria/ingredients/Eggplant.java
new file mode 100644
index 0000000..c299523
--- /dev/null
+++ b/src/pizzeria/ingredients/Eggplant.java
@@ -0,0 +1,8 @@
+package pizzeria.ingredients;
+
+public class Eggplant implements Veggies {
+
+	public String toString() {
+		return "Eggplant";
+	}
+}
diff --git a/src/pizzeria/ingredients/FreshClams.java b/src/pizzeria/ingredients/FreshClams.java
new file mode 100644
index 0000000..45f647a
--- /dev/null
+++ b/src/pizzeria/ingredients/FreshClams.java
@@ -0,0 +1,8 @@
+package pizzeria.ingredients;
+
+public class FreshClams implements Clams {
+
+	public String toString() {
+		return "Fresh Clams from Long Island Sound";
+	}
+}
diff --git a/src/pizzeria/ingredients/FrozenClams.java b/src/pizzeria/ingredients/FrozenClams.java
new file mode 100644
index 0000000..89459d9
--- /dev/null
+++ b/src/pizzeria/ingredients/FrozenClams.java
@@ -0,0 +1,8 @@
+package pizzeria.ingredients;
+
+public class FrozenClams implements Clams {
+
+	public String toString() {
+		return "Frozen Clams from Chesapeake Bay";
+	}
+}
diff --git a/src/pizzeria/ingredients/Garlic.java b/src/pizzeria/ingredients/Garlic.java
new file mode 100644
index 0000000..a6cb087
--- /dev/null
+++ b/src/pizzeria/ingredients/Garlic.java
@@ -0,0 +1,8 @@
+package pizzeria.ingredients;
+
+public class Garlic implements Veggies {
+
+	public String toString() {
+		return "Garlic";
+	}
+}
diff --git a/src/pizzeria/ingredients/MarinaraSauce.java b/src/pizzeria/ingredients/MarinaraSauce.java
new file mode 100644
index 0000000..5e660ed
--- /dev/null
+++ b/src/pizzeria/ingredients/MarinaraSauce.java
@@ -0,0 +1,7 @@
+package pizzeria.ingredients;
+
+public class MarinaraSauce implements Sauce {
+	public String toString() {
+		return "Marinara Sauce";
+	}
+}
diff --git a/src/pizzeria/ingredients/MozzarellaCheese.java b/src/pizzeria/ingredients/MozzarellaCheese.java
new file mode 100644
index 0000000..eb62fa9
--- /dev/null
+++ b/src/pizzeria/ingredients/MozzarellaCheese.java
@@ -0,0 +1,8 @@
+package pizzeria.ingredients;
+
+public class MozzarellaCheese implements Cheese {
+
+	public String toString() {
+		return "Shredded Mozzarella";
+	}
+}
diff --git a/src/pizzeria/ingredients/Mushroom.java b/src/pizzeria/ingredients/Mushroom.java
new file mode 100644
index 0000000..a79a5df
--- /dev/null
+++ b/src/pizzeria/ingredients/Mushroom.java
@@ -0,0 +1,8 @@
+package pizzeria.ingredients;
+
+public class Mushroom implements Veggies {
+
+	public String toString() {
+		return "Mushrooms";
+	}
+}
diff --git a/src/pizzeria/ingredients/Onion.java b/src/pizzeria/ingredients/Onion.java
new file mode 100644
index 0000000..2858be6
--- /dev/null
+++ b/src/pizzeria/ingredients/Onion.java
@@ -0,0 +1,8 @@
+package pizzeria.ingredients;
+
+public class Onion implements Veggies {
+
+	public String toString() {
+		return "Onion";
+	}
+}
diff --git a/src/pizzeria/ingredients/ParmesanCheese.java b/src/pizzeria/ingredients/ParmesanCheese.java
new file mode 100644
index 0000000..7f67c67
--- /dev/null
+++ b/src/pizzeria/ingredients/ParmesanCheese.java
@@ -0,0 +1,8 @@
+package pizzeria.ingredients;
+
+public class ParmesanCheese implements Cheese {
+
+	public String toString() {
+		return "Shredded Parmesan";
+	}
+}
diff --git a/src/pizzeria/ingredients/Pepperoni.java b/src/pizzeria/ingredients/Pepperoni.java
new file mode 100644
index 0000000..315d069
--- /dev/null
+++ b/src/pizzeria/ingredients/Pepperoni.java
@@ -0,0 +1,5 @@
+package pizzeria.ingredients;
+
+public interface Pepperoni {
+	public String toString();
+}
diff --git a/src/pizzeria/ingredients/PepperoniPizza.java b/src/pizzeria/ingredients/PepperoniPizza.java
new file mode 100644
index 0000000..9345487
--- /dev/null
+++ b/src/pizzeria/ingredients/PepperoniPizza.java
@@ -0,0 +1,17 @@
+package pizzeria.ingredients;
+
+public class PepperoniPizza extends Pizza {
+ 
+	public PepperoniPizza(PizzaIngredientFactory ingredientFactory) {
+		this.ingredientFactory = ingredientFactory;
+	}
+ 
+	void prepare() {
+		System.out.println("Preparing " + name);
+		dough = ingredientFactory.createDough();
+		sauce = ingredientFactory.createSauce();
+		cheese = ingredientFactory.createCheese();
+		veggies = ingredientFactory.createVeggies();
+		pepperoni = ingredientFactory.createPepperoni();
+	}
+}
diff --git a/src/pizzeria/ingredients/PlumTomatoSauce.java b/src/pizzeria/ingredients/PlumTomatoSauce.java
new file mode 100644
index 0000000..cf92466
--- /dev/null
+++ b/src/pizzeria/ingredients/PlumTomatoSauce.java
@@ -0,0 +1,7 @@
+package pizzeria.ingredients;
+
+public class PlumTomatoSauce implements Sauce {
+	public String toString() {
+		return "Tomato sauce with plum tomatoes";
+	}
+}
diff --git a/src/pizzeria/ingredients/RedPepper.java b/src/pizzeria/ingredients/RedPepper.java
new file mode 100644
index 0000000..0dd71d7
--- /dev/null
+++ b/src/pizzeria/ingredients/RedPepper.java
@@ -0,0 +1,8 @@
+package pizzeria.ingredients;
+
+public class RedPepper implements Veggies {
+
+	public String toString() {
+		return "Red Pepper";
+	}
+}
diff --git a/src/pizzeria/ingredients/ReggianoCheese.java b/src/pizzeria/ingredients/ReggianoCheese.java
new file mode 100644
index 0000000..6a9349e
--- /dev/null
+++ b/src/pizzeria/ingredients/ReggianoCheese.java
@@ -0,0 +1,8 @@
+package pizzeria.ingredients;
+
+public class ReggianoCheese implements Cheese {
+
+	public String toString() {
+		return "Reggiano Cheese";
+	}
+}
diff --git a/src/pizzeria/ingredients/Sauce.java b/src/pizzeria/ingredients/Sauce.java
new file mode 100644
index 0000000..3e40c09
--- /dev/null
+++ b/src/pizzeria/ingredients/Sauce.java
@@ -0,0 +1,5 @@
+package pizzeria.ingredients;
+
+public interface Sauce {
+	public String toString();
+}
diff --git a/src/pizzeria/ingredients/SlicedPepperoni.java b/src/pizzeria/ingredients/SlicedPepperoni.java
new file mode 100644
index 0000000..656796d
--- /dev/null
+++ b/src/pizzeria/ingredients/SlicedPepperoni.java
@@ -0,0 +1,8 @@
+package pizzeria.ingredients;
+
+public class SlicedPepperoni implements Pepperoni {
+
+	public String toString() {
+		return "Sliced Pepperoni";
+	}
+}
diff --git a/src/pizzeria/ingredients/Spinach.java b/src/pizzeria/ingredients/Spinach.java
new file mode 100644
index 0000000..fd44c88
--- /dev/null
+++ b/src/pizzeria/ingredients/Spinach.java
@@ -0,0 +1,8 @@
+package pizzeria.ingredients;
+
+public class Spinach implements Veggies {
+
+	public String toString() {
+		return "Spinach";
+	}
+}
diff --git a/src/pizzeria/ingredients/ThickCrustDough.java b/src/pizzeria/ingredients/ThickCrustDough.java
new file mode 100644
index 0000000..a712a31
--- /dev/null
+++ b/src/pizzeria/ingredients/ThickCrustDough.java
@@ -0,0 +1,7 @@
+package pizzeria.ingredients;
+
+public class ThickCrustDough implements Dough {
+	public String toString() {
+		return "ThickCrust style extra thick crust dough";
+	}
+}
diff --git a/src/pizzeria/ingredients/ThinCrustDough.java b/src/pizzeria/ingredients/ThinCrustDough.java
new file mode 100644
index 0000000..6fa03a4
--- /dev/null
+++ b/src/pizzeria/ingredients/ThinCrustDough.java
@@ -0,0 +1,7 @@
+package pizzeria.ingredients;
+
+public class ThinCrustDough implements Dough {
+	public String toString() {
+		return "Thin Crust Dough";
+	}
+}
diff --git a/src/pizzeria/ingredients/Veggies.java b/src/pizzeria/ingredients/Veggies.java
new file mode 100644
index 0000000..a8a45a7
--- /dev/null
+++ b/src/pizzeria/ingredients/Veggies.java
@@ -0,0 +1,5 @@
+package pizzeria.ingredients;
+
+public interface Veggies {
+	public String toString();
+}
diff --git a/src/pizzeria/pizza/ChicagoStyleCheesePizza.java b/src/pizzeria/pizza/ChicagoStyleCheesePizza.java
new file mode 100644
index 0000000..c37121c
--- /dev/null
+++ b/src/pizzeria/pizza/ChicagoStyleCheesePizza.java
@@ -0,0 +1,16 @@
+package pizzeria.pizza;
+
+public class ChicagoStyleCheesePizza extends Pizza {
+
+	public ChicagoStyleCheesePizza() { 
+		name = "Chicago Style Deep Dish Cheese Pizza";
+		dough = "Extra Thick Crust Dough";
+		sauce = "Plum Tomato Sauce";
+ 
+		toppings.add("Shredded Mozzarella Cheese");
+	}
+ 
+	public void cut() {
+		System.out.println("Cutting the pizza into square slices");
+	}
+}
diff --git a/src/pizzeria/pizza/ChicagoStyleClamPizza.java b/src/pizzeria/pizza/ChicagoStyleClamPizza.java
new file mode 100644
index 0000000..c5bae96
--- /dev/null
+++ b/src/pizzeria/pizza/ChicagoStyleClamPizza.java
@@ -0,0 +1,16 @@
+package pizzeria.pizza;
+
+public class ChicagoStyleClamPizza extends Pizza {
+	public ChicagoStyleClamPizza() {
+		name = "Chicago Style Clam Pizza";
+		dough = "Extra Thick Crust Dough";
+		sauce = "Plum Tomato Sauce";
+ 
+		toppings.add("Shredded Mozzarella Cheese");
+		toppings.add("Frozen Clams from Chesapeake Bay");
+	}
+ 
+	public void cut() {
+		System.out.println("Cutting the pizza into square slices");
+	}
+}
diff --git a/src/pizzeria/pizza/ChicagoStylePepperoniPizza.java b/src/pizzeria/pizza/ChicagoStylePepperoniPizza.java
new file mode 100644
index 0000000..ae37b1f
--- /dev/null
+++ b/src/pizzeria/pizza/ChicagoStylePepperoniPizza.java
@@ -0,0 +1,19 @@
+package pizzeria.pizza;
+
+public class ChicagoStylePepperoniPizza extends Pizza {
+	public ChicagoStylePepperoniPizza() {
+		name = "Chicago Style Pepperoni Pizza";
+		dough = "Extra Thick Crust Dough";
+		sauce = "Plum Tomato Sauce";
+ 
+		toppings.add("Shredded Mozzarella Cheese");
+		toppings.add("Black Olives");
+		toppings.add("Spinach");
+		toppings.add("Eggplant");
+		toppings.add("Sliced Pepperoni");
+	}
+ 
+	public void cut() {
+		System.out.println("Cutting the pizza into square slices");
+	}
+}
diff --git a/src/pizzeria/pizza/ChicagoStyleVeggiePizza.java b/src/pizzeria/pizza/ChicagoStyleVeggiePizza.java
new file mode 100644
index 0000000..546b168
--- /dev/null
+++ b/src/pizzeria/pizza/ChicagoStyleVeggiePizza.java
@@ -0,0 +1,18 @@
+package pizzeria.pizza;
+
+public class ChicagoStyleVeggiePizza extends Pizza {
+	public ChicagoStyleVeggiePizza() {
+		name = "Chicago Deep Dish Veggie Pizza";
+		dough = "Extra Thick Crust Dough";
+		sauce = "Plum Tomato Sauce";
+ 
+		toppings.add("Shredded Mozzarella Cheese");
+		toppings.add("Black Olives");
+		toppings.add("Spinach");
+		toppings.add("Eggplant");
+	}
+ 
+	public void cut() {
+		System.out.println("Cutting the pizza into square slices");
+	}
+}
diff --git a/src/pizzeria/pizza/NYStyleCheesePizza.java b/src/pizzeria/pizza/NYStyleCheesePizza.java
new file mode 100644
index 0000000..ac5055d
--- /dev/null
+++ b/src/pizzeria/pizza/NYStyleCheesePizza.java
@@ -0,0 +1,12 @@
+package pizzeria.pizza;
+
+public class NYStyleCheesePizza extends Pizza {
+
+	public NYStyleCheesePizza() { 
+		name = "NY Style Sauce and Cheese Pizza";
+		dough = "Thin Crust Dough";
+		sauce = "Marinara Sauce";
+ 
+		toppings.add("Grated Reggiano Cheese");
+	}
+}
diff --git a/src/pizzeria/pizza/NYStyleClamPizza.java b/src/pizzeria/pizza/NYStyleClamPizza.java
new file mode 100644
index 0000000..b6635b0
--- /dev/null
+++ b/src/pizzeria/pizza/NYStyleClamPizza.java
@@ -0,0 +1,13 @@
+package pizzeria.pizza;
+
+public class NYStyleClamPizza extends Pizza {
+
+	public NYStyleClamPizza() {
+		name = "NY Style Clam Pizza";
+		dough = "Thin Crust Dough";
+		sauce = "Marinara Sauce";
+ 
+		toppings.add("Grated Reggiano Cheese");
+		toppings.add("Fresh Clams from Long Island Sound");
+	}
+}
diff --git a/src/pizzeria/pizza/NYStylePepperoniPizza.java b/src/pizzeria/pizza/NYStylePepperoniPizza.java
new file mode 100644
index 0000000..f036f68
--- /dev/null
+++ b/src/pizzeria/pizza/NYStylePepperoniPizza.java
@@ -0,0 +1,17 @@
+package pizzeria.pizza;
+
+public class NYStylePepperoniPizza extends Pizza {
+
+	public NYStylePepperoniPizza() {
+		name = "NY Style Pepperoni Pizza";
+		dough = "Thin Crust Dough";
+		sauce = "Marinara Sauce";
+ 
+		toppings.add("Grated Reggiano Cheese");
+		toppings.add("Sliced Pepperoni");
+		toppings.add("Garlic");
+		toppings.add("Onion");
+		toppings.add("Mushrooms");
+		toppings.add("Red Pepper");
+	}
+}
diff --git a/src/pizzeria/pizza/NYStyleVeggiePizza.java b/src/pizzeria/pizza/NYStyleVeggiePizza.java
new file mode 100644
index 0000000..e3d5247
--- /dev/null
+++ b/src/pizzeria/pizza/NYStyleVeggiePizza.java
@@ -0,0 +1,16 @@
+package pizzeria.pizza;
+
+public class NYStyleVeggiePizza extends Pizza {
+
+	public NYStyleVeggiePizza() {
+		name = "NY Style Veggie Pizza";
+		dough = "Thin Crust Dough";
+		sauce = "Marinara Sauce";
+ 
+		toppings.add("Grated Reggiano Cheese");
+		toppings.add("Garlic");
+		toppings.add("Onion");
+		toppings.add("Mushrooms");
+		toppings.add("Red Pepper");
+	}
+}
diff --git a/src/pizzeria/pizza/Pizza.java b/src/pizzeria/pizza/Pizza.java
new file mode 100644
index 0000000..191fc04
--- /dev/null
+++ b/src/pizzeria/pizza/Pizza.java
@@ -0,0 +1,50 @@
+package pizzeria.pizza;
+
+import java.util.ArrayList;
+
+public abstract class Pizza {
+	String name;
+	String dough;
+	String sauce;
+	ArrayList<String> toppings = new ArrayList<String>();
+ 
+	public void prepare() {
+		System.out.println("Preparing " + name);
+		System.out.println("Tossing dough...");
+		System.out.println("Adding sauce...");
+		System.out.println("Adding toppings: ");
+		for (int i = 0; i < toppings.size(); i++) {
+			System.out.println("   " + toppings.get(i));
+		}
+	}
+  
+	public void bake() {
+		System.out.println("Bake for 25 minutes at 350");
+	}
+ 
+	public void cut() {
+		System.out.println("Cutting the pizza into diagonal slices");
+	}
+  
+	public void box() {
+		System.out.println("Place pizza in official PizzaStore box");
+	}
+ 
+	public String getName() {
+		return name;
+	}
+
+	public String toString() {
+		StringBuffer display = new StringBuffer();
+		display.append("---- " + name + " ----\n");
+		display.append(dough + "\n");
+		display.append(sauce + "\n");
+		for (int i = 0; i < toppings.size(); i++) {
+			display.append((String )toppings.get(i) + "\n");
+		}
+		return display.toString();
+	}
+}
+
+ 
+ 
diff --git a/src/pizzeria/store/ChicagoPizzaStore.java b/src/pizzeria/store/ChicagoPizzaStore.java
new file mode 100644
index 0000000..b3518a9
--- /dev/null
+++ b/src/pizzeria/store/ChicagoPizzaStore.java
@@ -0,0 +1,18 @@
+package pizzeria.store;
+
+import pizzeria.pizza.*;
+
+public class ChicagoPizzaStore extends PizzaStore {
+
+	Pizza createPizza(String item) {
+        	if (item.equals("cheese")) {
+            		return new ChicagoStyleCheesePizza();
+        	} else if (item.equals("veggie")) {
+        	    	return new ChicagoStyleVeggiePizza();
+        	} else if (item.equals("clam")) {
+        	    	return new ChicagoStyleClamPizza();
+        	} else if (item.equals("pepperoni")) {
+            		return new ChicagoStylePepperoniPizza();
+        	} else return null;
+	}
+}
diff --git a/src/pizzeria/store/NYPizzaStore.java b/src/pizzeria/store/NYPizzaStore.java
new file mode 100644
index 0000000..301ffcb
--- /dev/null
+++ b/src/pizzeria/store/NYPizzaStore.java
@@ -0,0 +1,19 @@
+package pizzeria.store;
+
+import pizzeria.pizza.*;
+
+public class NYPizzaStore extends PizzaStore {
+
+	Pizza createPizza(String item) {
+		if (item.equals("cheese")) {
+			return new NYStyleCheesePizza();
+		} else if (item.equals("veggie")) {
+			return new NYStyleVeggiePizza();
+		} else if (item.equals("clam")) {
+			return new NYStyleClamPizza();
+		} else if (item.equals("pepperoni")) {
+			return new NYStylePepperoniPizza();
+		} else return null;
+	}
+	
+}
diff --git a/src/pizzeria/store/PizzaStore.java b/src/pizzeria/store/PizzaStore.java
new file mode 100644
index 0000000..c683329
--- /dev/null
+++ b/src/pizzeria/store/PizzaStore.java
@@ -0,0 +1,18 @@
+package pizzeria.store;
+
+import pizzeria.pizza.Pizza;
+
+public abstract class PizzaStore {
+ 
+	abstract Pizza createPizza(String item);
+ 
+	public final Pizza orderPizza(String type) {
+		Pizza pizza = createPizza(type);
+		System.out.println("--- Making a " + pizza.getName() + " ---");
+		pizza.prepare();
+		pizza.bake();
+		pizza.cut();
+		pizza.box();
+		return pizza;
+	}
+}
diff --git a/src/readme.txt b/src/readme.txt
deleted file mode 100644
index 1724e3d..0000000
--- a/src/readme.txt
+++ /dev/null
@@ -1 +0,0 @@
-Source Code für die Beispiele und Übungsaufgaben
\ No newline at end of file
-- 
GitLab