objektno orijentisano programiranje

22
VISOKA TEHNIČKA ŠKOLA STRUKOVNIH STUDIJA U ZRENJANINU Nastavni predmet: TEHNIKE PROGRAMIRANJA Studijski program: Inženjerski menadžment Modul: Računarstvo Objektno – orijentisano programiranje - seminarski rad - Predmetni nastavnik: dr Željko Eremić Student, Br. indeksa:

Upload: teslaki

Post on 04-Oct-2015

18 views

Category:

Documents


2 download

DESCRIPTION

Objektno orijentisano programiranje kroz osnovne pojmove kao što su: metode, funkcije, procedure, objekti.

TRANSCRIPT

OOP

VISOKA TEHNIKA KOLA STRUKOVNIH STUDIJA U ZRENJANINU

Nastavni predmet: TEHNIKE PROGRAMIRANJAStudijski program: Inenjerski menadmentModul: Raunarstvo

Objektno orijentisano programiranje- seminarski rad -

Predmetni nastavnik:dr eljko EremiStudent, Br. indeksa:

Zrenjanin, 2014.

Sadraj

Uvod3Objekti5Klasa5Atributi i metode6Princip apstrakcije7Modularnost i enkapsulacija8Nasleivanje9Polimorfizam11Zakljuak12Literatura13

UvodObjektno orijentisano programiranje je paradigma programiranja iju osnovu za projektovanje aplikacija ine objekti. Ova paradigma se javila ranih 1980-tih godina i do dana je postala najuticajnija paradigma u komercijalnom razvoju softvera. Program (aplikacija) u proceduralnim programskim jezicima se moe posmatrati kao skup potprograma (procedura i funkcija) kojima se obrauju podaci, dok program u objektno orijentisanim programskim jezicima poredstavlja skup objekata koji deluju jedni na druge slanjem poruka.Reavanje problema paradigmom objektno orijentisanog programiranja predstavlja sasvim nov nain razmiljanja u odnosu na tradicionalno algoritamsko programiranje tj. veoma je slino ljudskom nainu razmiljanja i reavanju problema. Problemi se identifikuju kao objekti koji neto rade i apstrakcije koje predstavljaju skupove objekata istih svojstava. Kod objektno orijentisanog programiranja mnogo vie vremena se troi na projektovanje, a mnogo manje na samu implementaciju, to podvruje tezu da se kod ove vrste programiranja vie razmilja o delovima sistema tzv. objektima, koji neto rade, a manje o tome kako se neto radi (algoritmi). Drugim reima, objektno orijentisano programiranje prvenstveno koristi objektnu dekompoziciju umesto iskljuivo algoritamske dekompozicije. Interakcija izmeu objekata se sastoji u razmeni poruka, gde odreena poruka usmerena prema odreenom objektu, pokree enkapsulirana operacije u tom objektu, ime se reava deo obino ireg i sloenijeg problema. Uopteno gledano, objektno orijentisano reavanje problema se sastoji iz etiri koraka:1. identifikovanje problema;2. identifikovanje objekata koji su potrebni za njegovo reavanja;3. identifikovanje poruka koje e objekti meusobno slati i primati i4. kreiranje sekvence poruka objektima, koje e reavati problem ili tue probleme. Osnovu objektno orijentisanog programiranja predstavlja ideja da se u jednoj stukturi podataka objedine kako podaci, tako i akcije koje se sprovode nad tim podacima. Ta strukture se u terminologiji objektno orijentisanog programiranja nazivaju metode. Tipina organizacija je u hijerarhijske klase, gde svaka klasa objekta poseduje informacije o osobinama objekta koje se uvaju u instancama promenljivih i koje su povezane (konceptom asocijacije) sa svakom instancom u odreenoj klasi. Svaki objekat prepoznaje drugi objekat preko njegovog interfejsa. Podaci i logika svakog objekta su skriveni od drugih objekata ime se omoguava razdvajanje implementacije od ponaanja objekta u interakciji sa drugim objektima.

