64
Programske paradigme Objektno orijentisana paradigma Milena Vujoˇ sevi´ c Janiˇ ci´ c www.matf.bg.ac.rs/~milena Programske paradigme Beograd, 24. маj, 2016.

Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

Programske paradigmeObjektno orijentisana paradigma

Milena Vujosevic Janicic

www.matf.bg.ac.rs/~milena

Programske paradigmeBeograd, 24. маj, 2016.

Page 2: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

Pregled

1 Motivacija

2 Nastanak OOP

3 Osnove OOP

4 ОО jezici

5 Pitanja i literatura

Milena Vujosevic Janicic Programske paradigme

Page 3: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

Pregled

1 Motivacija

2 Nastanak OOP

3 Osnove OOP

4 ОО jezici

5 Pitanja i literatura

Milena Vujosevic Janicic Programske paradigme

Page 4: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

Funcionalna dekompozicija problema — „Od opsteg kaposebnom”

Postupak: podeli veliki problem u manje korake koji supotrebni da bi se problem resio. Za bas velike probleme, podeliih u manje potprobleme, pa onda dekomponuj manjepotprobleme u odgovarajuce funkcionalne korake.Cilj je da se problem deli dok ne dode do onog nivoa koji jejednostavan i moze da se resi u nekoliko koraka, tada se tikoraci poredaju u odgovarajucem redosledu koji resavaidentifikovane potprobleme i na taj nacin je i veliki problemresen.Ovo je prirodan nacin razmisljanja, ALI...

Milena Vujosevic Janicic Programske paradigme

Page 5: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

Nedostaci funkcionalne dekompozicije problema

Postoje dva osnovna problema ovog pristupa1 Na ovaj nacin se kreira program koji je dizajniran na osnovu

osobina glavnog programa — ovaj program kontrolise i zna svedetalje o tome sta ce biti izvrseno i koji ce se strukturepodataka za to koristiti.

2 Ovakav dizajn ne odgovara dobro na izmene zahteva — oviprogrami nisu dobro podeljeni na celine tako da svaki zahtevza promenom obicno zahteva promenu glavnog programa:mala promena u strukturama podataka, na primer, moze daima uticaja kroz ceo program.

Milena Vujosevic Janicic Programske paradigme

Page 6: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

Uticaj izmena

Resavanje problema orijentisanjem na procese koji se desavajuda bi se problem resio ne vodi do programskih struktura kojemogu da lako reaguju na izmene: izmene u razvoju softveraobicno ukljucuju varijacije na postojece teme.Na primer, razmatrali smo funkcionalnu dekompozicijuproblema izracunavanja prosecnog rastojanja izmedu tacaka uravni:

Razmatrati prosecno rastojanje tacaka u prostoru.Razmatrati prosecno rastojanje izmedu nekih drugih objekata.Razmatrati i druge odnose objekata, ne samo rastojanje.

U glavnom programu, ovi tipovi izmena povecavajukompleksnost i zahtevaju puno dodatnih fajlova da se ponovokompiliraju.

Milena Vujosevic Janicic Programske paradigme

Page 7: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

Zasto je uticaj izmena vazan?

Mnoge greske nastaju prilikom izmena koda.Stvari se menjaju, uvek se menjaju i nista ne moze da sprecinastajanje izmena i potrebu za pravljenjem izmena!Moramo da obezbedimo da postoji dizajn koji ce odoletizahtevima za izmenama, dizajn koji je otporan (fleksibilan) naizmene.Treba nam dizajn koji je takav da moze da se prilagodipromenama na pravi nacin.

Milena Vujosevic Janicic Programske paradigme

Page 8: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

Osobine koda nastalog funkcionalnom dekompozicijom

Kod koji se razvija primenom funkcionalne dekompozicije imaslabu koheziju i jako kopcanje, odnosno radi previse stvari iima previse povezanosti.Kohezija je pojam koji se odnosi na to koliko blisko supovezane operacije koje se vrse u rutini.Pojednostavljeno, ono sto zelimo je da svaka rutina radi samojednu stvar, ili da se svaki modul odnosi na samo jedanzadatak.

Milena Vujosevic Janicic Programske paradigme

Page 9: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

Osobine koda nastalog funkcionalnom dekompozicijom

Kopcanje se odnosi na jacinu povezanosti dve rutine.To je pojam komplementaran koheziji, slaba kohezija povlacijako kopcanje i jaka kohezija povlaci slabo kopcanje.Sa jakim kopcanjem, jedna promena u nekoj funkciji ilistrukturi podataka uzrokuje potrebu za dodatnim promenamau svim drugim delovima sistema.Zelimo jaku kohezivnost i slabo kopcanje.

