Задатак — Поклон картица

← Недеља 3

Направити класу PoklonKartica која представља поклон картицу неке продавнице.

Свака картица има:

  • јединствени целобројни ID;
  • назив продавнице;
  • тренутно стање у динарима.

Правила

  1. Нова картица има стање 0 динара.
  2. На картицу је могуће допунити само позитиван износ.
  3. Куповина је могућа само за позитиван износ који није већи од тренутног стања.
  4. Стање картице никада не сме да буде негативно.
  5. ID и назив продавнице се не мењају након креирања картице.
  6. Треба омогућити да се сазна колико је укупно картица креирано.

Предложени јавни интерфејс класе

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

PoklonKartica kartica = new PoklonKartica("Knjižara");

kartica.dopuni(3000);
kartica.kupi(1200);

System.out.println(kartica.getStanje());
System.out.println(kartica.opis());

Размислити пре кодирања

  • Која поља треба да буду private?
  • Која поља имају смисла као final?
  • Који податак треба да буде static?
  • Да ли треба да постоји setStanje?
  • Ко је одговоран за проверу да ли куповина може да се изврши?
  • Која је инваријанта класе PoklonKartica?

Додатак

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

Границе и уговор

dopuni и kupi враћају boolean. Неуспех не мења стање. Одбити и уплату која би прешла Integer.MAX_VALUE; довољно је проверити iznos > Integer.MAX_VALUE - stanje пре сабирања. opis() враћа читљив текст; стандардни toString() упознајемо у недељи 5.

Самостални део — Резервоар

Резервоар има задат капацитет и тренутну количину 0. Дозвољени су допуна и потрошња позитивне количине. Немогућа операција се одбија без делимичне промене. Самостално одредити јавни API.

Критеријум провере: Капацитет 10: допуна 8 успева; допуна 3 не успева и остаје 8; потрошња 8 успева и остаје 0. Која поља су final?

Предати мали Main са демонстрацијом и кратко образложење одлука. У овом делу нису задати називи класа или обавезни обрасци; образложено једноставније решење је прихватљиво. Најпре дефинисати уговор и очекивани резултат, па имплементирати.