Osnovne osobine objekata su identitet, stanje i ponaanje. Identitet predstavlja naziv objekta kojim se odreeni objekat razlikuje od ostalih. stanje objekta je deo prolosti i sadanjosti koji odreuju ponaanje objekta u budunosti. Ponaanje objekta je odreeno operacijama koje se nad objektnom mogu izvriti, a aktiviranje operacije se vri porukom.Objektno orijentisano programiranje se vodi osnovnim principima koji glase:1. sve je objekat osim objekta nema nieg drugog;2. program je skup objekata koji zadaju poslove jedan drugom preko slanja poruka;3. svaki objekta poseduje sopstvenu memoriju;4. svaki objekat priprada sopstvenoj klasi i 5. svi objekti iste klase mogu primati iste poruke. Objektno orijentisani programski jezici se mogu implementirati statiki i dinamiki. Dinamiku implementaciju poseduju netipizirani jezici (npr. SMALLTALK). U ovakvim programskim jezicima se ne koristi informacija o tipovima podataka, ve samo informacija o pripadnosti objekta odreenoj klasi. Informacija o pripadnosti objekta odreenoj klasi koristi se tek u fazi izvravanja programa. Veina objektno orijentisanih jezika je implementirana statiki. Kod ovakivih programskih jezika, informacija o pripadnosti objekta odreenoj klasi koristi se u fazi kompilovanja programa, na slian nain kao to se kod proceduralnih programskih jezika koristi informacija o tipu promenljive. Neki od bitnih koncepata objektno orijentisanog programiranja predstavljaju: klase, objekti, enkapsulacija, metode i svojstva, konstruktori i destruktori, nasleivanje i polimorfizam.

ObjektiU objektno orijentisanom pristupu pod objektom se podrazumeva entitet koji je sposoban da uva svoja stanja i koji stavlja na raspolaganje okolini skup operacija preko kojih se ta stanja prikazuju ili menjaju. Pod stanjem objekta se podrazumeva skup informacija o njegovoj prolosti i sadanjosti koji je dovoljan da odredi njegovo budue ponaanje (budua stanja) pod dejstvom definisanog skupa njegovih operacija. Drugim reima, neki objekat se opisuje preko skupa operacija i skupa stanja koja uvaju efekte tih operacija.Sa take gledita njegovog korienja objekat se moe tretirati kao crna kutija, jer se moe koristiti samo preko njegovog interfejsa - operacija. Meutim, u razvoju objektno orjentisanih sistema neophodno je opisati i njegovu unutranjost, njegova stanja, odnosno atribute i veze sa drugim objektima, kao i nain implementacije njegovih operacija.Isto tako, u jednom sloenom sistemu postojae mnotvo objekata, pa bi i njihov direktan opis bio veoma sloen. Zbog toga je neophodno uvesti apstrakciju klasifikacije i definisati pojam klase objekata kao skupa objekata slinih karakteristika: atributa, veza sadrugim objektima i operacija (ponaanja).KlasaKlasa pretstavlja skup objekata slinih karakteristika. Opisivanjem (specifikacijom) klase opisuju se i svi objekti koji joj pripadaju. Imajui to u vidu moe se rei da je klasa definicija, odnosno ablon (template) koja omoguava da se kreira novi objekat koji joj pripada. Zbog toga klasa opisuje kako je objekat interno struktuiran, koji su njegovi atributi i veze, a ne samo koje se operacije sa objektom mogu izvesti. Klasa definie i unutranju strukturu objekta, pa se zato klasa moe tretirati kao jedna (od vie moguih) implementacija tipa objekta.Objekat koji pripada nekoj klasi naziva se pojavljivanje klase tzv. instanca. Ako se klasa tretira kao generator slinih objekata, pojavljivanje je objekat koji je kreirala neka klasa. Zato su pojmovi pojavljivanja i objekta sinonimi.Uvoenjem pojma klase realizuje se apstrakcija klasifikacije i time znaajno pojednostavljuje model sistema: jedinstvena definicija atributa i veza klase memorie se samo jednom, kod za operacije nad objektima jedne klase pie se samo jednom.Na dijagramima objekata i dijagramima klasa, klase se najee prikazuju pravougaonikom, a pojedinani objekti zaobljenim pravougaonikom. U prikazu pojavljivanja objekta navodi se naziv klase u zagradi i naziv objekta. Moe postojati i objekat koji je anonimno pojavljivanje neke klase.

Atributi i metodePod atridutom se podrazumeva osobina klase koja opisuje neku vrednost (stanje, informaciju) koju e sadrati svaki objekat posmatrane klase. Na primer, atributi klase Osoba su Ime, Starost, Teina i slino.Svako ime atributa je jedinstveno u okviru klase. Drugim reima i klasa Osoba i klasa Preduzee mogu imati atribut Adresa.Atributi se prikazuju u drugom delu pravougaonika za prikazivanje klasa, a njihove vrednosti se navode istim redosledom u prikazu pojavljivanja ili kao par

