Click here to load reader

Objektno orijentisano programiranje - vps.ns.ac.rs · PDF file3 Knjiga Mirjana Ivanović Miloš Radovanović Zoran Budimac Dejan Mitrović “Objektno orijentisano programiranje i

  • View
    23

  • Download
    4

Embed Size (px)

Text of Objektno orijentisano programiranje - vps.ns.ac.rs · PDF file3 Knjiga Mirjana Ivanović...

  • Objektno orijentisano programiranje

    Aleksandra Klanja-Milievi

    Marko Markovi

  • 2

    Teme koje e biti obraene

    Uvod i koncepti OOP

    Klase

    Nasleivanje

    Interfejsi

    Modifikatori, kreiranje instance klase, unitavanje instance klase

    Nabrojivi tip podataka

    Stringovi

    Operatori nad referencijalnim tipovima podataka

    Paketi

    Izuzeci

    Kolekcije

    Razvoj vizuelnih aplikacija

  • 3

    Knjiga

    Mirjana Ivanovi

    Milo Radovanovi

    Zoran Budimac

    Dejan Mitrovi

    Objektno orijentisano programiranje i programski jezik Java Novi Sad, 2016.

    Prodajna mesta:

    Knjiara SOLARIS (SPENS), Novi Sad

    Knjiara Studentski trg, Beograd

  • Osnovni principi objektno orijentisanog

    programiranja - OOP

  • 5

    OOP osnovni koncepti

    Objekat - U softverskom smislu, objekat se moe posmatrati kao neka vrsta paketa (sveanj) koji se sastoji od stanja i ponaanja.

    Softverski objekti se koriste da modeliraju objekte iz realnog sveta, a za koji se pravi softversko reenje.

    Klasa - Klasa je model/ema/plan/prototip na osnovu koga i po ugledu na koga se kreiraju objekti iste familije.

    Nasleivanje Nasleivanje omoguuje moan i prirodan mehanizam za organizaciju i struktuiranje softvera.

    Paket - paket je imenovani prostor/celina koja omoguava da se klase i interfejsi organizuju na smislen i logiki povezan nain.

  • 6

    Objekti Objekti su kljuni koncept objektno-orijentisanog

    programiranja, i njihova osnovna namena je da slue za predstavljanje objekata iz realnog sveta, koje prepoznajemo svuda oko sebe: automobili, kuni ljubimac, i tako dalje.

    Svi ovi realni objekti imaju dve zajednike karakteristike: stanje i ponaanje.

    Tako, na primer, Automobil ima: stanje koje obuhvata: model, boju, vrsta motora, konjske snage, broj vrata, i

    broj sedita.

    ponaanje Automobila obuhvata: otkljuaj vrata, promeni boju, promeni zupanik, podigni runu konicu, da li je runa konica podignuta, pritisni konicu, i poveaj brzinu.

    Kuni ljubimac ima: stanje koje obuhvata: ime, boja, vrsta, i broj nogu, kao i

    ponaanje koje obuhvata: kree se, isputa zvuk, pokazuje naklonost.

  • 7

    Objekti Identifikacija stanja i ponaanja objekata iz realnog sveta je

    sjajan nain da se zapone razmiljanje u duhu objektno-orijentisanog programiranja.

    Ako ponemo da posmatramo razne objekte iz okruenja oko nas, uoiemo svakako da oni variraju po svojoj sloenosti i kompleksnosti i da imaju siromanija ili bogatija i stanja i ponaanja.

    Takoe se moe uoiti da neki objekti u sebi sadre druge objekte.

    Sve ovo nam pomae da objekte iz realnog okruenja prevedemo, odnosno na adekvatan nain prikaemo u svetu objektno-orijentisanog programiranja.

  • 8

    Objekti

    Konceptualno, softverski objekti su slini objektima iz realnog sveta i oni se, naravno sastoje iz stanja i odgovarajueg ponaanja.

  • 9

    Objekti Stanje objekta je organizovano u formi polja

    (esto se zovu i promenljive instance, odgovaraju pojmu promenljive u programskim jezicima) i

    realizuje svoje ponaanje odgovarajuim metodima (koji odgovaraju pojmu procedura i funkcija u programskim jezicima).

    Metodi izvravaju aktivnosti nad internim stanjem objekta i osnovni su mehanizam za komunikaciju izmeu objekata.

    Sakrivanje stanja objekta i nedoputanje direktnog pristupa i menjanja istog, kao i zahtev da se svaki vid interakcije objekta odvija iskljuivo preko metoda objekta je poznat kao skrivanje podataka (eng. data encapsulation).

    Skrivanje podataka predstavlja jedan od fundamentalnih principa objektno-orijentisanog programiranja.

  • 10

    Objekti

    Sa odgovarajuim vrednostima stanja (polja koja predstavljaju model, boju, konjske snage) i

    metodima za pristup i promenu tekueg stanja (okljuaj, promeni boju, ...)

    uspostavljena je kompletna kontrola i nain pristupa i menjanja stanja objekta kao reakcija na poruke pristigle iz spoljanjeg okruenja.

  • 11

    Objekti

    Pakovanje/ukljuivanje koda zajedno sa stanjem u jedinstvenu celinu tj. softverski objekat, prua itav niz prednosti:

    Modularnost: Izvorni kod jednog objekta moe da se pie i menja nezavisno od izvornog koda drugih objekata.

    Skrivanje informacija: Kako se komunikacija sa objektom odvija preko metoda, njegova unutranja implementacija ostaje skrivena za spoljanje okruenje.

  • 12

    Objekti Ponovno korienje koda: Ako neki objekat postoji (a

    napisao ga je i neki drugi programer), a pogodan je za reenje vaeg problema, moete ga iskoristiti i ukljuiti u va novi program. Takva filozofija razvoja softvera omoguuje da specijalisti implementiraju i testiraju specifine objekte kojima moete verovati (da dobro funkcioniu), te ih bez dodatnih aktivnosti moete ukljuiti u va kod.

    Jednostavna promena: Ako neki objekat koji je ukljuen u va sistem iz nekih razloga ne funkcionie dobro, moete ga jednostavno ukloniti iz sistema i ukljuiti umesto njega neki drugi objekat koji pouzdanije obavlja eljenu aktivnost.

  • 13

    Objekti

    Objekat treba posmatrati kao celinu koja zna kako da reaguje i odgovori na konkretnu poruku.

    Meutim treba tako imati u vidu da objekti na istu poruku mogu da odgovore na razliit/drugaiji nain.

    Tako na primer poruka tampaj moe da produkuje razliite rezultate u zavisnosti od toga kom je objektu poslata.

    Ta osobina objekata, da razliiti objekti mogu na istu poruku da odgovaraju na razliite naine, se zove polimorfizam (eng. polymorphism).

  • 14

    OOP - osnovni koncepti

    Objekti koji sadre isti tip podataka i koji odgovaraju na iste poruke na isti nain pripadaju istoj porodici objekata odnosno pripadaju istoj klasi (eng. class).

    U sutini, u OOP primarni koncept je klasa, i proizvoljan broj objekata (iz iste familije) se moe kreirati koristei klasu kao etalon (u literaturi je poznato puno sinonima za ovaj termin: model, uzorak, itd.).

    Meutim, moe da postoji i itav niz slinih objekata koji nisu nastali iz iste klase.

  • 15

    OOP - osnovni koncepti

    Tako, na primer, moemo posmatrati program za crtanje linija i geometrijskih oblika kao to su: du, etvorougao, ovali, poligoni i krive.

    Dakle, svaki objekat koji se vidi na ekranu se moe predstaviti softverskim objektom u programu.

    U tom sluaju uoavamo u programu pet klasa objekata koji se mogu iscrtavati na ekranu.

    Sve dui pripadaju jednoj klasi, svi etvorouglovi pripadaju drugoj klasi i tako redom.

    Takoe, jasno uoavamo da su ove klase u odreenoj relaciji i da sve predstavljaju iscrtavajue objekte, kao i da treba da imaju mogunost da reaguju na poruku iscrtaj se.

  • 16

    OOP - osnovni koncepti Drugi nivo grupisanja, koji nije tako oigledan, moe da se

    realizuje u odnosu na podatke koji su potrebni za crtanje svakog od ovih tipova objekata.

    Tako moemo grupisati poligone i krive kao objekte vie taaka, a dui, etvorougle i ovale kao objekte dve take.

    (Du je odreena sa dve krajnje take, etvorougao sa dve take i dva naspramna ugla, a oval sa dva naspramna ugla etvorougla u koji je upisan).

    Relacije izmeu pomenutih koncepata, od kojih svaki predstavlja jednu klasu, su prikazani na slici:

  • 17

    OOP - osnovni koncepti

    Klase ObjekatViseTacaka i ObjektiDveTacke su direktne podklase klase IscrtavajuiObjekat. Klasa Duz je direktna podklasa klase ObjekatDveTacke i indirektna klasa klase IscrtavajuciObjekat.

    Dakle, podklasa neke klase nasleuje (eng. inherits) svojstva svoje nadklase. Podklasa takoe moe da doda i neka nova svojstva (to je najei sluaj) na ona nasleena iz nadklase, ali i da promeni postojea svojstva (eng. override).

  • 18

    OOP - osnovni koncepti Nasleivanje je izuzetno moan mehanizam u OOP stilu

    programiranja i reavanja problema koji podrava dobru organizaciju i ponovnu upotrebu programskog koda.

    Klase su definitivno ponovo upotrebljive (eng. reusable) komponente.

    One se mogu dvostruko iskoristiti u novim programima: ako u potpunosti odgovaraju takve kakve su bez izmena,

    ako se uz manje ili vee izmene mogu prilagoditi novim programima, u tom sluaju se definie nova klasa koja nasleuje postojeu klasu.

    Na osnovu navedenog moe se zakljuiti da je OOP mono orue za razvijanje softvera, ali i pogodno reenje za ponovno korienje ve razvijenog softvera (eng. software reuse).

  • Referencijalni tipovi podataka

  • 20

    Referencijalni tipovi podataka Vei programi pogodno je da se delovi programa koji ine logiku celinu

    grupiu zajedno, time se omoguava:

    vii nivo apstrakcije

    vea itljivost progama

    jednostavniji timski rad na programu

    lake odravanje, modifikacija i proirenje gotovog programa

    Kod jezika tree generacije, kao to su Pascal i Modula 2, grupisanje

    podataka u slogove i nizove (sloene tipove) se pokazalo kao velika

    prednost u odnosu na starije jezike koji koriste samo proste tipove

    podataka

    Iako pomenuti jezici podravaju pravljenje sloenih tipova podataka oni

    direktno ne obezbeuju i grupisanje delova programskog koda sa

    podacima kojima taj deo koda pristupa

  • 21

    Referencijalni tipovi podataka

    Objektno orijentisano programiranje je novija paradigma

    programiranja zasniva se na pravljenju i korienju tipova koji

    omoguavaju grupisanje podataka i delova programskog koda koji

    te podatke koristi

    Vrednosti (instance) takvih tipova se zovu objekti

    Java je objektno-orijentisan programski jezik. Bez korienja

    objekata ne moe se na