| 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.yu/~dmilicev |
| Asistent: | dipl. ing. Andrija Bošnjaković andrija@etf.rs |
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.
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++.
·
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.