Iza naziva atributa opciono moe da slede neki detalji kao to su tip atributa, podrazumevana vrednost, ogranienje i slino.Interni jedinstveni identifikator nije neophodno predstavljati kao atribut klase, on se podrazumeva, jer ga veina objektno orjentisanih jezika automatski generie za svako pojavljivanje objekta. Eksterni identifikatori objekata treba pretstavljati kao bilo koje druge atribute objekata.Metodom opisujemo ponaanje objekta u odreenoj situaciji i pod odreenim uslovima, ali i odreujemo nove vrednosti na osnovu osobina koje objekat poseduje. Na taj nain opisujem funkcionalnost objekta.Pre poziva metoda vezanog za klasu naophodno je pomou konstruktora napraviti odreani objekta na koji e se taj metod primeniti. Metod klase je imenovani blok naredbi koji se sastoji iz zaglavlja i tela metoda. U zaglavlju navodimo povratni tip (ako metod ne proizvodi vrednost koju vraa, navodimo rezervisanu re void). a zati mime metoda za kojim sledi u spisak parametara metoda. Za svaki parametar navodi se tip kome taj parametar pripada kao i ime parametra. U programskom jeziku C# metod bi imao sledeu sintaksu:

povratni tipime_metode(lista parametara koje metoda koristi) {telo metode}Svi atributi konkretnog objekta dostupni su i vidljivi svim metodima tog objekta i traju dok traje objekat. Za razliku od njih, promenljive deklarisane u okviru nekog od metoda (lokalne promenljive), nastaju izvravanjem tog metoda, vidljive su samo u okviru njega, i gase se zavretkom tog metoda. Dakle, ako je potreno da koristimo vrednost u okviru vie metoda jedne klase (ili u vie izvravanja jednog metoda), moemo je definisati kao atribut klase. Zbog toga se pojam metode i pojam operacije se u objektno orijentisanom pristupu esto izjednauju.

Princip apstrakcijeApstrakcija predstavlja razdvajanje bitnog od nebitnog, i uoavanje bitnog. Razlikujemo dva sluaja apstrakcije.Apstrakcija entiteta predstavlja vrstu apstrakcije kod koje neke stvari proglaavamo za bitne odnosno nebitne (koje se kasnije ne modeluju). Tipian primer ove vrste apstrakcije se moe pronai u kinematici gde materijalna taka nema dimenzije. U objektno - orijentisanom programiranju postoji domen problema, pomou kojeg neku osobinu proglaavamo relativnom za taj domen problema. Npr. broj indeksa je u domenu fakulteta bitan, ali u domenu optine on nema neku bitnu funkciju. Tako da se osobine koje su relativne modeluju, a sve druge se ostavljaju sa strane.Druga vrsta apstrakcije predstavlja apstrakciju koja detalje realizacije proglaava nebitnim, ali se oni ne odbacuju. Na primer kod funkcije sinus mi ne treba da znamo kod po kojem ta funkcija radi, ve nas treba da interesuje ta on radi. Kod ove vrste apstrakcije nebitno se ostavlja sa strane, a jedino to je bitno je interfejs. Na ovu vrstu apstrakcije se nadovezuje princip skrivanja informacija (information hiding principle), koji glasi: Detalji realizacije koji se smatraju nebitnim ne smeju biti pristupni korisniku! Upotrebu apstrakcije moemo prikazati na primeru aplikacije koja se koristi za bibliotekama u svrhu iznajmljivanja knjiga. Da bismo mogli modelovati objekat tipa Knjiga potrebno je odrediti njegove bitne osobine. Ako gledamo iz perspektive bibliotekarke, ona bi kao glavne osobine mogla izdvojiti naslov, autore, ISBN broj i kategoriju kojoj knjiga pripada. Naime, njega perspektiva je odreena njenim poslom biblioteku treba organizovati po kategorijama ili po abecednom redosledu autora ili naslova, ili moda ISBN brojevima. Iz perspektive uenika, glavne osobine knjige bi bile naslov, autor i broj stranica.Drugi primer moemo uzeti iz ivotinjskog sveta. Ako maku posmatra dete, ono e videti samo kunog ljubimca za kojeg zna da moe da prede, da se penje po drvi i da hvata mieve (ponaanje), te da ima glatku dlaku razliitih boja i dug rep (osobine). Veterinar e na maku gledati kao ivotinju sa odreenim rasporedom unutranjih organa koja moe imati neke specifine bolesti te informacije su bitne u njegovom poslu.Apstrakcija nam, dakle, definie ono to neto jeste, najjednostavnije i najtanije mogue i ne vie no to nam je nuno potrebno. Takoe, apstrakcija nam omoguava da problem adresiramo u njegovom vlastitom domenu, a ne u domenu programskog jezika u kojem emo modelirati reenje.

