Spisak zadataka obrađenih na vežbama u toku školske 2006./2007. godine


Termini vežbi i obrađene teme

dvočas 1, 24.10.2006. (Upoznavanje sa razvojnim okruzenjem i osnovni koncepti OOP/C++)
Zadaci 1 i 2 [1].

dvočas 2, 31.10.2006. (Elementi jezika C++ koji nisu objektno orijentisani)
Zadaci 3,4,5 [1], sa osvrtom na svaku novinu u C++, uz paralelu sa jezikom C.
Zadatak 6 [1] je objašnjen u smislu kako radi algoritam i kako bi bio izveden u jeziku C++.

dvočas 3, 07.11.2006. (Elementi jezika C++ koji nisu objektno orijentisani)
Zadaci 6 i 7 [1], operatori new i delete, diskusija o vremenu života objekata.
Zadatak 8 [1], uz usputno pokazivanje razdvajanja programskog koda na više fajlova.

dvočas 4, 14.11.2006. (Klase)
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.

dvočas 5, 05.12.2006. (Konstruktori i destruktori)
Zadatak 4.1 [3], konstruktor kopije, konverzije i podrazumevani konstruktor.
Znatno olakšani zadatak 9 [1]. Olakšanje se ogleda u tome što je tip podataka u steku promenjen u sam tip podatka koji se čuva, umesto pokazivača na taj tip. Dalje, uklonjeno je preklapanje svih operatora koji su bili preklopljeni. Konačno, dodat je fajl sa main() funkcijom koji ilustruje upotrebu klase Stack. Pored ove varijante, pokazana je i verzija zadatka gde stek ne sadrži kopije podataka, već njihove adrese. Napomena studentima: obratite pažnju na namerno ostavljene greške koje su posledice neadekvatnog korišćenja klase Stack.
Zadatak 2.5 [2], kljucna rec explicit.

dvočas 6, 12.12.2006. (Izvedene klase i polimorfizam)
Zadatak 4.2 [2], bazne i izvedene klase, virtuelne metode.
Zadatak 4.4 [2], apstrakne metode i apstraktne klase (bez objašnjavanja preklapanja operatora <<).
Zadatak 4.5 [2], pristup privatnim atributima bazne klase iz izvedenih klasa (bez objašnjavanja preklapanja operatora <<).

dvočas 7, 19.12.2006. (Preklapanje operatora)
Zadatak 10 [1], aritmetički operatori za razne tipove operanada, operatori == i !=, operatori unarno + i unarno -, operator <<; operatorske funkcije kao članice klase i kao prijateljske funkcije; ispravno određivanje povratnog tipa operatorske funkcije; pojam inline.
Olakšani zadatak 9 [1], operator =, prefiksni i postfiksni operator ++, operator <<. Napomena studentima: obratite pažnju na namerno ostavljene greške koje su posledice neadekvatnog korišćenja klase Stack.

dvočas 8, 26.12.2006. (Diskusija teksta projektnog zadatka, rad sa tokovima)
Olakšani zadatak 9 [1]. Upotreba fstream sa preklopljenim operatorom <<.
Otvaranje i zatvaranje datoteka, načini pristupa, čitanje/pisanje, menjanje formata (width, setw, fill, precision).
Jednostavni primeri (ispitivanje stanja toka, pozicioniranje unutar toka i menjanje formata).

dvočas 9, 15.1.2007. (Preklapanje operatora << i >> za klase sa pratećim izvedenim klasama, ključna reč protected)
Zadatak 4.4 [2]. Realizacija i upotreba preklopljenog operatora <<.
Zadatak 4.5 [2]. Realizacija i upotreba preklopljenih operatora >> i <<.
Zadatak 4.6 [2]. Uslovno prevođenje. Definicije korisničkih tipova. Neke smernice za konstrukciju srednje složenog programskog sistema. Virtuelni destruktor.

dvočas 10, 16.1.2007. (Scenario izvršavanja konstruktora kod izvedenih klasa, uvod u TSS, Singleton DP)
Zadatak 9 [1]. Odnos između klasa Stack i StkIterator, koncept iteratora.
TSS. Definicije korišćenih tipova. Klase Event, Scheduler, Model, ModelElement.
Primena projektnog obrasca Singleton u klasama Scheduler i Model.

dvočas 11, 22.1.2007. (TSS, Visitor DP, Strategy DP)
TSS. Klase Visitor, RandomGenerator, Model i iz njih izvedene klase.
Primena Visitor DP u TSS (dokumentacija modela, pregled ispravnosti modela, ...).
Primena Strategy DP u TSS (izbor raspodele generisanih brojeva).
Ispit održan 01.10.2006. - rešenje ispitnog zadatka 5.

dvočas 12, 23.1.2007. (TSS, Template Method DP, Composite DP)
Prošireni zadatak 9 [1]. Upotreba klasa Stack i StkIterator, upotreba operatora () i *.
Izmenjeni zadatak 4.6 [3]. Primena Template Method DP pri realizaciji operatora <<.
TSS. Objašnjenje ostalih značajnih klasa.
Diskusija mogućih primena Composite DP i ostalih obrađenih DP.

Napomene:
Programski kod TSS se može preuzeti odavde. Arhiva sa kompletnim projektom za MSVC 6 se može preuzeti odavde. Arhiva sa kompletnim projektom za MSVC 2005 se može preuzeti odavde.
UML model TSS se može preuzeti odavde.
Zadatak 4.6 [2] se nalazi i u [3], kao Zadatak 6.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, 6. izdanje