Obaveštenja

26.11.2020. Rezultate predispitnih aktivnosti u svakom trenutku možete pogledati ovde.

04.10.2020. Nastava na predmetu će se održavati online po sledećem rasporedu:
Predavanja - Ponedeljak 12:00 - 14:00
Vežbe - Utorak 14:00 - 16:00
Prve nedelje će se dodatno održati čas predavanja u četvrtak 8.10. u 16:00.
Više informacija o načinu izvođenja nastave možete da pogledate u kanalima General, Предавања i Вежбе tima Објектно оријентисано програмирање.

01.10.2020. Nastava u školskoj 2020/2021. će biti održavana online preko platforme MS Teams počevši od prve nastavne nedelje. Link ka predmetu je ovde. Svi termini će biti snimani i dostupni tokom cele školske godine. Po potrebi će biti organizovani i online termini za konsultacije. Tačan raspored časova će biti naknadno objavljen na sajtu predmeta. Za sada je previđeno da se odbrane domaćih zadataka i polaganje ispita održavaju na standardan način u prostorijama fakulteta. Mejling lista preko koje će stizati sva obaveštenja biće kreirana kada se završi upis. Do tada redovno proveravati sajt!

01.10.2020. 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)
dmilicev@etf.rs
http://www.rcub.bg.ac.rs/~dmilicev
Asistent: dipl. inž. Adrian Milaković (vežbe)
aki@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 8.1. Tačka, Linija - Dinamički niz
8.2. Tačka, Linija - vector
8.3. Primer polimorfne destrukcije i kopije objekata.
9 Dinamička struktura podataka - stablo. Obilazak stabla. Rad sa fajlovima. 9.1. TreeNode, BinaryTree
10 Operatorske funkcije. 10.1. Complex, ComplexArray
11 Projektni obrasci. 11.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
2019/2020      
2020/2021      

Domaći zadaci

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

Projektni zadatak

Projektni zadatak za školsku 2020/2021. godinu možete preuzeti ovde. Javni test možete preuzeti ovde.