Modularnost i enkapsulacijaModularnost se odnosi na postupak razbijanja programa na manje delove koji mogu autonomno funkcionisati. Modularnost se primenjuje kako bi se omoguila viestruka upotreba softverskih komponenti, odnosno takozvana ponovna upotreba koda (code reuse).Bitna karakteristika objekata kod objektno orijentisanog pristupa je uaurenje (encapsulation), sakrivanje informacija (information hiding). U strogo objektnim pristupima jedini nain da se pristupi stanjima objekta ili da se ona promene je preko neke, iz skupa definisanih, operacija: jedini vidljivi deo objekta su operacije i to ne nain na koji su implementirane, ve samo njihovi efekti (specifikacija). Da bi se neki objekat koristio dovoljno je znati samo semantiku operacija koje on nudi, a ne i nain implementacije njegovih stanja i operacija. Koncept uaurenja i sakrivanja informacija potie od pojma apstarktnog tipa podatka koji je u softversko inenjerstvo uveden ranije i koji je tretiran kao softverska komponenta koje se moe koristiti za razvoj sloenih programa bez poznavanja naina njene implementacije - samo na osnovu njegove specifikacije.Uaurenje, odnosno sakrivanje informacija ima poseban znaaj za razvoj i odravanje sloenih softverskih sistema. Uaurenje smanjuje sloenost sistema na taj nain to omoguuje korienje objekata (komponenti softvera) bez poznavanja njihove mogue veoma sloene strukture. Promena implementacije objekta, uz zadravanje semantike korienih operacija, ima samo lokalni efekat.Uaurenje se moe postii ograniavanjem pristupa unutranjim podacima nekog objekta. Prava pristupa pojedinim metodama i elementima klasa prilikom deklaracije mogu se definisati korienjem kljunih rei:1. public elementi su deo javnog interfejsa i dostupni su svim drugim klasama;2. private elementi su dostupni samo klasama u kojim su deklarisani i prijateljskim klasama;3. protected elementi su dostupni klasi u kojoj su deklarisani, potklasama i prijateljskim klasama.Razliiti programski jezici kljunim reima definiu razliite nivoe pristupa elementima. Zavisno od odabrane kljune rei moemo postii efikasnu kontrolu podataka, poto je pristup istim delimino ili potpuno filtriran. Ako elemetima objekta pridodamo kljunu re private, niti jedan drugi objekat spolja im nee moi pristupiti i ti podaci e biti skriveni. U tom sluaju na objekat moemo gledati kao na crnu kutiju ija su interna stanja zatiena od bilo kakvog uticaja spolja.Kljuna re protected doputa malo veu slobodu pristupa jer klasa ne sakriva svoje elemente od svojih naslednika niti sama od sebe.Kljunom re public pristup podacima je omoguen svima i oni nisu ni na koji nain skriveni od spoljnog sveta. Nezavisno od toga, povezanost tih podataka (celina, izolovana od okoline nekom barijerom) nije pod znakom pitanja. Dakle, iako podaci nisu skriveni, oni su i dalje enkapsulirani. Tanije, skrivanje podataka je jedan od mehanizama kojima se enkapsulacija ostvaruje, a ne nuno njen sinonim.

