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"; } }