Milena Vujosevic Janicic Programske paradigme

Page 10: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

Efekat talasanja (ripple effect)

Potrebe za izmeneama u okviru celog koda otezavajudebagovanje i razumevanje zadataka koje sistem obavlja.Napravimo izmenu, a neocekivano nesto drugo u sistemu nefunkcionise — to je nezeljeni propratni efekat talasanjaUkoliko imamo kod sa jakim kopcanjem, otkrivamo da mnogidelovi sistema zavise od koda koji je izmenjen — trebavremena se otkriju i razumeju ti odnosi.

Milena Vujosevic Janicic Programske paradigme

Page 11: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

Pregled

1 Motivacija

2 Nastanak OOP

3 Osnove OOP

4 ОО jezici

5 Pitanja i literatura

Milena Vujosevic Janicic Programske paradigme

Page 12: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

Nastanak OOP

Razvoj softvera se suocavao sa velikim brojem problema.Simptomi softverske krize: kasne isporuke, probijanje rokova ibudzeta, los kvalitet, nezadovoljavanje potreba, slabapouzdanost.Nepostojanje metodologije u razvoju softvera.Cena softvera se znacajno povecala, odrzavanje i razvojsoftvera je nadmasio troskove hardvera.OOP je nastala kao jedna od posledica softverske krize.

Milena Vujosevic Janicic Programske paradigme

Page 13: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

Nastanak OOP

Kompleksnost softvera zahtevala je promene u stiluprogramiranja. Cilj je bio da se:

porizvodi pouzdan softversmanji cena proizvodnje softverarazvijaju ponovo upotrebljivi modulismanje troskovi odrzavanjasmanji vreme razvoja softvera

OOP uvodi novi nacin razmisljanja za pronalazenje resenjaproblema.

Milena Vujosevic Janicic Programske paradigme

Page 14: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

Novi nacin razmisljanja

Milena Vujosevic Janicic Programske paradigme

Page 15: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

Primer

Studenti nakon predavanja idu na naredno predavanje.Funkcionalna dekompozicija problema:

Nastavnik je glavni program koji resava problem:Za svakog studenta nastavnik pronalazi kojoj grupi pripada.U rasporedu casova nastavnik pronalazi koji cas data grupatreba da ima.Nastavnik svakom studentu kaze gde treba da ide i sta trebada slusa.

Da li se tako resava problem u stvarnom zivotu?

Milena Vujosevic Janicic Programske paradigme

Page 16: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

Primer

OO pristupNastavnik podrazumeva da svaki student zna raspored casova ikojoj grupi pripada, tako da sam zna gde treba da ide.U najgorem slucaju, nastavnik moze svima da saopsti gdemogu da nadu raspored casova i podelu po grupama i da kaze:koristite ove informacije da biste odredili lokaciju sledecegpredavanja.

Milena Vujosevic Janicic Programske paradigme

Page 17: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

Primer

Razlike izmedu pristupa:Prvi pristup:

U prvom slucaju, nastavnik zna sve i za sve je odgovoran,ukoliko dode do nekih promena, na njemu je odgovornost da tepromene izvedeNastavnik mora da daje detaljna uputstva svakom studentu(entitetu u sistemu)

Drugi pristup:Nastavnik ocekuje da su studenti (entiteti u sistemu) sposobnida sami rese problem (da su samodovoljni).Nastavnik daje samo opste instrukcije i ocekuje od studenatada znaju da ih primene u svojim specificnim situacijama.

Milena Vujosevic Janicic Programske paradigme

Page 18: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

Primer

Osnovna prednost drugog pristupa je u podeli odgovornosti— svaki deo sistema ima svoju odgovornost i odgovornost seprebacuje sa glavnog programa na entitete u sistemu.Pretpostavimo da u okviru grupe postoje i studenti volonterikoji izmedu predavanja treba da urade nesto specijalno.

U prvom slucaju: nastavnik bi morao da zna da oni postoje ista je to sto oni treba da urade.U drugom slucaju: nastavnik samo zavrsava cas i kaze svimada idu na naredno predavanje, a svaki student radi sta treba,studenti volonteri sami znaju koje su njihove obaveze.

Dodavanje novih vrsta obaveza i entiteta u sistemu ne remetinastavnika (glavni program).

