Задатак — Листа за куповину
Направити малу JavaFX апликацију за листу за куповину.
Апликација треба да омогући:
- додавање производа;
- избор категорије;
- приказ свих производа;
- означавање производа као купљеног;
- уклањање производа.
Модел
Направити пакет:
model
и класе:
Proizvod
ListaZaKupovinu
Kategorija
Kategorija треба да буде enum, на пример:
HRANA,
PICE,
HIGIJENA,
DOMACINSTVO,
OSTALO
Proizvod има:
- назив;
- категорију;
- информацију да ли је купљен.
Модел не сме да импортује ништа из:
javafx.*
Контролер
Направити пакет:
kontroler
и класу:
KontrolerKupovine
Контролер треба да омогући операције:
dodajProizvod(...)
oznaciKaoKupljen(...)
ukloniProizvod(...)
getProizvodi()
Ни контролер не треба да користи JavaFX типове.
Приказ
Направити пакет:
prikaz
JavaFX интерфејс треба да садржи најмање:
TextField
ChoiceBox<Kategorija>
Button
ListView
Label
и неки од layout контејнера:
VBox
HBox
BorderPane
UI треба да:
- прочита унос;
- позове контролер;
- освежи приказ.
Не треба директно да мења интерну колекцију модела.
Важан захтев
Ово не треба да постоји у класи Proizvod:
private Button dugme;
private Label nazivLabela;
Нити у класи ListaZaKupovinu:
ObservableList<Proizvod>
Модел треба да буде обична Java.
Додатак
Додати филтер:
SVI
NEKUPLJENI
KUPLJENI
Размислити:
- да ли је филтер део модела или приказа;
- ко треба да одлучи који производи се тренутно приказују;
- да ли избор боје за купљени производ припада моделу.
Самостални део — Филтер без погрешног индекса
На листу за куповину додати приказ само некупљених производа. Дефинисати како UI идентификује изабрани производ кад је листа филтрирана.
Критеријум провере: После филтрирања означити други видљиви производ и проверити да је промењен прави објекат модела. Индекс филтрираног приказа није нужно индекс у моделу; користити стабилан ID или одговарајући изабрани објекат.
Предати мали Main са демонстрацијом и кратко образложење одлука. У овом делу
нису задати називи класа или обавезни обрасци; образложено једноставније решење
је прихватљиво. Најпре дефинисати уговор и очекивани резултат, па имплементирати.