Spisak zadataka obrađenih na vežbama u toku školske 2011/2012. godine
Termini vežbi i obrađene teme
Termin 1, 05.10.2011. (Predstavljanje predmeta, upoznavanje sa razvojnim okruženjem)
Ukratko o predmetu i materiji koju predmet pokriva. Način izrade i bodovanja domaćih zadataka i projekta.
Predstavljanje osnovnih koncepata objedinjenih razvojnih okruženja (IDE) i predstavljanje MSVC.
Prazan program na jeziku C++.
Termin 2, 12.10.2011. (Elementi jezika C++ koji nisu objektno orijentisani)
Zadaci 1.1 (standardni izlaz), 1.2 (standardni ulaz), 1.3 (rad sa dinamičkom memorijom) [2], sa osvrtom na svaku novinu u C++, uz paralelu sa jezikom C i podsećanje na najznačajnije elemente jezika C.
Zadaci 3, 4, 5 [1] usaglašeni sa važećim standardom za jezik C++.
Svi urađeni zadaci se mogu preuzeti odavde: termin 2
Termin 3, 19.10.2011. (Elementi jezika C++ koji nisu objektno orijentisani, Uvod u klase)
Zadaci 1.6 (standardni ulaz i izlaz), 1.7 (rad sa dinamičkom memorijom, konstante), 1.8 (reference), 1.9 (ugrađene funkcije) [2], sa osvrtom na svaku novinu u C++, uz paralelu sa jezikom C i podsećanje na najznačajnije elemente jezika C.
Zadaci 6, 7, 8 [1] usaglašeni sa važećim standardom za jezik C++.
Zadaci 2.1. i 2.2 [2], pojmovi klase i instance; pojmovi const, friend i static, primeri njihove upotrebe; razlika izmedju friend funkcije i metode; konstrukcija projekta od više fajlova.
Svi urađeni zadaci se mogu preuzeti odavde: termin 3
Termin 4, 26.10.2011. (Klase, Konstruktori)
Prevođenje tipičnog primera strukturiranog programiranja u pokazni OO primer (polazna osnova je zadatak 1.10 [2]).
Utvrđivanje pojmova const, friend i static.
Zadatak 2.4 [2], podrazumevani konstruktor, konstruktor konverzije, konstruktor sa više parametara; podrazumevane vrednosti argumenata funkcija.
Zadatak 2.5 [2], ključna reč explicit.
Svi uradjeni zadaci se mogu preuzeti odavde: termin 4
Termin 5, 09.11.2011. (Konstruktori i destruktori, rad sa tokovima na disku)
Program 3.1 [3], konstruktor kopije, konverzije i podrazumevani konstruktor; destruktor.
Otvaranje i zatvaranje datoteka, načini pristupa, čitanje/pisanje, menjanje formata (width, setw, fill, precision).
Jednostavni primeri rada sa datotekama (ispitivanje stanja toka).
Svi urađeni zadaci se mogu preuzeti odavde: termin 5
Termin 6, 16.11.2011. (Operatorske funkcije, formatiranje podataka prilikom ispisa)
Program 4.1 [3], operator konverzije tipa, operator +.
Program 4.2 [3], operator dodele; sličnosti i razlike između konstruktora kopije i operatora dodele.
Zadatak 10 [1], aritmetički operatori za razne tipove operanada, operatori == i !=, operatori unarno + i unarno -, operatori << i >>; operatorske funkcije kao članice klase i kao prijateljske funkcije; ispravno određivanje povratnog tipa operatorske funkcije.
Datoteke 2, pozicioniranje unutar toka i menjanje formata (width, setw, fill, precision).
Svi urađeni zadaci se mogu preuzeti odavde: termin 6
termin 7, 23.11.2011. (Operatorske funkcije, nabrajanja, ukratko o nasleđivanju klasa)
Program 4.3 [3], operator [].
Program 4.4 [3], operator ().
Program 4.6 [3], nabrajanja, ostali važni operatori.
Uvodno izlaganje o nasleđivanju klasa.
Zadatak 4.1 [2], osnovne i izvedene klase; scenario izvršavanja konstruktora kod izvedenih klasa.
Zadatak 4.2 [2], virtuelne metode.
Svi urađeni zadaci se mogu preuzeti odavde: termin 7
termin 8, 28.11.2011. (Nasleđivanje klasa, polimorfizam, supstitucija, konstruktori, destruktori)
Zadatak 4.1 [2], osnovne i izvedene klase; scenario izvršavanja konstruktora kod izvedenih klasa.
Zadatak 4.4 [2], virtuelne metode.
Zadatak 4.5 [2], apstraktne metode i apstraktne klase; realizacija i upotreba preklopljenog operatora << za klase sa prate?im izvedenim klasama; ukratko o UML klasnim dijagramima.
Svi urađeni zadaci se mogu preuzeti odavde: termin 8
termin 9, 30.11.2011. (Polimorfizam, supstitucija, neke napredne teme, upotreba STL klasa i algoritama)
Zadatak 4.6 [2]. Diskusija o polimorfizmu, substituciji i mehanizmu konstrukcije objekata izvedenih klasa. Pristup privatnim atributima osnovne klase iz izvedenih klasa, realizacija i upotreba preklopljenih operatora >> i <<. Uslovno prevo?enje. Definicije korisničkih tipova. Neke smernice za konstrukciju srednje složenog programskog sistema.
Zadatak 5.11.2 [3]. Pojam i ostvarenje iteratora.
Diskusija o vremenu života objekata i raspodeli odgovornosti za stvaranje i uništavanje objekata u složenijim programskim sistemima.
Diskusija o mehanizmu pravljenja i unistavanja objekata klasa (nasledjivanje).
Diskusija o virtuelnom destruktoru.
Diskusija teksta 3. domaćeg zadatka.
Jednostavni primeri upotrebe STL zbirki i algoritama (vector, for_each, list, for_each, map).
Primer upotrebe šablonskih algoritama (copy, sort).
Modifikacija zadatka 4.6 [2] koja koristi std::list.
Svi urađeni zadaci se mogu preuzeti odavde: termin 9
termin 10, 07.12.2011. (Projektni uzorci, UML dijagrami)
Projektni uzorak Singleton.
Projektni uzorak Strategy.
Detaljna diskusija o projektnim uzorcima i njiuhovom znacaju za razvoj softvera.
UML dijagrami: klasni dijagram. Diskusija o asocijacijama.
Svi urađeni zadaci se mogu preuzeti odavde: termin 10
termin 11, 14.12.2011. (Projektni uzorci, UML)
Projektni uzorak Composite.
Upotreba mehanizma izuzetaka za oporavak softvera od otkaza.
Diskusija o projektnim uzorcima i njiuhovom znacaju za razvoj softvera.
Diskusija o domacem zadatku.
UML dijagrami: klasni dijagram. Diskusija o asocijacijama (ukrasi asocijacija i njihova implementacija).
Svi urađeni zadaci se mogu preuzeti odavde: termin 11
termin 12, 21.12.2011. (Projektni uzorci, UML)
Projektni uzorak Composite - obnovljen.
Projektni uzorak Template Method (primer preklapanja operatora za ispis <<).
Projektni uzorak Visitor.
Diskusija o domacem zadatku 4.
Svi urađeni zadaci se mogu preuzeti odavde: termin 12
termin 13, 26.12.2011. (Diskusija teksta 4. domaceg zadatka, TSS, simulacija diskretnih dogadjaja)
Diskusija teksta domacih zadataka, upoznavanje sa najbitnijim konceptima.
TSS. Objašenjenje osnovnih koncepata i metodologije simuliracija diskretnih dogadjaja. Definicije korišcenih tipova.
UML dijagrami: klasni dijagram, dijagram sekvence, dijagram kolaboracije.
Svi urađeni zadaci se mogu preuzeti odavde: termin 13
Napomene:
Zadatke koji su izmenjeni u odnosu na literaturu treba uporediti sa izvornim verzijama radi boljeg razumevanja učinjenih izmena.
Originalni programski kod TSS možete preuzeti odavde.
Verziju programskog koda spremnu za rad u MSVC 6 možete preuzeti odavde.
Verziju programskog koda usaglašenu sa standardom i spremnu za rad u MSVC 2005 možete preuzeti odavde.
Verziju programskog koda očišćenu od nepreglednih komentara možete preuzeti odavde.
UML model TSS možete preuzeti odavde.
Zadatak 4.6 [2] postoji i u [3], kao Zadatak 5.11.1, propraćen detaljnim objašnjenjima.
Korišćena literatura
[1] D. Milićev, Objektno orijentisano programiranje na jeziku C++ - skripta sa praktikumom
[2] L. Kraus, Rešeni zadaci iz jezika C++, 2. izdanje
[3] L. Kraus, Programski jezik C++ sa rešenim zadacima, 7. izdanje