Oblikovni obrasci u programiranju
Opis predmeta
Opće kompetencije
Studenti se upoznaju s primjenom temeljnih načela oblikovanja pri planskoj izgradnji kvalitetnih programskih podsustava. Stečena saznanja omogućuju kritičko vrednovanje različitih oblikovnih rješenja konkretnih problema vezanih uz programsku organizaciju. Predstavljeni oblikovni obrasci pružaju potpuniji pogled na česte organizacijske izazove, kao i pragmatičan uvid u prednosti novih mogućnosti modernih programskih jezika. Korištenjem stečenog znanja studenti će moći poboljšati organizaciju postojećih i novih programskih sustava, kao i pojasniti dokumentaciju korištenjem uvriježene terminologije.
Ishodi učenja
- prepoznati simptome neprikladne programske organizacije
- objasniti prednosti dinamičkog polimorfizma, predložaka i implicitnog tipiziranja.
- objasniti glavna načela programskog oblikovanja i prepoznati slučajeve njihovog kršenja
- procijeniti kvalitetu različitih programskih organizacija na temelju ključnih načela oblikovanja
- prepoznati različite oblikovne obrasce u nekomentiranom izvornom kôdu
- odabrati i primijeniti prikladne oblikovne obrasce pri razvoju programskog proizvoda
- usporediti prikladnost različitih oblikovnih obrazaca u kontekstu konkretnog oblikovnog problema
- primijeniti oblikovna načela za koncipiranje kvalitetnih programskih komponenti
Oblici nastave
Predmet predviđa dva sata predavanja tjedno.
Provjere znanjaProvjere znanja sastoje se od prvog međuispita (40%), završnog ispita (40%), i provjera na laboratorijskim vježbama (20%).
Auditorne vježbePredmet predviđa četiri auditorne vježbe.
Laboratorijske vježbePredmet predviđa četiri laboratorijske vježbe.
KonzultacijeRedovne konzultacije održavat će se nakon svakog predavanja. Izvanredni termini konzultacija trebaju se dogovoriti e-mailom.
SeminariStudenti mogu prezentiranjem tehničkog seminara ostvariti dodatne bodove.
Način ocjenjivanja
Kontinuirana nastava | Ispitni rok | |||||
---|---|---|---|---|---|---|
Vrsta provjere | Prag | Udio u ocjeni | Prag | Udio u ocjeni | ||
Laboratorijske vježbe | 50 % | 20 % | 50 % | 0 % | ||
Međuispit: Pismeni | 0 % | 40 % | 0 % | |||
Završni ispit: Pismeni | 0 % | 40 % | ||||
Ispit: Pismeni | 50 % | 80 % | ||||
Ispit: Usmeni | 20 % |
Tjedni plan nastave
- Uvodno predavanje: važnost programske organizacije, ciljevi programskog oblikovanja, pregled modela razvojnog procesa. Simptomi neprikladne organizacije.
- Primjer: gubitak integriteta uslijed promijenjenih zahtjeva i prilagodba organizacije novim uvjetima. Pregled dijagrama i programskih koncepata. Tehnike za ostvarivanje fleksibilnosti u programskim jezicima C, C++ i Python: dinamički i statički polimorfizam, implicitno tipiziranje.
- Načela logičkog oblikovanja: nadogradnja bez promjene, Liskovino načelo supstitucije.
- Načela logičkog oblikovanja: načelo inverzije ovisnosti, načelo jedinstvene odgovornosti, načelo izdvajanja sučelja.
- Načela fizičkog oblikovanja: poželjan oblik grafa ovisnosti komponenata, primjerena apstraktnost odnosno stabilnost paketa.
- Ilustracija pojma oblikovnog obrasca na primjeru obrasca Strategije. Obrazac promatrač.
- Obrazac Dekorator. Parametrizirana tvornica. Tvornice koje ne ovise o konkretnim razredima.
- Međuispit - provjera znanja.
- Obrazac Metoda tvornica. Obrazac Apstraktna tvornica. Obrazac Jedinstveni objekt.
- Obrazac Naredba. Obrazac Prilagodnik. Obrazac Okvirna metoda.
- Obrazac Iterator. Obrazac Kompozit. Obrazac Stanje.
- Obrazac Proxy. Obrazac Most. Obrazac Posjetitelj.
- Obrazac Prototip. Obrazac Model-pogled-upravljač.
- Problem solving exercises.
- Završni ispit