Oblikovni obrasci u programiranju

Prikazani su podaci za akademsku godinu: 2023./2024.

Auditorne vježbe

Laboratorijske vježbe

Opis predmeta

Proučavaju se opća načela te konkretne metode oblikovanja prilagodljivih i modularnih programskih podsustava. Uvodi se pojam oblikovnog obrasca kao isprobanog rješenja za razred čestih problema u pojedinim problemskim domenama. Razmatraju se klasifikacije obrazaca prema razini apstrakcije, svrsi i području primjene, zajedno s odgovarajućim predstavnicima. Pretpostavljena su osnovna znanja iz domene objektno orijentiranog programiranja stečena na uvodnim kolegijima.

Studijski programi

Sveučilišni preddiplomski
Izborni predmeti (6. semestar)
Izborni predmeti (6. semestar)
[FER2-HR] Programsko inženjerstvo i informacijski sustavi - modul
Izborni predmeti (6. semestar)
[FER2-HR] Računalno inženjerstvo - modul
Izborni predmeti (6. semestar)
[FER2-HR] Računarska znanost - modul
Izborni predmeti (6. semestar)
Sveučilišni diplomski
Izborni predmeti (2. semestar)
Izborni predmeti (2. semestar)
Izborni predmeti (2. semestar)
Izborni predmeti (2. semestar)
Izborni predmeti (2. semestar)
Izborni predmeti (2. semestar)
Izborni predmeti (2. semestar)
Izborni predmeti (2. semestar)
Jezgreni predmeti profila (2. semestar)
Izborni predmeti (2. semestar)
Izborni predmet profila (2. semestar)
Izborni predmeti (2. semestar)
Jezgreni predmeti profila (2. semestar)
Izborni predmeti (2. semestar)
Izborni predmeti (2. semestar)

Ishodi učenja

  1. prepoznati simptome neprikladne programske organizacije
  2. objasniti prednosti dinamičkog polimorfizma, predložaka i implicitnog tipiziranja.
  3. objasniti glavna načela programskog oblikovanja i prepoznati slučajeve njihovog kršenja
  4. procijeniti kvalitetu različitih programskih organizacija na temelju ključnih načela oblikovanja
  5. prepoznati različite oblikovne obrasce u nekomentiranom izvornom kôdu
  6. usporediti prikladnost različitih oblikovnih obrazaca u kontekstu konkretnog oblikovnog problema
  7. primijeniti oblikovna načela za koncipiranje kvalitetnih programskih komponenti

Oblici nastave

Predavanja

Predmet predviđa tri sata predavanja tjedno.

Laboratorij

Predmet predviđa četiri laboratorijske vježbe. http://www.zemris.fer.hr/~ssegvic/ooup/

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

  1. Statička i dinamička svojstva programskih sustava. Značaj interakcije programskih komponenata i programske organizacije. Osnove razvojnih procesa.
  2. Simptomi neprikladne organizacije. Veza između promjene zahtjeva i nereda programske organizacije. Dijagrami razreda prema metodi OMT. Dijagram fizičke organizacije.
  3. Tehnike za izražavanje fleksibilnih programa. Dinamički polimorfizam u C++-u, C-u i Pythonu. Statički polimorfizam u C++-u. Objektno-orijentirano oblikovanje, ugovorno oblikovanje, zauzimanje inicijalizacijom.
  4. Logička načela oblikovanja: nadogradnja bez promjene, Liskovino načelo supstitucije, načelo inverzije ovisnosti, načelo jedinstvene odgovornosti, načelo izdvajanja sučelja. Fizička načela oblikovanja: inkrementalno testiranje, dodjeljivanje razina, cikličke ovisnosti.
  5. Oblikovni obrasci. Strategija. Okvirna metoda. Promatrač
  6. Dekorator. Naredba.
  7. Rješavanje problema za vježbu.
  8. Međuispit
  9. Generičke tvornice. Jedinstveni objekt. Iterator.
  10. Prilagodnik. Kompozit. Stanje.
  11. Proxy. Most.
  12. Prototip. Posjetitelj.
  13. Metoda tvornica. Model-pogled-upravljač.
  14. Rješavanje problema za vježbu.
  15. Završni ispit

Literatura

Erich Gamma, Richard Helm (Computer scientist), Ralph E. Johnson, John Vlissides (1995.), Design Patterns,
Robert C. Martin, Jan M. Rabaey, Anantha P. Chandrakasan, Borivoje Nikolić (2003.), Agile Software Development, Pearson

Za studente

Izvedba

ID 183426
  Ljetni semestar
5 ECTS
R1 Engleski jezik
R1 E-učenje
30 Predavanja
0 Seminar
15 Auditorne vježbe
8 Laboratorijske vježbe
0 Konstrukcijske vježbe
0 Vježbe tjelesnog odgoja

Ocjenjivanje

89 izvrstan
76 vrlo dobar
63 dobar
50 dovoljan

Forum

>> / Sve diskusijske grupe / Općenito / Pitanje vezano uz podpitanja zadataka prve laboratorijske vježbe

    •   Nikola Kešćec (9. 3. 2021. u 22:24) Pitanje vezano uz podpitanja zadataka prve laboratorijske vježbe

      Poštovani,

      postavljam ova pitanja vezana uz prvu laboratorijsku vježbu jer mi nije jasno kako točno da formuliramo odgovore na podpitanja koja su nam dana za odgovoriti u zadacima (a nigdje nije točno specificirano kako da im pristupimo). Npr. u prvom zadatku prve laboratorijske vježbe jedan od podzadataka jest pokazati da se konkretni objekti mogu kreirati na gomili i stogu. Trebamo li raditi posebnu .c datoteku koja bi odgovarala rješenju tog podzadatka ili trebamo dodati samo potrebne funkcije unutar originalnog rješenja glavnog problema te modificirati main metodu da uključuje rješenje tog podzadatka. Isto se odnosi i na drugi podzadatak koji traži da se pozove funkcija koja stvara n pasa.

      Također, još imam pitanje vezano uz dijelove laboratorijske vježbe koji zahtijevaju analiziranje, objašnjavanje i/ili crtanje dijagrama razreda. Trebamo li te odgovore napisati na poseban papir ili unutar neke datoteke te predati zajedno s programskim kodom?

      Zahvaljujem se na odgovorima.


      •  
          Siniša Šegvić (16. 3. 2021. u 15:44) Re: Pitanje vezano uz podpitanja zadataka prve laboratorijske vježbe

        Preporučamo jednu datoteku s izvornim kodom u C-u za svaki zadatak vježbe. Ostali načini grupiranja koda po datotekama su također prihvatljivi.

        Dijagrame i objašnjenja nije potrebno evidentirati u Ferku.