Cilj i ishod predmeta
Savladavanje naprednog objektno-orijentisanog programiranja uz korišćenje naprednih dizajn paterna i poštovanje principa softverskog inženjerstva. Upoznavanje sa osnovnim principima modeliranja i specifikacije softvera. Student je sposoban da radi u timu i da razvije složenu desktop aplikaciju koja koristi fajlove sa strukturiranim podacima. Pri razvoju aplikacije student ume da koristi napredno objektno-orijentisano programiranje, da izabere odgovarajući dizajn patern uz poštovanje principa softverskog inženjerstva. Student takođe poznaje osnove UML-a, ume da tumači formalnu specifikaciju softvera i da na osnovu nje implementira softver.
Teorijska nastava
Napredni koncepti UML dijagrama klasa – veza kompozicije i agregacija, dijagram paketa. Strukturirani formati podataka – JSON i XML. Serijalizacija i deserijalizacija objekata u strukturirani format. Dizajn paterni za kreiranje objekata – Factory, Prototype, Builder. Kompozicija objekata i klasa prema strukturnim projektnim obrazcima – Adapter, Bridge, Composite, Decorator, Facade. Svaki dizajn patern objašnjava se na reprezentativnom primeru koji uključuje UML dijagram klasa i implementaciju u programskom jeziku Java. Osnovni principi timskog razvoja softvera. UML dijagram slučajeva korišćenja. Pisanje specifikacije funkcionalnih zahteva softvera. UML dijagram sekvenci. Dizajn paterni za definisanje ponašanje softvera – Iterator Pattern, Command Pattern, Mediator Pattern, Observer Pattern. Objašnjenja dizajn paterna koji opisuju ponašanje sadrže dijagram klasa, dijagram sekvenci i prikaz implementacije u programskom jeziku Java. Prikaz različitih primera praktične primene dizajn paterna. Analiza studije slučaja implementacije softvera na osnovu specifikacije. UML dijagram komponenti. Moduli u programskom jeziku Java (od verzije 9). Prikaz modularne aplikacije preko UML dijagrama komponenti.
Praktična nastava
Ilustracija korišćenja savremenog razvojnog okruženja. Osnovni koncepti sistema za upravljanje verzijama – git. Prikaz osnovnih funkcija git-a. Timski rad korišćenjem git-a. Korišćenje gotovih biblioteka u projektima. Vežba implementacija serijalizacije objekata u XML i JSON format. Vežba učitavanja podataka iz XML i JSON formata u odgovarajući objektni model. Vežba implementacije odgovarajućeg dizajn paterna u programskom jeziku Java za dati opis zadatka. Vežba implementacije strukturnih projektnih obrazaca. Vežba implementacije veće desktop aplikacije u timu na osnovu specifikacije funkcionalnih zahteva uz korišćenje odgovarajućih dizajn paterna. Implementacija dizajn paterna za definisanje ponašanja softvera. Implementacija modula u programskom jeziku Java.