Skip to main content

DIT - Principles of object-oriented design

Subject name

Principles of object-oriented design

Details
Code
VSITE252
Abbrev.
POOD
ECTS
5
Year
1
Semester
Summer semester
Type
major obligatory
NQF Level 7
Master's study
E-Learning
0%
Activities
DIT zg - Win 23/24
ECTS
Units
Hours
Total
T
1
15
2
30
N
0.5
15
1
15
L
0.5
11
1
15
S
0
0
0
0
PN
0
0
0
0
PT
0
0
0
0
PR
0
0
0
0
EN
0
0
0
0
ET
0
1
2
0
AL
3
1
90
90
TeachersLeaders: mr. sc. Julijan Šribar, v. pred.
PrerequisitsNone
Content

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.

Learning objectives

Osposobiti studenta za primjenu metoda objektno orijentiranog dizajna.

Learning outcomes

1. List and explain the classes and objects, the principles of inheritance, encapsulation and polymorphism, relationships between objects, interface inheritance and implementation.
2. Apply the methodologies of design, test driven development, the rules of design by contract, design patterns.
3. Use the rules of interface design, methods, data protection and virtual methods.

Competencies

Kolegij pruža napredna znanja iz područja objektnog dizajna, te osposobljava studenta za samostalno dizajniranje strukture objektnih aplikacija.

Recommended Literature

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.

Additional Literature

1. McConnell, S.: Code Complete, 2nd edition, Microsoft Press, 2004.

lectures (T)
  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)
numeric exercises (N)
  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.
laboratory exercises (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.
exam - theory (ET)
  1. Objasniti osnovne principe SOLID. Navesti smisao oblikovnih obrazaca, njihovu podjelu. Ilustrirati primjenu nekih obrazaca primjerima koda.
autonomus learning (AL)
  1. testovi i kolokviji, konzultacije, samostalni rad i samostalno učenje

Ulica Vjekoslava Klaića 7, 10000 Zagreb, tel. 01/3764200 fax. 01/3764264