Objektno orijentisano programiranje

Školska 2016/2017. godina


OBAVEŠTENJE: Rok za slanje prvog domaceg zadatka je 17.11.2016. u 16h.
Dodatna objašnjenja o slanju domaćeg biće poslata čim proradi mejling lista predmeta.


Mailing lista predmeta

Sva obaveštenja o projektima, terminima odbrane, rezultatima ispita, promenama na sajtu i apsolutno svemu vezanom za predmet će ići ISKLJUČIVO preko mailing liste. Zato je NEOPHODNO da studenti redovno prate listu, kako bi bili blagovremeno obaveštavani o svemu relevantnom za predmet.
Lista je dostupna ovde.

Materijali

Ukratko o predmetu
Detaljna obaveštenja i pravila predmeta (važe od 29.09.2014.)
Predavanja
Vežbe
Projektni zadaci
Domaći zadaci
Ispitni rokovi

Tehničke informacije o predmetu

Semestar: III
Smerovi: Izborno za sve smerove osim RTI
Šifra: OE2OOP, OE4OOP, OF2OO1, OS2OO1, OS3OOP, OT2OOP, OT3OOP
Nastavnik: Prof. dr Dragan Milićev (predavanja)
dmilicev@etf.rs http://www.rcub.bg.ac.rs/~dmilicev
Asistent:Nemanja Kojić
nemanja.kojic@etf.rs http://home.etf.rs/~nemanja.kojic

 

 

 

 

 


Fond časova: nedeljno 4, ukupno 14 x 4 = 56; predavanja i vežbe se kombinuju u skladu sa dinamikom prelaska gradiva.

Konsultacije: Za sva pitanja je najbolje koristiti mailing listu. U slučaju da taj način komunikacije student smatra neadekvatnim za svoje pitanje, kraća pitanja i kraći odgovori se najefikasnije se razmenjuju e-poštom, a za duža pitanja je bolje obaviti usmene konsultacije, koje se obavljaju za vreme ili između časova nastave, ili u drugo vreme po prethodnom dogovoru.

Važna napomena: Sva pravila navedena na sajtu predmeta važe sve dok na sajtu predmeta, na časovima nastave, na oglasnoj tabli ili putem mailing liste ne bude objavljeno drugačije.


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++.


Program predmeta

·        Uvod u objektnu tehnologiju. Motivi za nastanak OO tehnologije. Šta čini OO tehnologiju. Uvod u modelovanje. Apstrakcija i konceptualizacija.

·        Osnovni koncepti OO paradigme (motivacija, semantika, podrska u jezicima UML, C++ i Java). Klasa i objekat. Atribut. Strukturne relacije. Generalizacija/Specijalizacija. Operacija. Polimorfizam. Enkapsulacija. Interfejs. Interakcija.

·        Uvod u jezik C++. Opšti principi konstrukcije jezika. Uvodni primer.

·        Opšti elementi jezika C++. Leksički elementi. Tipovi i konverzije. Ugrađeni tipovi. Deklaracije i opseg važenja. Životni vek objekta. Struktura programa, principi prevođenja i povezivanja. Pretprocesor.

·        Proceduralni elementi jezika C++. Operatori, izrazi i lvrednosti. Naredbe. Funkcije: Deklaracija i poziv; Podrazumevane vrednosti argumenata; Inline funkcije. Preklapanje imena funkcija.

·        Klase. Klase, članovi i objekti: Definicija klase; Objekti; Pokazivač this; Statički podaci članovi; Statičke funkcije članice. Prava pristupa; Prijatelji. Konstruktori i destruktori.

·        Preklapanje operatora. Pojam preklapanja operatora. Operatorske funkcije. Neki posebni operatori.

·        Izvedene klase i polimorfizam. Definicija izvedene klase. Prava pristupa. Konstruktori i destruktori. Virtuelne funkcije. Virtuelni destruktor. Substitucija. Nizovi i izvedene klase. Apstraktne funkcije i klase.

·        Uvod u projektne obrasce. Šta su projektni obrasci. Obrasci: Singleton, Strategy, Template Method, Visitor, Composite.