Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions assignments/iterator_pattern/BreakfastMenu.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package assignments.iterator_pattern;

import java.util.List;

//Concrete Iterable Menu w/ ArrayList
public class BreakfastMenu implements Menu {
private List<MenuItem> items;

public BreakfastMenu(List<MenuItem> items) {
this.items = items;
}

@Override
public void addItem(String name, String description, boolean vegetarian, double price) {
MenuItem item = new MenuItem(name, description, vegetarian, price);
items.add(item);
}

@Override
public BreakfastMenuIterator createIterator() {
return new BreakfastMenuIterator(items);
}
}
28 changes: 28 additions & 0 deletions assignments/iterator_pattern/BreakfastMenuIterator.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package assignments.iterator_pattern;

import java.util.List;
import java.util.NoSuchElementException;

//Concrete Iterator for Breakfast
public class BreakfastMenuIterator implements MyIterator {
private int currentIndex = 0;
private List<MenuItem> menuItems;

public BreakfastMenuIterator(List<MenuItem> menuItems) {
this.menuItems = menuItems;
}

@Override
public boolean hasNext() {
return currentIndex < menuItems.size();
}

@Override
public MenuItem next() {
if (!hasNext()) {
throw new NoSuchElementException();
}

return menuItems.get(currentIndex++);
}
}
30 changes: 30 additions & 0 deletions assignments/iterator_pattern/DinnerMenu.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package assignments.iterator_pattern;

//Concrete Iterable w/ Array
public class DinnerMenu implements Menu {
private int capacity = 0;
private MenuItem[] items = new MenuItem[capacity];

public DinnerMenu(MenuItem[] items) {
this.items = items;
}

@Override
public void addItem(String name, String description, boolean vegetarian, double price) {
MenuItem item = new MenuItem(name, description, vegetarian, price);
MenuItem[] increase = new MenuItem[capacity + 1];

for (int i = 0; i < increase.length; i++) {
if (i != increase.length) {
increase[i] = items[i];
} else {
increase[i] = item;
}
}
}

@Override
public DinnerMenuIterator createIterator() {
return new DinnerMenuIterator(items);
}
}
31 changes: 31 additions & 0 deletions assignments/iterator_pattern/DinnerMenuIterator.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package assignments.iterator_pattern;

import java.util.NoSuchElementException;

//Concrete Iterator for Dinner
public class DinnerMenuIterator implements MyIterator {
private int currentIndex = 0;
private MenuItem[] menuItems;

public DinnerMenuIterator(MenuItem[] menuItems) {
this.menuItems = menuItems;
}

@Override
public boolean hasNext() {
return currentIndex < menuItems.length;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AM-1(F): What if we have a menu length of 0?

}

@Override
public MenuItem next() {
if (!hasNext()) {
throw new NoSuchElementException();
}

MenuItem returnItem = menuItems[currentIndex];

currentIndex += 1;

return returnItem;
}
}
8 changes: 8 additions & 0 deletions assignments/iterator_pattern/Menu.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package assignments.iterator_pattern;

//Menu Interface for Iterable Menus
public interface Menu {
public void addItem(String name, String description, boolean vegetarian, double price);

public MyIterator createIterator();
}
32 changes: 32 additions & 0 deletions assignments/iterator_pattern/MenuItem.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package assignments.iterator_pattern;

//Class for menu item
public class MenuItem {
String name;
String description;
boolean vegetarian;
double price;

public MenuItem(String name, String description, boolean vegetarian, double price) {
this.name = name;
this.description = description;
this.vegetarian = vegetarian;
this.price = price;
}

public String getName() {
return name;
}

public String getDescription() {
return description;
}

public double getPrice() {
return price;
}

public boolean isVegertarian() {
return vegetarian;
}
}
24 changes: 24 additions & 0 deletions assignments/iterator_pattern/MenuTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package assignments.iterator_pattern;

import java.util.ArrayList;
import java.util.List;

//Main
public class MenuTest {
public static void main(String[] args) {
List<MenuItem> breakfastList = new ArrayList<>();

breakfastList.add(new MenuItem("Pancakes", "Sweet Circle Bread", false, 10));
breakfastList.add(new MenuItem("Eggs", "Non-Meat Protein", false, 8));

Menu dinnerMenu = new DinnerMenu(new MenuItem[] {
new MenuItem("Sushi", "Fish", false, 10),
new MenuItem("Chicken Tenders", "Battered Chicken", false, 10)
});

Menu breakfastMenu = new BreakfastMenu(breakfastList);
Waiter waiter = new Waiter(breakfastMenu, dinnerMenu); // Client

waiter.printMenu();
}
}
8 changes: 8 additions & 0 deletions assignments/iterator_pattern/MyIterator.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package assignments.iterator_pattern;

//Iterator Interface
public interface MyIterator {
public boolean hasNext();

public MenuItem next();
}
34 changes: 34 additions & 0 deletions assignments/iterator_pattern/Waiter.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package assignments.iterator_pattern;

// The Client
public class Waiter {
private Menu breakfastMenu;
private Menu dinnerMenu;

public Waiter(Menu breakfastMenu, Menu dinnerMenu) {
this.breakfastMenu = breakfastMenu;
this.dinnerMenu = dinnerMenu;
}

public void printMenu() {
System.out.println("------ Breakfast ------");
printMenu(breakfastMenu.createIterator());
System.out.println("------ Dinner ------");
printMenu(dinnerMenu.createIterator());
}

public void printMenu(MyIterator myIterator) {
while (myIterator.hasNext()) {
MenuItem item = myIterator.next();
System.out.println("Item: " + item.getName());
System.out.println("Description: " + item.getDescription());
System.out.println("Price: $" + item.getPrice());
if (item.isVegertarian() == true) {
System.out.println("Vegetarian: Yes");
} else {
System.out.println("Vegetarian: No");
}
System.out.println();
}
}
}