Milena Vujosevic Janicic Programske paradigme

Page 19: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

Primer

Prethodni primer ilustruje osnovne benefite OOP:Samodovljni entiteti — objektiDavanje opstih instrukcija — kodiranje interfejsaOcekivanje da entiteti umeju da primene opste instrukcije nanjihove specificne situacije — polimorfizam i podklaseDodavanje novih entiteta u sistem bez uticaja na vodu sesije —kodiranje interfejsa, polimorfizma, podkalsePrebacivanje odgovornosti — funkcionalnost je podeljena krozmrezu objekata u sistemu

Milena Vujosevic Janicic Programske paradigme

Page 20: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

Apstrakcija, interfejs, implementacija, enkapsulacijaObjekti i klaseNasledivanje, polimorfizam

Pregled

1 Motivacija

2 Nastanak OOP

3 Osnove OOPApstrakcija, interfejs, implementacija, enkapsulacijaObjekti i klaseNasledivanje, polimorfizam

4 ОО jezici

5 Pitanja i literatura

Milena Vujosevic Janicic Programske paradigme

Page 21: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

Apstrakcija, interfejs, implementacija, enkapsulacijaObjekti i klaseNasledivanje, polimorfizam

OO jezici

Milena Vujosevic Janicic Programske paradigme

Page 22: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

Apstrakcija, interfejs, implementacija, enkapsulacijaObjekti i klaseNasledivanje, polimorfizam

OOP

Simula (1960), Smalltalk (1970), Objective-C (1980), C++(1980), Eiffel (1992), Java (1996), C# (2000)Vecina OO jezika je veoma slicno imeprativnoj paradigmi, ali jepromenjen nacin razmisljanja o problemu.OOP pomera fokus sa algoritama na podatke.OOP se zasniva na modelovanju objekata iz stvarnog sveta.Osnovna jedinica apstrakcije je objekat koji enkapsulirapodatke i ponasanje.

Milena Vujosevic Janicic Programske paradigme

Page 23: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

Apstrakcija, interfejs, implementacija, enkapsulacijaObjekti i klaseNasledivanje, polimorfizam

Apstrakcija

Apstrakcija je skup osnovnih koncepata koje neki entitetobezbeduje sa ciljem omogucavanja resavanja nekog problema.

Apstrakcija ukljucuje atribute koji oslikavaju osobine entitetakao i operacije koje oslikavaju ponasanje entiteta.Apstrakcije daju neophodne i dovoljne opise entiteta, a nenjihove implementacione detalje.

Apstrakcija rezultuje u odvajanju interfejsa i implementacije.Sta je interfejs, a sta implementacija?

Milena Vujosevic Janicic Programske paradigme

Page 24: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

Apstrakcija, interfejs, implementacija, enkapsulacijaObjekti i klaseNasledivanje, polimorfizam

Interfejs i imeplementacija

Veoma je vazno znati razliku izmedu interfejsa iimplementacije.Interfejs je korisnicki pogled na to sta neki entitet moze dauradi.Implementacija vodi racuna o internim operacijama interfejsakoji ne moraju da budu poznati korisniku.Interfejs govori STA entitet moze da uradi, dok implementacijagovori KAKO entitet interno radi.

Milena Vujosevic Janicic Programske paradigme

Page 25: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

Apstrakcija, interfejs, implementacija, enkapsulacijaObjekti i klaseNasledivanje, polimorfizam

Interfejs i imeplementacija

Milena Vujosevic Janicic Programske paradigme

Page 26: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

Apstrakcija, interfejs, implementacija, enkapsulacijaObjekti i klaseNasledivanje, polimorfizam

Enkapsulacija

Enkapsulacija (ucaurivanje) je skup mehanizama kojeobezbeduje jezik (ili skup tehnika za dizajn) za skrivanjeimplementacionih detalja (klase, modula ili podsistema odostalih klasa, modula i podsistema). Enkapsulacijom su podacizasticeni od nezeljenih spoljnih uticaja.

Na primer, u vecini OO programskih jezika, oznacavanjeprivatne promenljive u okviru klase obezbeduje da se drugeklase ne mogu da pristupe toj vrednosti direktno, vec iskljucivoputem metoda za pristup i izmenu, ukoliko ih klasa obezbedi.Ovo se naziva skrivanje podataka.Enkapsulacija je siri pojam od skrivanja podataka.

Milena Vujosevic Janicic Programske paradigme

Page 27: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

