Задатак — Улазнице за догађај
Направити објектни модел за продају улазница за концерт или други догађај.
Дефинисати апстрактну класу Ulaznica која има:
- назив догађаја;
- основну цену;
- јединствени ID улазнице.
Свака улазница мора да понуди методу:
public abstract int izracunajCenu();
Направити најмање следеће изведене класе:
StandardnaUlaznica— плаћа пуну основну цену;StudentskaUlaznica— има попуст од 30%;VipUlaznica— на основну цену додаје фиксну цену VIP пакета.
Захтеви
- Заједничке податке и понашање ставити у базну класу.
- Користити
super(...)у конструкторима изведених класа. - Свака изведена класа треба да редефинише
izracunajCenu()када има посебно правило. - У
Mainнаправити низ типаUlaznica[]и у њега ставити објекте различитих изведених класа. - Једном петљом исписати опис и коначну цену сваке улазнице.
- У петљи није дозвољено гранање по конкретном типу улазнице.
Размислити
- Да ли
StudentskaUlaznica IS-A Ulaznicaима смисла? - Зашто је
Ulaznicaдобар кандидат за апстрактну класу? - Шта се дешава када променљива типа
Ulaznicaпоказује наVipUlaznicaобјекат? - Колико места у програму би требало мењати ако касније додамо
DecijaUlaznica?
Додатак
Додати класу KupovinaUlaznice која има купца и улазницу.
Тиме у истом моделу треба да постоје оба односа:
VipUlaznica IS-A Ulaznica
KupovinaUlaznice HAS-A Ulaznica
Самостални део — Обрачун доставе
Пошиљка користи начин доставе. Стандардна достава кошта 200 дин, експресна 400 дин. Размислити шта има однос IS-A, а шта HAS-A; затим обрадити више пошиљака кроз заједнички тип.
Критеријум провере: Додавање преузимања у радњи са ценом 0 не мења петљу која рачуна цену. Објаснити и варијанту без наслеђивања.
Предати мали Main са демонстрацијом и кратко образложење одлука. У овом делу
нису задати називи класа или обавезни обрасци; образложено једноставније решење
је прихватљиво. Најпре дефинисати уговор и очекивани резултат, па имплементирати.