Zadanie Časť 2
0. PizzaLib
abstract class Item
premenujte na AbstractItem
(nezabudnite na refaktorizáciu kódu!)
pridajte rozhranie Item
nech toto rozhranie definuje verejné metódy, ktoré máte implementované v AbstractItem
teda aspoň
double GetAmount();
bool IsLow();
void Add(double amount);
void Remove(double amount);
(nech AbstractItem
implementuje Item
)
Pridajte si interface `IInventory, nech toto rozhranie obsahuje aspoň
List<Item> GetItems();
Item GetItem(Predicate<Item> predicate);
void AddItem(Item item)
nech Inventory
implementuje IInventory
(v prípade, že máte implementované aj iné verejné metódy, pridajte si ich do týchto rozhraní, zvážte, či sú potrebné - ak áno, určite to zníži zhodu pri kontrole orginality)
Nech ISellable
obsahuje void SetInventory(IInventory inventory)
ktorá slúži na nastavenie referencie na sklad, ktorý je následne využitý v Order()
.
V rámci tried, ktoré zobrazujete na DataGridView budete potrebovať použiť properties, inak sa nič nezobrazí. Na tomto mieste je vhodné použiť vlastnosti (properties) bez členskej premennej a bez mutátora (set), príklad:
private double outsideTemperature;
public bool IsColdOutside { get { return IsFreezing; } }
private bool IsFreezing()
{
return outsideTemperature < 273.16; //trojný bod vody
}
1. Sklad
Vytvorte si nový formulár, ktorého cieľom bude zobrazenie stavu a evidencia obsahu skladu. Na zobrazenie použite DataGridView.
- Pri dvojkliku na DataGridView sa otvorí nový formulár, ktorý umožňuje modifikáciu existujúceho riadku, v prípade dvojkliku na prázdny riadok tento formulár umožní pridanie nového artiklu do skladu.
- Pridajte možnosť filtrovania artiklu podľa názvu.
- Pridajte RadioButton alebo CheckBox (podľa vlastnej voľby) pre voľbu filtru Všetky (ak používate checkbox, označí všetky ostatné automaticky) / Prísady / Ostatné. Ak pužívate aj iné kategórie pre tovar, tiež ich zobrazte)
- aaa
Okno pre sklad zobrazte ako klasické okno (Form.Show()
), okno pre artikel v sklade zobrazte ako modálne / diálogové okno (Form.ShowDialog()
).
2. Objednávky
Vytvorte si triedu, ktorá bude reprezentovať objednávku pre určitý stôl.
Vytvorte si triedu, ktorá bude reprezentovať stoly v reštaurácií, nech táto trieda umožňuje prístup k jednotlivým stolom.
poznámka: vhodné je tu použiť Dictionary<Button, Table>
Nezabudnite dodržať oddelenie UI a programovej logiky - táto trieda poskytuje dáta, nepracuje s UI
Vytvorte si triedu zodpovednú za tlačenie bločkov, nech táto trieda implmenetuje návrhový vzor Singleton.
Na hlavný formulár pridajte tlačidlá reprezentujúce stoly. Po kliknutí na tlačidlo sa otvorí novy formulár, kde bude zobrazená objednávka, jej úprava, pridanie nových vecí a tlač bločku. V tomto formulári ošetrite aj výnimku, ktorá sa vyvolá pri nedostatku materiálu na sklade.
Pozor! v prípade nedostatku surovín pri objednaní pizze sa žiadna surovina nesmie zo skladu stratiť - kontrolu vykonajte v rámci Pizza.Order()!