This repository has been archived on 2022-11-20. You can view files and clone it, but cannot push or open issues or pull requests.
patterns/iterator/simpleiterator/dinermenu.d

51 lines
1.5 KiB
D

module dinermenu;
import menu, menuitem, iterator, dinermenuiterator;
import std.stdio : writeln;
class DinerMenu : Menu
{
static const int MAX_ITEMS = 6;
private int numberOfItems = 0;
private MenuItem[] menuItems;
this()
{
menuItems = new MenuItem[MAX_ITEMS];
addItem("Vegetarian BLT", "(Fakin') Bacon with lettuce & tomato on whole wheat", true, 2.99);
addItem("BLT", "Bacon with lettuce & tomato on whole wheat", false, 2.99);
addItem("Soup of the day", "Soup of the day, with a side of potato salad", false, 3.29);
addItem("Hotdog", "A hot dog, with sauerkraut, relish, onions, topped with cheese", false, 3.05);
addItem("Steamed Veggies and Brown Rice", "Steamed vegetables over brown rice", true, 3.99);
addItem("Pasta", "Spaghetti with Marinara Sauce, and a slice of sourdough bread", true, 3.89);
}
void addItem(string name, string description, bool vegetarian, double price)
{
if (numberOfItems >= MAX_ITEMS)
{
writeln("Sorry, menu is full! Can't add item to menu");
}
else
{
menuItems[numberOfItems++] = new MenuItem(name, description, vegetarian, price);
}
}
MenuItem[] getMenuItems()
{
return menuItems;
}
override Iterator createIterator()
{
return new DinerMenuIterator(menuItems);
}
override string toString() const @safe pure nothrow
{
return "Diner Menu";
}
}