Apstrakcija, interfejs, implementacija, enkapsulacijaObjekti i klaseNasledivanje, polimorfizam

Enkapsulacija

Sa korisnickog stanovista, entitet nudi izvestan broj uslugapreko interfejsa i skriva implementacione detalje — terminenkapsulacija se koristi za skrivanje implementacionih detalja.Prednosti enkapsulacije su skrivanje informacija iimplementaciona nezavisnost (promena implementacije mozeda se uradi bez promene interfejsa).Primer: klasa kompleksan broj

Milena Vujosevic Janicic Programske paradigme

Page 28: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

Apstrakcija, interfejs, implementacija, enkapsulacijaObjekti i klaseNasledivanje, polimorfizam

Uzrok problema kod resavanja funkcionalnomdekompozicijom

Problemi adaptacije na izmene postoje kod funkcionalnedekompozicije problema jer rezultujuci softver ima

slabo koriscenje apstrakcijaslabu enkapsulaciju

Kada postoji slaba apstrakcija, a zelimo da dodamo novu,onda nije jasno kako to treba da uradimo.Kada je losa enkapsulacija izmene imaju tendenciju da seprostiru kroz ceo kod jer nista ne sprecava formiranjezavisnosti izmedu delova koda.

Milena Vujosevic Janicic Programske paradigme

Page 29: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

Apstrakcija, interfejs, implementacija, enkapsulacijaObjekti i klaseNasledivanje, polimorfizam

Objekat

Filozofski: Entitet koji se moze prepoznati.Konceptualno: Skup odgovornosti.U terminima objektne tehnologije: Apstrakcija entiteta izstvarnog sveta.Specifikacijski: Skup metoda.Implementaciono: Podaci sa odgovarajucim funkcijama.

Milena Vujosevic Janicic Programske paradigme

Page 30: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

Apstrakcija, interfejs, implementacija, enkapsulacijaObjekti i klaseNasledivanje, polimorfizam

Objekti

Objekti imaju svoje ponasanje (operacije).Objekti imaju svoje osobine (atribute).Kako se odreduje koje ponasanje i koje osobine su relevantneza neki objekat?

Pre svega, kako se odreduju potrebni objekti? (Objekti imajusvoje odgovornosti!)Zadatak OO analize i dizajna: u okviru analize treba da sesagleda sta je problem, koje su dogovornosti koje sistem trebada ostvari i u tome se pronalaze kandidati za potrebne objekte.Domen problema takode sugerise koji su objekti u sistemupotrebni.

Milena Vujosevic Janicic Programske paradigme

Page 31: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

Apstrakcija, interfejs, implementacija, enkapsulacijaObjekti i klaseNasledivanje, polimorfizam

Objekti i poruke

Objekti mogu da sadrze druge objekte (agregacija objekata).Objekti medusobno komuniciraju slanjem poruka.Poruke su komande koje se salju objektu sa ciljem da izvrsineku akciju.Poruke se sastoje od objekta koji prima poruku, metoda kojitreba da se izvrsi i argumenata (opciono). Npr:Panel1.Add(Button1) — primalac je Panel1, metod je Add aargument je Button1

Milena Vujosevic Janicic Programske paradigme

Page 32: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

Apstrakcija, interfejs, implementacija, enkapsulacijaObjekti i klaseNasledivanje, polimorfizam

Klase

U svetu postoji previse objekata i oni se klasifikuju ukategorije, ili u klase.Klase su sabloni za grupe objekata.Klase daju specifikaciju za sve podatke i ponasanja objekata.Za objekat kazemo da je instanca klase.Postoje razliciti odnosi izmedu klasa, osnovni su nasledivanje iagregacija.

Milena Vujosevic Janicic Programske paradigme

Page 33: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

Apstrakcija, interfejs, implementacija, enkapsulacijaObjekti i klaseNasledivanje, polimorfizam

Klasa

Milena Vujosevic Janicic Programske paradigme

Page 34: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

Apstrakcija, interfejs, implementacija, enkapsulacijaObjekti i klaseNasledivanje, polimorfizam

Odnos klase i objekta

Milena Vujosevic Janicic Programske paradigme

Page 35: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

Apstrakcija, interfejs, implementacija, enkapsulacijaObjekti i klaseNasledivanje, polimorfizam

Klase definisu kreiranje i unistavanje objekata

Metodi konstruktori i destruktori.Konstruktori obezbeduju da se objekti ispravno inicijalizuju.Destruktori obezbeduju da objekat oslobodi sve resurse koje jezauzimao dok je bio aktivan.

