Naziv predmeta | Principi objektno orijentiranog dizajna |
Detalji | Kod VSITE252 Skr. POOD ECTS 5 Godina 1 Semester Ljetni semestar Vrsta obvezatni smjera Razina HKO 7 Diplomski studiji E-Learning 0% |
Aktivnosti | DIT zg - Zim 24/25 ECTS Jedinice Sati Svega P 1 15 2 30
A 0.5 15 1 15
L 0.5 11 1 15
S 0 0 0 0
KA 0 0 0 0
KP 0 0 0 0
PR 0 0 0 0
IP 0 0 0 0
IU 0 1 2 0
SU 3 1 90 90
|
Nastavnici | Nositelji: mr. sc. Julijan Šribar, v. pred. Asistenti: Paolo Stabile, str. sur. |
Preduvjeti | Nema |
Sadržaj | Osnove objektno-orijentiranog modela: klase i objekti. Principi nasljeđivanja, enkapsulacije, polimorfizma. Odnosi među objektima, razlika između nasljeđivanja (princip „jest“), sadržavanja i korištenja. Razlika između nasljeđivanja implementacije i nasljeđivanja sučelja. Metodologije dizajna: razlika između „waterfall“ i iterativno-inkrementalnog pristupa. Testovima upravljani razvoj (test-driven development). Osnovna pravila pri dizajnu klase: definiranje sučelja, definicija metoda, zaštita podataka, dizajn virtualnih metoda, nasljeđivanje. Primjena principa „otvoren-zatvoren“ (otvoren za proširenja, zatvoren za promjene). Princip dizajna prema ugovoru („design by contract“). Osnove obrazaca dizajna („design patterns“) – smisao, pregled i analiza najčešće korištenih obrazaca.
|
Ciljevi učenja | Osposobiti studenta za primjenu metoda objektno orijentiranog dizajna.
|
Ishodi učenja | 1. Nabrojati i objasniti klase i objekte, principe nasljeđivanja, enkapsulacije i polimorfizma, odnose među objektima, nasljeđivanja sučelja i implementacije. 2. Primijeniti metodologije dizajna, testovima upravljani razvoj, pravila dizajna prema ugovoru, obrasce dizajna. 3. Koristiti pravila dizajna sučelja, metoda, zaštite podataka i virtualnih metoda.
|
Sposobnosti | Kolegij pruža napredna znanja iz područja objektnog dizajna, te osposobljava studenta za samostalno dizajniranje strukture objektnih aplikacija.
|
Preporučena literatura | 1. Booch, G.: Object.Oriented Analysis and Design with Applications, 2nd edition, Addison-Wesley, 1994
2. Larman, C.: Applying UML and Patterns, 3rd edition, Prentice Hall, 2005
3. Gamma, E. et al.: Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley, 1994.
|
Dodatna literatura | 1. McConnell, S.: Code Complete, 2nd edition, Microsoft Press, 2004.
|
predavanja (P) | - Osnovni principi objektnog modela: apstrakcija, enkapsulacija, nasljeđivanje, polimorfizam. Apstrakcija operacija i apstrakcija podataka. Što je enkapsulacija i kako se ona ostvaruje. Nasljeđivanje: razlika između nasljeđivanja sučelja i nasljeđivanja implementacije. Vrste polimorfizma: ad hoc, parametrizirani, dinamički polimorfizam.
- Odnosi među objektima: nasljeđivanje, sadržavanje. Suradnja među objektima: get- metode, set-metode, operacije. Razlike između statičkih (nasljeđivanje, sadržavanje) i dinamičkih veza (korištenje) među objektima. Razlika između nasljeđivanja i sadržavanja.
- Metodologije razvoja: vodopadni i iterativno-inkrementalni razvoj. Faze vodopadnog razvoja: specifikacija zahtjeva, dizajn, implementacija, integracija, testiranje, instalacija i održavanje. Osnovne faze inkrementalno-iterativnih postupaka. Opis tipičnih iteracija. Usporedba vodopadnog i inkrementalno-iterativnog pristupa.
- Testiranje. Podjela testova: prihvaćajući, jedinični, regresijski testovi. Metodologija testovima pogonjenog razvoja (TDD). Smisao i značaj jediničnih testova. Postupak refaktoriranja i njegov značaj. Utjecaj jediničnih testova na dizajn. Imitirajući i lažni objekti.
- Agilni dizajn. Pokazatelji lošeg dizajna: krutost, lomljivost, nepokretnost, žitkost, nepotrebna kompleksnost, nepotrebno ponavljanje, netransparentnost. Kako se pokazatelji ispoljavaju i na koji način ih je moguće izbjeći.
- SOLID - Načelo jedine odgovornosti (Single responsibility principle). Što određuje odgovornost klase, primjer klase koja ima više odgovornosti te zašto je to loše. Primjer MVC/MVP uzorka koji odvaja odgovornosti.
- SOLID - Načelo otvoren-zatvoren (Open-closed principle). Definicija: otvoren za proširenja, zatvoren za promjene. Kako se realizira. Primjeri sa strategijskim obrascem i metodom predloška. Primjer sa virtualnim metodama.
- SOLID - Načelo supstitucije Barbare Liskov (Liskov substitution principle). Definicija: objekt izvedene klase uvijek može nadomjestiti objekt bazne klase. Što može narušiti načelo.
- SOLID - Načelo inverzije ovisnosti. Definicija načela. Kako se odražava na dizajn. Kako se implementira. Što su injektiranje ovisnosti te inverzija kontrole i kako se oni odnose na načelo inverzije ovisnosti. Mehanizmi pomoću kojih se ovisnost može injektirati.
- SOLID - Načelo razdvajanja sučelja. Definicija načela. Kako se narušavanje načela odražava na dizajn.
- Oblikovni obrasci (Design Patterns). Povijesni razvoj. Smisao oblikovnih obrazaca. Podjela obrazaca prema GoF-u: kreacijski, strukturni i obrasci ponašanja.
- Pregled i primjena nekih kreacijskih obrazaca: tvornička metoda, apstraktna tvornica, graditelj, singleton.
- Pregled i primjena nekih strukturnih obrazaca: adapter, kompozitni, fasada, opunomoćenik.
- Pregled i primjena nekih obrazaca ponašanja: strategija, stanje, naredba, promatrač, posjetitelj, posrednik.
- Prikaz podataka. Kako razdvojiti podatke od njihova prikaza i omogućiti različite prikaze podataka. Arhitekturni obrasci: model-prikaz-upravljač (model-view-controller), model-prikaz-prikazivač (model-view-presenter), model-prikaz-model prikaza (model-view-vie model)
|
auditorne vježbe (A) | - Upoznavanje sa sustavima za kontrolu koda. Osnovne operacije s Git-om, korištenje GitHuba.
- Definiranje klase i kreiranje objekata.
- Primjeri odnosa među klasama i objektima.
- Primjeri zadavanja jediničnih testova.
- Primjer jednostavnog programa sa simptomima lošeg dizajna.
- Primjer klase sa više odgovornosti i postupka preslagivanja koji se razdvaja odgovornost.
- Primjer koda u kojem je narušeno načelo otvoren-zatvoren. Primjer koda koji slijedi to načelo.
- Primjer koda koji narušava načelo supstitucije Barbare Liskov.
- Primjer koda kroz koji se primjenjuje načelo inverzije ovisnosti.
- Primjer koda koji narušava načelo razdvajanja sučelja te kako to ispraviti.
- Primjer koda koji ilustrira smisao oblikovnih obrazaca.
- Primjeri koda koji prikazuju smisao korištenja kreacijskih obrazaca.
- Primjeri koda koji prikazuju smisao korištenja strukturnih obrazaca.
- Primjeri koda koji prikazuju smisao korištenja obrazaca ponašanja.
- Primjer koda koji prikazuje razdvajanje podataka od prikaza.
|
laboratorijske vježbe (L) | - Upoznavanje sa sustavima za kontrolu koda. Osnovne operacije s Git-om, korištenje GitHuba.
- Definiranje klase i kreiranje objekata.
- Primjeri odnosa među klasama i objektima.
- Pisanje jediničnih testova.
- Primjer kako izbjeći manifestacije lošeg dizajna u jednostavnom programu.
- Preslagivanje koda za načelo jedine odgovornosti.
- Preslagivanje koda za ostvarivanje načela otvoren-zatvoren.
- Primjer koda koji narušava načelo supstitucije Barbare Liskov.
- Primjer koda kroz koji se primjenjuje načelo inverzije ovisnosti.
- Primjer koda kroz koji se primjenjuje načelo razdvajanja sučelja.
- Primjeri koda s najčešćim oblikovnim obrascima.
|
ispit - teorija (IU) | - Objasniti osnovne principe SOLID. Navesti smisao oblikovnih obrazaca, njihovu podjelu. Ilustrirati primjenu nekih obrazaca primjerima koda.
|
samostalno učenje (SU) | - testovi i kolokviji, konzultacije, samostalni rad i samostalno učenje
|