Jedna o estih greaka je poistoveivanje enkapsulacije sa apstrakcijom. Ova dva koncepta objektno orijentisane paradigme su usko povezana, ali treba imati u vidu i da su oni komplementarni, a ne identini. Apstrakcijom se identifikuju i definiu bitne vrednosti i detaljno ponaanje nekog objekta, a enkapsulacijom se ti najbitniji delovi povezuju u ograene celine i otkrivaju se samo oni bitni.Uaurenje moemo objasniti na primeru tampanja rauna lanu video kluba. Onaj ko iznajmljuje filmove lanovima, ne mora da zna na koji nain e se obaviti radnja Napravi raun, ve je njemu bitno samo formiranje rauna radi njegove tampe. NasleivanjeJedan od fundamentalnih aspekata objektno orijentisanog programiranja je nasleivanje. Postoji vie vrsta nasleivanja nasleivanje implementacije i nasleivanje interfejsa. Takoe, zavisno od programskog jezika i njegove objektno orijentisane implementacije nasleivanja, moe se podeliti na jednostruko ili viestruko. Sutinska definicija nasleivanja je da ono predstavlja vezu izmeu klasa u kojoj jedna klasa nasleuje strukturu i ponaanje druge klase jednostruko nasleivanje ili vie klasa viestruko nasleivanje. Jedan od objektno orijentisanih programskih jezika koji podrava sistem viestrukog nasleivanja je C++ dok recimo C# podrava samo jednostrano nasleivanje.

Slika 1 Nasleivanje (klasa B nasleuje klasu A)Klasa koja se nasleuje naziva se baznom ili osnovnom klasom, a klasa koja je nasleuje naziva se izvedenom klasom. Dakle, nasleivanje je hijerarhijska organizacija klasa, gde jedna klasa nasleuje drugu i zadrava kompletan sadraj klase koju nasleuje i taj sadraj moe proiriti ili redefinisati.Koncept nasleivanja je od velike pomoi programerima jer izmeu ostalog obezbeuje redukciju i lake odravanje koda (zajednike osobine i funkcionalnosti piu se samo jednom, a njihove eventualne izmene vrimo samo u osnovnoj klasi).U izvedenim klsama moemo predefinisati neke od nasleenjih funkcionalnosti u skladu sa specifinostima izvedene klase. Na taj nain je omogueno da objekti razliitih izvedenih klasa reaguju razliito izvravajui istu funkcionalnost osnovne klase.

Nasleivanje ima pet osnovnih osobina i to su:1. Izvoenje klase B iz klase A ne zahteva prstup njenom izvornom kodu;2. Postoji mogunost dodavanja sadraja, to znai da klasa B preuzima sve to sadri klasa A s tim da se je u klasi B mogue dodati nova polja ili metode.3. Postoji mogunost modifikacije metoda, to znai da se isti posao u klasi A i klasi B ne izvrava istom metodom. Modifikacija metode se zove redefinisanje jer nema drugog naina da metodu primenimo nego da je ponovo napiemo pod istim imenom.4. Tranzitivnost je obavezna osobina. Ako klasa C nasleuje klasu B, a ona nasleuje klasu A, onda klasa C nasleuje klasu A.5. Viestruko nasleivanja je nasleivanje kod kojeg klasa nasleuje dve ili vie klasa. U domenu problema nema previe viestrukog nasleivanja. Primer, radio-sat moe da nasledi i klasu radio i klasu sat. Slika 2 Viestruko nasleivanje

PolimorfizamPolimorfizam (eng. polymorphism) je osobina po kojoj metoda ima parametre razliitih tipova i koja uz enkapsulaciju, apstrakciju i nasleivanje predstavlja vano svojstvo koje objektno orijentisani jezik mora da podrava. Kod objektno orijentisanog programiranja, pozivanje metode se moe smatrati i slanjem poruke objektu. Objekat odgovara izvravanjem prikladne metode. Budui da objekat zna koje je vrste, onda zna i kako reagovati na tu poruku. S ove take gledanja, objekti su aktivne jedinice koje primaju i alju poruke, a polimorfnost je prirodni i neophodni deo ovog naina programiranja. Polimorfnost znai samo da razliiti objekti mogu razliito reagovati na istu poruku.Primer za polimorfizam koji se najee sree u literaturi je primer sa geometrijskim figurama. Neka je osnovna (bazna) klasa Geometrijska_figura, a izvedene klase Krug i Pravougaonik. Svaki Geometrijska_figura ima svoju povrinu, ali se ona za Krug izraunava na drugaiji nain nego za Pravougraonik.

