Циљ и исход предмета
Савладавање напредног објектно-оријентисаног програмирања уз коришћење напредних дизајн патерна и поштовање принципа софтверског инжењерства. Упознавање са основним принципима моделирања и спецификације софтвера. Студент је способан да ради у тиму и да развије сложену десктоп апликацију која користи фајлове са структурираним подацима. При развоју апликације студент уме да користи напредно објектно-оријентисано програмирање, да изабере одговарајући дизајн патерн уз поштовање принципа софтверског инжењерства. Студент такође познаје основе UML-a, уме да тумачи формалну спецификацију софтвера и да на основу ње имплементира софтвер.
Теоријска настава
Напредни концепти UML дијаграма класа – веза композиције и агрегација, дијаграм пакета. Структурирани формати података – JSON и XML. Серијализација и десеријализација објеката у структурирани формат. Дизајн патерни за креирање објеката – Factory, Prototype, Builder. Композиција објеката и класа према структурним пројектним образцима – Adapter, Bridge, Composite, Decorator, Facade. Сваки дизајн патерн објашњава се на репрезентативном примеру који укључује UML дијаграм класа и имплементацију у програмском језику Java. Основни принципи тимског развоја софтвера. UML дијаграм случајева коришћења. Писање спецификације функционалних захтева софтвера. UML дијаграм секвенци. Дизајн патерни за дефинисање понашање софтвера – Iterator Pattern, Command Pattern, Mediator Pattern, Observer Pattern. Објашњења дизајн патерна који описују понашање садрже дијаграм класа, дијаграм секвенци и приказ имплементације у програмском језику Java. Приказ различитих примера практичне примене дизајн патерна. Анализа студије случаја имплементације софтвера на основу спецификације. UML дијаграм компоненти. Модули у програмском језику Java (од верзије 9). Приказ модуларне апликације преко UML дијаграма компоненти.
Практична настава
Илустрација коришћења савременог развојног окружења. Основни концепти система за управљање верзијама – git. Приказ основних функција git-а. Тимски рад коришћењем git-а. Коришћење готових библиотека у пројектима. Вежба имплементација серијализације објеката у XML и JSON формат. Вежба учитавања података из XML и JSON формата у одговарајући објектни модел. Вежба имплементације одговарајућег дизајн патерна у програмском језику Java за дати опис задатка. Вежба имплементације структурних пројектних образаца. Вежба имплементације веће десктоп апликације у тиму на основу спецификације функционалних захтева уз коришћење одговарајућих дизајн патерна. Имплементација дизајн патерна за дефинисање понашања софтвера. Имплементација модула у програмском језику Java.