Milena Vujosevic Janicic Programske paradigme

Page 36: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

Apstrakcija, interfejs, implementacija, enkapsulacijaObjekti i klaseNasledivanje, polimorfizam

Objektno-zasnovni jezici i objektno-orijentisani jezici

Apstrakcija vodena podacima je osnovni koncept objektnihpristupa.U zavisnosti od prisutnosti ostalih koncepata, jezik moze dabude obejektno-zasnovan ili objektno-orijentisan.Objektno zasnovan jezik podrzava enkapsulaciju i identitetobjekta (jedinstvene osobine koje ga razdvajaju od ostalihobjekata) i nema podrsku za polimorfizam, nasledivanje,komunikaciju porukama iako takve stvari mogu da se emuliraju.Objektno orijentisani jezici imaju sve osobine objektnozasnovanih jezika, zajedno sa nasledivanjem i polimorfizmom.

Milena Vujosevic Janicic Programske paradigme

Page 37: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

Apstrakcija, interfejs, implementacija, enkapsulacijaObjekti i klaseNasledivanje, polimorfizam

Nasledivanje

Nasledivanje je kreiranje novih klasa (izvedenih klasa) odpostojecih klasa (osnovnih ili baznih klasa).Kreiranje novih klasa omogucava postojanje hijerarhije klasakoje simuliraju koncept klasa i potklasa iz stvarnog sveta.Primer: zivotinja, sisar, macka, pas, riba, stuka, som ...Primer: vozilo, kopneno, vazdusno, vodeno, automobil,kamion, brod, camac, avion, jedrilicaNasledivanje omogucava prosirivanje i ponovno koriscenjepostojeceg koda, bez ponavljanja i ponovnog pisanja koda.Bazne klase se mogu koristiti puno puta.

Milena Vujosevic Janicic Programske paradigme

Page 38: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

Apstrakcija, interfejs, implementacija, enkapsulacijaObjekti i klaseNasledivanje, polimorfizam

Nasledivanje

Nasledivanje je korisno za prosirivanje i specijalizaciju.Prosirivanje koristi nasledivanje da se razviju klase odpostojecih dodavanjem novih osobina. Na primer, u okvirustambene zgrade moze postojati deo za poslovni prostor, pa jeklasu StambenaZgrada potrebno prosiriti tako da moze daprati i poslovni prostor.Specijalizacija koristi nasledivanje da se preciznije definiseponasanje opste (apstraktne) klase. Potklase obezbedujuspecijalizovano ponasanje na osnovu zajednickih elemenatakoje obezbeduje bazna klasa. Na primer, bazna klasa moze dabude student, a potklase koje obezbeduju specijalizovanoponasanje su klase StudentOsnovnihStudija,StudentMasterStudija i StudentDoktorskihStudija.

Milena Vujosevic Janicic Programske paradigme

Page 39: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

Apstrakcija, interfejs, implementacija, enkapsulacijaObjekti i klaseNasledivanje, polimorfizam

Nasledivanje

Prilikom nasledivanja, potklasa moze da doda nova ponasanjai nove podatke koji su za nju specificne, ali takode moze i daizmeni ponasanje koje je nasledila od bazne klase kako bi njenespecificnosti bile uzete u obzir (polimorfizam).Pozeljno je da svaka osobina koja vazi za baznu klasu vazi i zanjenu podklasu, ali obrnuto ne mora da vazi (npr, svaki pasima sve osobine zivotinje, ali svaka zivotinja ne mora da imasve osobine psa).Potklase se mogu tretirati kao bazne klase, jer sadrze sveatribute i metode kao i bazne klase tako da kod koji je razvijenza rad sa baznim klasama moze da se primeni i na potklase.

Milena Vujosevic Janicic Programske paradigme

Page 40: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

Apstrakcija, interfejs, implementacija, enkapsulacijaObjekti i klaseNasledivanje, polimorfizam

Primer

Problem: imamo razlicite klase studenata (osnovne, master idoktorske studije) i treba da napravimo leksikografski sortiranispisak studenata.Resenje: ukoliko su sve tri klase studenata podklase bazneklase Student, onda se svi studenti mogu staviti u istukolekciju (npr u niz ili listu) i mogu se tretirati na isti nacin,bez obzira na njihove raznorodne specificnosti.Ne samo sto mozemo sve studente da stavimo u istu kolekciju,vec ih mozemo tretirati na isti nacin, pri cemu ce se svakistudent ponasati u skladu sa svojim specificnostima(polimorfizam).

