Задатак — Поклон картица
Направити класу PoklonKartica која представља поклон картицу неке продавнице.
Свака картица има:
- јединствени целобројни ID;
- назив продавнице;
- тренутно стање у динарима.
Правила
- Нова картица има стање 0 динара.
- На картицу је могуће допунити само позитиван износ.
- Куповина је могућа само за позитиван износ који није већи од тренутног стања.
- Стање картице никада не сме да буде негативно.
- ID и назив продавнице се не мењају након креирања картице.
- Треба омогућити да се сазна колико је укупно картица креирано.
Предложени јавни интерфејс класе
Називи метода могу бити другачији ако смислено описују операцију.
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 са демонстрацијом и кратко образложење одлука. У овом делу
нису задати називи класа или обавезни обрасци; образложено једноставније решење
је прихватљиво. Најпре дефинисати уговор и очекивани резултат, па имплементирати.