Задатак — Улазнице за догађај

← Недеља 5

Направити објектни модел за продају улазница за концерт или други догађај.

Дефинисати апстрактну класу Ulaznica која има:

  • назив догађаја;
  • основну цену;
  • јединствени ID улазнице.

Свака улазница мора да понуди методу:

public abstract int izracunajCenu();

Направити најмање следеће изведене класе:

  • StandardnaUlaznica — плаћа пуну основну цену;
  • StudentskaUlaznica — има попуст од 30%;
  • VipUlaznica — на основну цену додаје фиксну цену VIP пакета.

Захтеви

  1. Заједничке податке и понашање ставити у базну класу.
  2. Користити super(...) у конструкторима изведених класа.
  3. Свака изведена класа треба да редефинише izracunajCenu() када има посебно правило.
  4. У Main направити низ типа Ulaznica[] и у њега ставити објекте различитих изведених класа.
  5. Једном петљом исписати опис и коначну цену сваке улазнице.
  6. У петљи није дозвољено гранање по конкретном типу улазнице.

Размислити

  • Да ли 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 са демонстрацијом и кратко образложење одлука. У овом делу нису задати називи класа или обавезни обрасци; образложено једноставније решење је прихватљиво. Најпре дефинисати уговор и очекивани резултат, па имплементирати.