Milena Vujosevic Janicic Programske paradigme

Page 41: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

Apstrakcija, interfejs, implementacija, enkapsulacijaObjekti i klaseNasledivanje, polimorfizam

Klase definisu vidljivost

Klase definisu vidljivost osobina svojim objektima: atribut ilimetod moze da bude javan, zasticen ili privatan.Javna vidljivost omogucava svima da pristupe atributu ilimetodu.Zasticena vidljivost omogucava pristup samo potklasama dateklase.Privatna vidljivost omogucava pristup samo u okviru sameklase.U jeziku JAVA zasticena vidljivost je moguca samo izmeduklasa koje nisu u istom paketu.

Milena Vujosevic Janicic Programske paradigme

Page 42: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

Apstrakcija, interfejs, implementacija, enkapsulacijaObjekti i klaseNasledivanje, polimorfizam

Vidljivost — primer

Objekat A je instanca klase XObjekat B je instanca klase Y koja je potklasa klase XObjekat C je instanca klase Z koja je nezavisna od klasa X i Y

Milena Vujosevic Janicic Programske paradigme

Page 43: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

Apstrakcija, interfejs, implementacija, enkapsulacijaObjekti i klaseNasledivanje, polimorfizam

Vidljivost — primer

Milena Vujosevic Janicic Programske paradigme

Page 44: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

Apstrakcija, interfejs, implementacija, enkapsulacijaObjekti i klaseNasledivanje, polimorfizam

Vidljivost — primer

Javna vidljivost karakteristika klase X znaci da A, B i C moguda im pristupeZasticena vidljivost karakteristika klase X znaci da A i B moguda im pristupe, ali da C ne mozePrivatna vidljivost karakteristika klase X znaci da samo Amoze da im prisupiOvo su, naravno, opste definicije, razliciti jezici implementirajuvidljivost na razlicite nacine

Milena Vujosevic Janicic Programske paradigme

Page 45: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

Apstrakcija, interfejs, implementacija, enkapsulacijaObjekti i klaseNasledivanje, polimorfizam

Visestruko nasledivanje

Klasa moze da se izvede kroz nasledivanje iz vise od jedneosnovne klase — visestruko nasledivanje.Instance klase koja koristi visestruko nasledivanje ima osobinekoje nasleduje od svake bazne klase.PrimerVisestruko nasledivanje ima ocigledne prednosti, ali ima i mane(kompleksnost, uvodenje virtuelnog nasledivanja, tezedebagovanje)Podrzano je u C++-uJava ne podrzava visestruko nasledivanje, ali podrzavaimplemetiranje interfejsa, sto do neke mere lici na visestrukonasledivanje.

Milena Vujosevic Janicic Programske paradigme

Page 46: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

Apstrakcija, interfejs, implementacija, enkapsulacijaObjekti i klaseNasledivanje, polimorfizam

Polimorfizam

Polimorfizam – puno formi — razlicita ponasanjaPolimorfizam — u okviru objektne terminologije, najcesce seodnosi na tretiranje objekata kao da su objekti bazne klase aliod njih dobijati ponasanje koje odgovara njihovim specificnimpotklasama. U ovom slucaju, polimorfizam se odnosi na kasnovezivanje poziva za jednu od vise razlicitih implementacijametoda u hijerarhiji nasledivanja.

Milena Vujosevic Janicic Programske paradigme

Page 47: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

Apstrakcija, interfejs, implementacija, enkapsulacijaObjekti i klaseNasledivanje, polimorfizam

Polimorfizam

Treba razlikovati pojmove preopterecivanja i predefinisanjaOverloading — preopterecivanje — isto ime ili operator mozeda bude pridruzen razlicitim operacijama, u zavisnosti od tipapodataka koji mu se proslede. Na primer int f() {...} iint f(int x) {...}

Overriding — predefinisanje — mogucnost razlicitih objekata daodgovore na iste poruke na razliciti nacin. Ukoliko u baznoj iizvedenoj klasi imamo metod koji ima isti potpis, onda kazemoda je izvedena klasa zapravo predefinisala metod iz bazne klase.

Milena Vujosevic Janicic Programske paradigme

Page 48: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

Apstrakcija, interfejs, implementacija, enkapsulacijaObjekti i klaseNasledivanje, polimorfizam

Polimorfizam

