05.12.2022. Poene na prvom domaćem zadatku možete videti ovde.

03.10.2022. Dodatni čas predavanja iz predmeta održaće se u četvrtak, 6. oktobra 2022. godine od 16 do 18 časova u sali P26 u paviljonu.

02.10.2022. Nastava u školskoj 2021/2022. će biti održavana uživo počevši od prve nastavne nedelje. Snimke predavanja i vežbi od prošle godine možete pronaći na Teams platformi. Za upis u tim, koristiti opciju "Join a team with a code". U odgovarajuće polje uneti sledeći kod: 5u0oenx
Mejling lista preko koje će stizati sva obaveštenja biće kreirana kada se završi upis. Do tada redovno proveravati sajt!

02.10.2022. Svim studentima želimo uspešan početak nove školske godine!


Informacije o predmetu

Semestar: III
Smerovi: Izborno za sve smerove osim RTI i SI
Šifra: 13E112OOP
Nastavnik: prof. dr Dragan Milićev (predavanja ponedeljak 14-16 sala 311)
dmilicev@etf.rs
http://www.rcub.bg.ac.rs/~dmilicev
Asistenti: as. ms Adrian Milaković (vežbe utorak 14-16 sala 70)
aki@etf.rs
dipl. inž. Pavle Divović (vežbe utorak 14-16 sala 70)
dp@etf.rs
Ocena: Domaći: DZ1 = 10p, DZ2 = 15p, DZ3 (uslov DZ2 > 6p) = 5p
Projekat: P = 20p
Ispit: T = 15p, Z = 35p (uslov T + Z > 25p i uspešno odbranjen projekat)
Detaljna pravila o predmetu možete pronaći ovde.

Tema i cilj predmeta

Objektno orijentisano softversko inženjerstvo je stručna oblast koja se bavi izučavanjem objektne tehnologije izrade softvera. Objektna tehnologija je moderan pristup izradi softvera koji koristi koncepte višeg nivoa apstrakcije nego sto su oni u tradicionalnom, strukturiranom (proceduralnom) programiranju. Objektna tehnologija nudi apstrakcije koje su bliže nivou razmišljanja programera i realnom svetu, omogužuju lakše modelovanje problema, bolju ponovnu upotrebu softverskih rešenja na raznim nivoima, bolju organizaciju softvera, njegovu vežu fleksibilnost, lakše odrzavanje i, najzad, vežu produktivnost u izradi softvera. Zbog svega ovoga, objektna tehnologija predstavlja moderan način proizvodnje softvera bez koga se danas praktično ne može zamisliti razvoj softvera. Izuzetna potražnja za kadrovima sa znanjem u ovoj oblasti u svetu i kod nas inspirisala je i formiranje ovog predmeta.

Pored predavanja i vežbi na tabli, predmet sadrži i praktičan rad u obliku obaveznih i neobaveznih domaćih zadataka, izrade projekata i diplomskih radova. Predmet objašnjava osnovne koncepte objektne tehnologije i prikazuje ove koncepte na najmodernijim OO jezicima (UML, Java i C++), sadrzi osnove objektnog projektovanja (uključujuži i projektne obrasce, engl. design patterns) i detaljno obrađuje jezik C++.


Materijali

Predavanja
  • Slajdove sa predavanja možete preuzeti ovde.
  • D. Milićev, “Objektno orijentisano programiranje na jeziku C++, Skripta sa praktikumom”, Mikro knjiga, Beograd, 2001.
  • D. Milićev, “Objektno orijentisano modelovanje na jeziku UML, Skripta sa praktikumom”, Mikro knjiga, Beograd, 2001.
  • D. Milićev, “Objektno orijentisano programiranje na jeziku C++”, Mikro knjiga, Beograd, 1995.
  • L. Kraus, “Programski jezik C++ sa rešenim zadacima”, 10. izdanje, Akademska misao, Beograd, 2016.
  • L. Kraus, “Rešeni zadaci iz programskog jezika C++”, 5. izdanje, Akademska misao, Beograd, 2016.
  • Referentni priručnik: en.cppreference.com
Vežbe
Vežbe Gradivo Opis
1 Ponavljanje jezika C - Rad sa nizovima i listama. 1.1. Unos ocena i statistika
1.2. Predvidjanje boje jabuke na slikama
2 Klasa i objekat. Apstrakcija. Enkapsulacija. Konstruktor. 2.1. Igra na tabli - Pozicija na tabli
2.2. Datum
2.3. Igra na tabli - Igrač
3 Klasa i objekat. Destruktor. Parsiranje teksta. 3.1. Editor za slike
3.2. Kompleksni brojevi
3.3. Igra na tabli - Tabla
4 Statičke biblioteke. Nasleđivanje. Polimorfizam. 4.1. Igra na tabli - Nova vrsta igrača
4.2. Datum sa vremenom
5 Apstraktne klase i funkcije. Hijerarhijska dekompozicija. 5.1. Geometrijska tela
6 Izuzeci. Šabloni. STL. 6.1. Šablonska lista
7 Preporučeni stil pisanja koda. Inicijalizacija objekata. Konstantne metode. Konstantni podaci. Skup imenovanih konstanti - Enum. Reference. 7.1. Telefonske usluge
8 Klase bezbedne za korišćenje. Operatorske funkcije. Kolekcije i iteratori. Rad sa fajlovima. 8.1. Tačka, Linija - niz
8.2. Tačka operatori
8.3. Linija vector
8.4 Fajlovi.
9 Dinamička struktura podataka - stablo. Obilazak stabla. Stablo template. 9.1. BinaryTree
9.2. BinaryTree template
10 Projektni obrasci. 10.1. Singleton, Strategy
Uputstva za rad sa razvojnim okruženjem VS2017
  • Uputstvo za slanje rešenja domaćih zadataka možete preuzeti ovde.
  • Uputstvo za rad sa statičkim bibliotekama možete preuzeti ovde.
  • Uputstvo za zadržavanje konzole na ekranu prilikom pokretanja programa bez debagovanja možete preuzeti ovde.
  • Uputstvo za dozvolu korišćenja nestandardnih jezičkih konstrukcija možete preuzeti ovde.
  • Uputstvo za deo domaćeg zadatka vezanog za rad sa makroima možete preuzeti ovde.

Rokovi

Školska godina Januar Februar
2021/2022      
2020/2021      
2019/2020      

Domaći zadaci

Školska godina DZ1 DZ2 DZ3
2022/2023      
2021/2022      
2020/2021      
2019/2020      
2018/2019
2017/2018
2016/2017
2015/2016

Projektni zadatak

Projektni zadatak za školsku 2022/2023. godinu možete preuzeti ovde. Javni test možete preuzeti ovde.