Slika 3 Vrste polimorfizmaParametarski polimorfizam je najstariji, a na njega nailazimo i kod funkcija i kod klasa. Parametarski polimorfizam funkcije je njena osobina da ona podeava svoje ponaanje prema tipu podatka. Kao to potprogram ima paramtere koji tek pri pozivu dobijaju vrednosti tako je i funkcija u stvari parametarizovana. Takve klase i tipovi koji iskazuju osobine ovog polimorfizma nazivaju se generike klase i generiki tipovi. Generike klase i tipovi su u stvari parametarizovani drugim tipovima. Generiki tip u programskom jeziku C je niz.Kod inkluzionog polimorfizma promenljiva ili objekat se ponaaju kao da menjau tip. Ova vrsta polimofrizma je posebno vana za objekte. Od svih polimorfizama ovaj je najvaniji jer on u kombinaciji sa nasleivanjem predstavlja sr objektno orijentisanog programiranja.Preklapanje funkcija i operatora je polimorfizam kada se u jednoj klasi mogu nai funkcije sa istim imenom i operatori sa istim znakom. Koercitivni polimorfizam se naziva jo i prinudni polimorfizam. Promenljiva biva prinuena da se ponaa kao neka druga promenljiva ili kao promenljiva drugog tipa tj. biva prinuena da promeni svoj tip.

ZakljuakObjektno orijentisano programiranje (OOP) je pristup realizaciji softvera kao modelu realnog sveta. Reavanje problema paradigmom objektno orijentisanog programiranja je vrlo slino ljudskom nainu razmiljanja i reavanju problema, a sastoji se od identifikovanja objekata i njihovog postavljanja u odgovarajuu sekvencu kako bi se mogli koristiti za reavanje odreenog problema. Strukturnim programiranjem teimo da to realistinije modeliramo (simuliramo) ponaanje nekog sistema. Objektno orijentisano programiranje predstavlja implementacionu metodu kod koje su programi organizovani kao kooperativni skup objekata pri emu svaki objekat predstavlja instancu neke klase iz hijerarhije klasa nastale na bazu relacija nasleivanja. Pod objektom u objektno orijentisanom programiranju se podrazumeva entitet koji je sposoban da uva svoja stanja i koji stavlja na raspolaganje okolini skup operacija preko kojih se ta stanja prikazuju ili menjaju.Klasa pretstavlja skup objekata slinih karakteristika. Opisivanjem klase opisuju se i svi objekti koji joj pripadaju. Klasa definie i unutranju strukturu objekta, a objekat koji pripada nekoj klasi naziva se pojavljivanje klase tzv. instanca. Apstrakcija je pojednostavljena predstava nekog sistema, kreirana tako da naglsai za nas relevantne karakteristike, ignoriui sve to je nama nebitno. Ona predstavlja jedan od osnovih mehanizama pomou kojih se ljudi bore sa kompleksnim problemima. Uaurivanje je postupak objedinjavanja stanja i ponaanja u jednu celinu. Krajnji rezultat uaurivanja je klasa. Drugi zadatak enkapsulacije je obezbeivanje kontrole pristupa u cilju potovanja principa skrivanja informacija.Modularnost se odnosi na postupak razbijanja programa na manje delove koji mogu autonomno funkcionisati, a primenjuje se kako bi se omoguila viestruka upotreba softverskih komponenti.Nasleivanje predstavlja mogunosti hijerarhijske organizacije klasa. Kada jedna klasa nasledi drugi ona zadrava kompletan sadraj klase koju nasleuje, a taj sadraj se moe redefinisati ili proiriti.Polimorfizam je kontekstno zavisno ponaanje, a moe biti univerzalni i ad hoc. Univerzalni polimorfizam se deli na parametarski i inkluzioni, a Ad hoc se moe podeliti preklapanje i koercitivni polimorfizam.Objektno orijentisano programiranje uvodi drugaiji nain razmiljanja u programiranja, mnogo vie vremena se troi na projektovanje, a manje na samu implementaciju.

Literatura[1] Z. Cvrkovi Objektno orjentisano programiranje, Fakultet poslovne informatike, Banja Luka, 2013. godine;[2] M.Mihaljevi, A, Vignjevi Objektno orijentirana paradigma u C#, Fakultet elektrotehnike i raunarstva, Zagreb, 2007. godine;[3] http://sh.wikipedia.org/wiki/Objektno_orijentisano_programiranje, vreme pristupa: jun, 2014. godine;[4] http://www.edusoft.math.rs/, vreme pristupa: jun, 2014. godine;[5] http://www.link-elearning.com/, vreme pristupa: jun, 2014. godine;

13