Staticko vezivanje je ”odlucivanje” koja ce metoda biti pozvanau vreme prevodenja.Pretpostavimo da postoje dve metode sa istim imenom u istojklasi koje se razlikuju po broji i/ili tipu argumenata — odluka otome koja ce od ove dve metode biti pozvana moze se donetiu fazi prevodenja i to tako sto se izvrsi poredenje tipovaargumenata, a ukoliko postoji dvosmislenost onda prevodilacjavlja gresku.Ako ne postoji metod sa datim imenom u izvedenoj klasi ondase on trazi u baznoj klasi.Preopterecivanje se odlucuje staticki.

Milena Vujosevic Janicic Programske paradigme

Page 49: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

Apstrakcija, interfejs, implementacija, enkapsulacijaObjekti i klaseNasledivanje, polimorfizam

Polimorfizam

Dinamicko vezivanje je ”odlucivanje” kojace metoda bitipozvana u vreme izvrsavanja programa.Primer:Ako imamo baznu klasu Zivotinja i ako iz nje izvedemo klasuMacka, klasu Pas i klasu Konj, tada, na primer mozemoformirati niz pokazivaca na klasu Zivotinja kojima u zavisnostiod situacije mozemo dodeliti da pokazuju na razlicite Macke,Pse ili Konje. Ako su izvedene klase predefinisale neku metoduf klase Zivotinja, zelimo da pozivom te metode uz pomocpokazivaca na Zivotinju bude pozvana odgovarajucapredefinisana metoda i to iz klase Macka ukoliko pokazivacpokazuje na Macku, iz klase Pas ukoliko pokazivac pokazujena Psa ili iz klase Konj, ukoliko pokazivac pokazuje na Konja.

Milena Vujosevic Janicic Programske paradigme

Page 50: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

Apstrakcija, interfejs, implementacija, enkapsulacijaObjekti i klaseNasledivanje, polimorfizam

Polimorfizam — dinamicko vezivanje

Da bi se koristilo dinamicko vezivanje, potrebno je koristitiodgovarajuce mehanizme jezika (virtuelne metode).Cena dinamickog vezivanja je kreiranje tabela virtulenihfunckija.Za svaki objekat kompajler implicitno dodaje pokazivac natabelu virtuelnih funkcija.Na osnovu ove tabele odreduje se u fazi izvrsavanja koja cetacno metoda biti pozvana.

Milena Vujosevic Janicic Programske paradigme

Page 51: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

Apstrakcija, interfejs, implementacija, enkapsulacijaObjekti i klaseNasledivanje, polimorfizam

Apstraktne klase

Apstraktne klase definisu ponasanja koja su relevantna za svepodklase.Apstraktne klase definisu potpise metoda koje potklase trebada implementiraju, definisu metode za ponasanja koja suzajednicka i definisu podatke koji su zajednicki i korisni za svepotklase.Apstraktne klase ne mogu da se instanciraju — instanciraju sekonkretne klase, dok se pristupa preko interfejsa definisanog odstrane apstraktne klase.Klase koje se nalaze na vrhu hijerarhije najcesce su apstraktneklase, dok su klase koje su na dnu hijerarhije obicno konkretneklase.

Milena Vujosevic Janicic Programske paradigme

Page 52: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

Apstrakcija, interfejs, implementacija, enkapsulacijaObjekti i klaseNasledivanje, polimorfizam

Parametarski polimorfizam — genericko programiranje

Polimorfizam — vise formiSabloni omogucavaju prevazilazenje ogranicenja strogotipiziranih jezika (templates (C++)).Stroga tipiziranost ima kao posledicu da se i jednostavnefunkcije moraju definisati vise puta da bi se mogleupotrebljavati na raznim tipovima.Na primer, funkcija koja racuna minimum dva prirodna broja,dva realna broja, dva razlomka, dva kompleksna broja... — zaovo se koriste sabloni funkcija.

Milena Vujosevic Janicic Programske paradigme

Page 53: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

Apstrakcija, interfejs, implementacija, enkapsulacijaObjekti i klaseNasledivanje, polimorfizam

Parametarski polimorfizam — genericko programiranje

Mehanizam sablona omogucava i automatsko generisanjeklasnih tipova. Primer: niz, lista, skup, sortiranje...Definicija sablona klase odreduje kako se konstruisu pojedineklase kada je dat skup od jednog ili vise stvarnih tipova ilivrednosti.Genericko programiranje omogucava visestruko koriscenjesoftvera.Implicitni polimorfizam — uopstenje parametarskog, prisutnonpr u funkcionalnim programskim jezicima

