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 19/20
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
NastavniciNositelji: mr. sc. Julijan Šribar, v. pred.
PreduvjetiNema
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)
  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. 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.
  8. 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.
  9. 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.
  10. SOLID - Načelo razdvajanja sučelja. Definicija načela. Kako se narušavanje načela odražava na dizajn.
  11. Oblikovni obrasci (Design Patterns). Povijesni razvoj. Smisao oblikovnih obrazaca. Podjela obrazaca prema GoF-u: kreacijski, strukturni i obrasci ponašanja.
  12. Pregled i primjena nekih kreacijskih obrazaca: tvornička metoda, apstraktna tvornica, graditelj, singleton.
  13. Pregled i primjena nekih strukturnih obrazaca: adapter, kompozitni, fasada, opunomoćenik.
  14. Pregled i primjena nekih obrazaca ponašanja: strategija, stanje, naredba, promatrač, posjetitelj, posrednik.
  15. 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)
  1. Upoznavanje sa sustavima za kontrolu koda. Osnovne operacije s Git-om, korištenje GitHuba.
  2. Definiranje klase i kreiranje objekata.
  3. Primjeri odnosa među klasama i objektima.
  4. Primjeri zadavanja jediničnih testova.
  5. Primjer jednostavnog programa sa simptomima lošeg dizajna.
  6. Primjer klase sa više odgovornosti i postupka preslagivanja koji se razdvaja odgovornost.
  7. Primjer koda u kojem je narušeno načelo otvoren-zatvoren. Primjer koda koji slijedi to načelo.
  8. Primjer koda koji narušava načelo supstitucije Barbare Liskov.
  9. Primjer koda kroz koji se primjenjuje načelo inverzije ovisnosti.
  10. Primjer koda koji narušava načelo razdvajanja sučelja te kako to ispraviti.
  11. Primjer koda koji ilustrira smisao oblikovnih obrazaca.
  12. Primjeri koda koji prikazuju smisao korištenja kreacijskih obrazaca.
  13. Primjeri koda koji prikazuju smisao korištenja strukturnih obrazaca.
  14. Primjeri koda koji prikazuju smisao korištenja obrazaca ponašanja.
  15. Primjer koda koji prikazuje razdvajanje podataka od prikaza.
laboratorijske vježbe (L)
  1. Upoznavanje sa sustavima za kontrolu koda. Osnovne operacije s Git-om, korištenje GitHuba.
  2. Definiranje klase i kreiranje objekata.
  3. Primjeri odnosa među klasama i objektima.
  4. Pisanje jediničnih testova.
  5. Primjer kako izbjeći manifestacije lošeg dizajna u jednostavnom programu.
  6. Preslagivanje koda za načelo jedine odgovornosti.
  7. Preslagivanje koda za ostvarivanje načela otvoren-zatvoren.
  8. Primjer koda koji narušava načelo supstitucije Barbare Liskov.
  9. Primjer koda kroz koji se primjenjuje načelo inverzije ovisnosti.
  10. Primjer koda kroz koji se primjenjuje načelo razdvajanja sučelja.
  11. Primjeri koda s najčešćim oblikovnim obrascima.
ispit - teorija (IU)
  1. Objasniti osnovne principe SOLID. Navesti smisao oblikovnih obrazaca, njihovu podjelu. Ilustrirati primjenu nekih obrazaca primjerima koda.
samostalno učenje (SU)
  1. testovi i kolokviji, konzultacije, samostalni rad i samostalno učenje