Milena Vujosevic Janicic Programske paradigme

Page 54: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

OO jezici i njihove osobinePoredenje strukturne i OO paradigme

Pregled

1 Motivacija

2 Nastanak OOP

3 Osnove OOP

4 ОО jeziciOO jezici i njihove osobinePoredenje strukturne i OO paradigme

5 Pitanja i literatura

Milena Vujosevic Janicic Programske paradigme

Page 55: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

OO jezici i njihove osobinePoredenje strukturne i OO paradigme

OO jezici i njihove osobine

Milena Vujosevic Janicic Programske paradigme

Page 56: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

OO jezici i njihove osobinePoredenje strukturne i OO paradigme

Poredenje strukturne i OO paradigme

Milena Vujosevic Janicic Programske paradigme

Page 57: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

OO jezici i njihove osobinePoredenje strukturne i OO paradigme

Osnovne prednosti OOP u odnosu na strukturnu paradigmu

Lakse odrzavanjeLaksa ponovna upotrebljivost kodaVeca skalabilnost

Milena Vujosevic Janicic Programske paradigme

Page 58: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

PitanjaLiteratura

Pregled

1 Motivacija

2 Nastanak OOP

3 Osnove OOP

4 ОО jezici

5 Pitanja i literaturaPitanjaLiteratura

Milena Vujosevic Janicic Programske paradigme

Page 59: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

PitanjaLiteratura

Pitanja

Koji su principi funkcionalne dekompozicije i koji su osnovniproblemi ovogo pristupa?Sta je osnovni uzrok problema kod resavanja funkcionalnomdekompozicijom?Zasto je uticaj izmena zahteva vazan?Sta je kohezija, a sta kopcanje i kako su povezani?Sta je efekat talasanja i da li je on pozeljan?Koji su bili simptomi prve softverske krize?

Milena Vujosevic Janicic Programske paradigme

Page 60: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

PitanjaLiteratura

Pitanja

Sta je apstrakcija?Sta je interfejs?Sta implementacija?Objasniti odnos interfejsa i implementacije.Sta je enkapsulacija?Koji je odnos apstrakcije i enkapsulacije?

Milena Vujosevic Janicic Programske paradigme

Page 61: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

PitanjaLiteratura

Pitanja

Sta je objekat? (filozofski? konceptulano? u objektnojterminologiji? specifikacijski? implementaciono?)Kako komuniciraju objekti?Sta je klasa?Koji je odnos klase i objekta?Koji je prvi objektni jezik i kada je nastao?Sta su objektno zasnovani, a sta objektno orijenitsani jezici?Koji su najpopularniji objektno orijentisani jezici?

Milena Vujosevic Janicic Programske paradigme

Page 62: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

PitanjaLiteratura

Pitanja

Sta je nasledivanje?Na koje nacine se koristi nasledivanje? Sta je prosirivanje, asta specijalizacija?Sta omogucava nasledivanje?Sta je visestruko nasledivanje?Koji jezici omogucavaju visestruko nasledivanje, a koji ne?Koje su osnovne vidljivosti koje klase definisu?

Milena Vujosevic Janicic Programske paradigme

Page 63: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

PitanjaLiteratura

Pitanja

Sta je polimorfizam?Koja je razlika izmedu preopterecivanja i predefinisanja?Kada se koristi staticko a kada dinamicko vezivanje?Sta definisu apstraktne klase?Koje su mogucnosti generickog programiranja?Obrazloziti slicnosti i razlike strukturnog i OO programiranja?Koje su osnovne prednosti OO programiranja u odnosu nastrukturno programiranje?

Milena Vujosevic Janicic Programske paradigme

Page 64: Objektnoorijentisanaparadigma MilenaVujoˇsevi ´cJani ˇci´c fileMotivacija NastanakOOP OsnoveOOP ООjezici Pitanjailiteratura Pregled 1 Motivacija 2 NastanakOOP 3 OsnoveOOP 4 ООjezici

MotivacijaNastanak OOPOsnove OOP

ОО jeziciPitanja i literatura

PitanjaLiteratura

Literatura

The Object-Oriented Paradigm, Kenneth M. Anderson, 2012C++ Izvornik — Lippmna LajoieObject Oriented Programming with Java: Essentials andApplications — Rajkumar Buyya, S. Thamarai Selvi, XingchenChu http://www.buyya.com/java/Chapter1.pdf

Milena Vujosevic Janicic Programske paradigme