Vous êtes sur la page 1sur 33

Algoritmi i

strukture podataka
Uvod u objektno orijentirano
programiranje

Leonardo Miljko
Prezentacija nastala na osnovu knjige:
Brano Marki i Draena Tomi,
Uvod u algoritme i strukture, Ekonomski fakultet , Mostar,2008.

www.ckm.ba - Leonardo Miljko

Objektno orijentirano
programiranje
Objektno orijentirano programiranje je razvijeno zato
to su proceduralni jezici, kao to su C, Pascal, Basic,
Fortran i dr. postali neodgovarajui za velike i
sloene programe.
Svi se proceduralni jezici temelje na ideji podjele
programskog koda na funkcije ili procedure.
Skupine funkcija oblikuju novu veu jedinicu nazvanu
modul.
Funkcije su mogle pristupiti podacima unutar te
funkcije (lokalne varijable) ili su istim podacima
mogle pristupiti sve funkcije (globalne varijable).
Da bi vie funkcija moglo pristupiti istim podacima oni
se moraju deklarirati kao globalni, a globalnim je
podacima mogla pristupiti svaka funkcija. To je
iniciralo i stvaralowww.ckm.ba
este -programerske
pogreke.
Leonardo Miljko

Objektno orijentirano
programiranje
Objektno orijentirano programiranje je metodologija
koja program organizira kao skup objekata, pri emu
objekti sadre podatke i operacije.
Potrebno je odrediti klase, objekte i operacije (metode)
koje pripadaju klasama.
Kljuni pojmovi i ideje objektnog pristupa su:
- objekt,
- tip objekta,
- klasa,
- inkapsulizacija (uahurivanje),
- nasljeivanje,
- metoda,
- poruka.
www.ckm.ba - Leonardo Miljko

Elementi objektnog dizajna


Openito, objektno orijentirano dizajniranje primjenjivo
je na one sustave (naelno sloene) koji se ponaaju
kao objekti u stvarnosti.
Opa metoda kojom se slui objektno orijentirani dizajn
je apstrakcija. Apstrakcija je nain razmiljanja koji
se koncentrira na najvanije elemente nekog
objekta, pojave, dogaaja, procesa i sl. ovjekov
nain razmiljanja o svijetu je temeljen na naelima
objektne orijentacije.
ovjek spoznaje objekte analizirajui njihova obiljeja i
njihovo ponaanje.
www.ckm.ba - Leonardo Miljko

Elementi objektnog dizajna


U strukturiranom dizajnu funkcija je temeljna
jedinica apstrakcije . Programer se koncentrira na
pisanje funkcija i procedura. Funkcije i procedure se
grupiraju u raunalni program. Podaci nisu u sreditu
pozornosti. U sreditu su akcije kojima se ulazni
podaci transformiraju u izlaze.
U objektnom dizajnu temeljna jedinica apstrakcije je
klasa sa svojim atributima i metodama. Objektni
pristup poveava razinu naeg razmiljanja o
problemu, poveava razinu apstrakcije.
Za objektni dizajn objekt je svaki predmet, pojava,
dogaaj, osoba. Objekti mogu biti realni ili apstraktni
(stvarni ili zamiljeni). Svaki objekt pripada nekom
tipu. Tip oznaava
sve objekte koji imaju jednaka
www.ckm.ba - Leonardo Miljko
svojstva. Pojedinani objekt je instanca (jedna

Elementi objektnog dizajna


Npr. Bicikl ima
odreena stanja: trenutnu brzinu kretanja, dva kotaa,
broj brzina
i ponaanje: ubrzavanje, usporavanje, promjena brzine,
parkiran, zakoen.
Softver objekte modelira prema njihovu stanju i
ponaanju u realnom svijetu. Odraava stanje
objekta u varijablama, a implementira
ponaanje s metodama. Objekt tako ini skup
varijabli i metoda.
Realni objekti se onda prikazuju kao softverski,
programski objekti, a softverski se mogu prikazati i
apstraktni, konceptualni objekti.
Dogaaj uzroi ponaanje objekata na odreeni nain
- Leonardo
Miljko
(npr. ispis teksta www.ckm.ba
u nekom
upravljau
na zaslonu ili

Elementi objektnog dizajna


Programski objekt koji modelira stvarni, realni objekt
kao to je zaposlenik, slui se varijablama koje
uvaju podatke o stanju toga realnog objekta: ime:
Marin, prezime: Soldo, mjesto roenja: Mostar,
godina roenja: 1995.
Te varijable esto se zovu instancirane varijable
(instance variables), a metode instancirane metode
(instance methods) da bi se razlikovale od varijabli
klase i metoda klase.

www.ckm.ba - Leonardo Miljko

Elementi objektnog dizajna


Svojstva objekta izraena varijablama. Vrijednosti
varijabli su u sreditu, nukleusu objekta.
Metode okruuju i skrivaju sredite objekta od drugih
objekata u programu.
Pakiranje varijabli objekta i njihova zatita
metodama objekta zove se uahurivanje
(inkapsulizacija). Uahurivanje slui za skrivanje
detalja implementacije jednog objekta od drugih
objekata. Upravo se metode nekog objekta ponaaju
kao zatitne membrane. Uahurivanje se moe
promatrati kao nastavak apstrakcije kojom se objekti
i metode vezuju u jednu cjelinu.
Koncept inkapsulizacije i skrivanja informacija potie
od pojma apstraktnog tipa podatka koji je u
softversko inenjerstvo
uveden ranije.
www.ckm.ba - Leonardo Miljko

Elementi objektnog dizajna


Svojstva objekta izraena varijablama. Vrijednosti
varijabli su u sreditu, nukleusu objekta.
Metode okruuju i skrivaju sredite objekta od drugih
objekata u programu.
Pakiranje varijabli objekta i njihova zatita
metodama objekta zove se uahurivanje
(inkapsulizacija). Uahurivanje slui za skrivanje
detalja implementacije jednog objekta od drugih
objekata. Upravo se metode nekog objekta ponaaju
kao zatitne membrane. Uahurivanje se moe
promatrati kao nastavak apstrakcije kojom se objekti
i metode vezuju u jednu cjelinu.
Koncept inkapsulizacije (uahurivanje) i skrivanja
informacija potie od pojma apstraktnog tipa
podatka koji je uwww.ckm.ba
softversko
inenjerstvo uveden
- Leonardo Miljko
ranije. Time se izraava ideja pakiranja informacija

Elementi objektnog dizajna


Ideja uahurivanja osigurava dvije vane injenice koje
koriste izgradnji programa:

Skrivanje informacija. Objekt moe odravati


vlastite (private) podatke i metode, moe ih
mijenjati, modificirati. Pristupati objektu mogu
i metode drugih objekata ako je taj pristup
otvoren pomou javnog suelja (public
interface).
Modularnost. Izvorni kod za jedan objekt
moe se pisati i odravati neovisno o
izvornom (source) kodu za druge objekte.
Metoda je nain rukovanja svojstvima objekta. Vezana
je samo za jedan tip objekta, te se njome ne moe
pristupiti objektuwww.ckm.ba
drugog- Leonardo
tipa. Miljko

klasa
Rabei terminologiju
objektno orijentiranog
pristupa,
ispravno je kazati da je
konkretni, odreeni zaposlenik objekt,
jedna instanca, jedan primjerak klase
objekata koja se naziva zaposlenici.
Svaki zaposlenik ima neke ope osobine, zajednike
atribute koji povezuju sve zaposlenike u klasu. To su
ime, prezime, mjesto roenja, godina roenja i druge
osobine bitne u analizi i dizajnu. Isto tako svakom
zaposleniku se moe izraunati radni sta, pronai
ime ili izraunati www.ckm.ba
plaa. - Leonardo Miljko

klasa

Klasu ini skup slinih objekata. Opisujui klasu,


opisujemo i sve njezine objekte. Klasa je zato
predloak na temelju koga se moe kreirati novi
objekt. Klasa zato opisuje internu strukturu objekta,
njegova svojstva (atribute) i veze kao i operacije nad
tim atributima.
Klasom se upravo naziva takav opi predloak ili
prototip koji definira varijable i metode zajednike
svim objektima istog tipa. Drugim rijeima, svaka
klasa ima svoje metode i svoje varijable.
Varijablama klase pridruuju se odreene vrijednosti.
Kae se da se varijable instanciraju. Pridruivanjem
vrijednosti varijablama klase kreira se pojedinani
objekt klase i njemu se dodjeljuje i odgovarajui
prostor u memoriji.
www.ckm.ba - Leonardo Miljko

klasa

Prvo slovo u imenu objekta je malo dok je ime klase


zapisano velikim slovom.
Tako npr. stol: Uredska oprema
oznaava objekt stol koji pripada klasi Uredska
oprema.

www.ckm.ba - Leonardo Miljko

atributi

Atributi opisuju svojstva klase. Objekti jedne klase se


meusobno razlikuju po vrijednostima atributa.
Npr. atributi klase Uredska oprema su: Nabavna
vrijednost, Sadanja vrijednost, Datum nabavke.
Za prikaz klase posluit emo se UML (Unified
Modeling Language). Notacija UML za klasu rezervira
pravokutnik s tri dijela. Prvi dio sadri deklaraciju
naziva klase (ime klase), drugi dio nazive atributa i
trei dio operacije (metode) koje definiraju ponaanje
svih objekata klase. Slika 24. prikazuje primjere
deklaracije klasa, njihovih atributa i metoda.
Naziv atributa je jedinstven samo unutar klase. Zato
klase Profesor i Student mogu imati atribute
prezime, ime, idBroj.
Naziv atributa se pie malim poetnim slovo. Ako ima vie rijei u
- Leonardo
Miljko velikim slovom osim
nazivu onda svakawww.ckm.ba
rije poinje
prvim

www.ckm.ba - Leonardo Miljko

www.ckm.ba - Leonardo Miljko

asocijacija

Dva su glavna tipa odnosa izmeu objekata, odnosno


klasa: asocijacija i generalizacija.
Asocijacija se prikazuje punom crtom. Ta crta povezuje
klase. Asocijacija nije jednosmjerna nego dvosmjerna
veza.
Primjera asocijacije je mnogo. Izmeu klase student i
klase fakultet, izmeu klase radnik i klase odjel,
izmeu klase drava i klase glavni grad, izmeu
klase oprema i uredska oprema, klase profesor i
klase predmet i sl.

www.ckm.ba - Leonardo Miljko

asocijacija

Broj nas informira koliko objekata jedne klase sudjeluje


u toj relaciji. U danom primjeru jedan profesor moe
predavati jedan ili dva predmeta. Jedan ili dva
predmeta moe predavati isti profesor. Jedan ili vie
predmeta pripadaju jednom studentu i jedan student
polae 1 ili vie predmeta. Asocijacije je tee rijeima
opisati nego ih vizualno razumjeti i prikazati. Brojevi
koji se nalaze uz crtu oznaavaju kardinalnost veze.

www.ckm.ba - Leonardo Miljko

kardinalnost

Kardinalnost (brojnost) je
broj koji oznaava koliko
objekata jedne klase
sudjeluje u vezi.

www.ckm.ba - Leonardo Miljko

nasljeivanje

U tijeku izgradnje modela podataka (faza dizajna) esto


se nailazi na objekte koji su isti u gotovo svim
dimenzijama, osim u nekima. To je temeljna ideja
nasljeivanja.
Npr. oblikuje se klasa Osoba. Logino je razmiljati da
su zaposlenici osobe pa zato nasljeuju sve osobine
klase Osoba, ali imaju i neke specifine (posebne)
osobine razliite od drugih osoba.
Zato bi se objektnom programiranju definirala klasa
Osoba koja reprezentira svaku pojedinanu,
konkretnu osobu, a onda klasa Zaposlenik koja
reprezentira svakog pojedinanog, konkretnog
zaposlenika.
To svojstvo objektno orijentiranog dizajna zove se
nasljeivanje (inheritance).
www.ckm.ba - Leonardo Miljko

nasljeivanje

Bitno je razlikovati klasu od objekta. Objekt je primjer


klase. On je dinamiki jer ima specifine vrijednosti
atributa koji su vidljivi korisniku, za razliku od klase
koja opisuje strukturu podataka jednog tipa objekta.
Ta ideja ima bitnu posljedicu, a ona je nasljeivanje
svojstava klase i operacija (metoda). Atribute i
operacije klase mogu rabiti svi objekti koji pripadaju
istoj klasi.
Npr. bilo koji objekt klase Osoba nasljeuje atribute i
operacije te klase.
Nasljeivanje je jedan od najvanijih koncepata u
objektno orijentiranom programiranju.
esto klase imaju iste osobine (atribute i operacije) i
razumno je zajednika svojstva objekata razliitih
klasa objediniti i prikazati jednom klasom. Sve klase
www.ckm.ba - Leonardo Miljko
mogu naslijediti te
zajednike atribute.

nasljeivanje

Klasa u kojoj su objedinjena zajednika svojstva


naziva se nadklasa, a klase koje nasleuju svojstva
nadklase i sadre neka specifina svojstva (atribute)
nazivaju se podklase.
Klase na nioj razini hijerarhije, kae se, nasljeuju
osobine klasa na vioj razini hijerarhije.

www.ckm.ba - Leonardo Miljko

KORACI U OBJEKTNO ORIJENTIRANOM


DIZAJNU

Objektno orijentirani dizajn ukljuuje nekoliko koraka:


identificiranje klasa sustava i analiza njihove
strukture (identificiranje atributa)
analiza ponaanja klasa (treba utvrditi koje se
operacije mogu obaviti nad pojedinim objektima
klase)
na temelju provedenih analiza strukture sustava i
njegova ponaanja oblikovati strukture objekata i
njihova ponaanja
definiranje korisnikih suelja za svaki objekt.
www.ckm.ba - Leonardo Miljko

KORACI U OBJEKTNO ORIJENTIRANOM


DIZAJNU

www.ckm.ba - Leonardo Miljko

KORACI U OBJEKTNO ORIJENTIRANOM


DIZAJNU

Klase esto imaju ista svojstva (atribute) i ista


ponaanja (metode). Npr. sva osnovna sredstva u
poduzeu imaju nabavnu vrijednost i sadanju
vrijednost i svako osnovno sredstvo se tijekom
vremena amortizira.
Odnos klasa koji to omoguuje naziva se
generalizacija.
Generalizacija se prikazuje trokutom ija je osnovica
okrenuta prema podklasama, a vrh prema nadklasi.
Pored trokuta se moe upisati diskriminator. To je
atribut koji omoguuje specijalizaciju. Generalizacija
pokazuje istodobno pojavljivanje podklase i nadklase.
Generalizacija i specijalizacija su dva pogleda na iste veze
izmeu klasa.

Objekti komuniciraju porukama. Objekt moe, u


gornjem primjeru,www.ckm.ba
odgovoriti
- Leonardona
Miljkoporuke: amortizacija,

Metode i poruke

Bitna ideja objektno orijentiranih pristupa je


povezivanje podataka u poseban objekt. Podacima
unutar objekta mogu pristupiti samo metode
(operacije) kojima objekt dopusti. Bitna su sljedea
svojstva objekta:
objekt ima jedinstveni identifikator
objekt se pohranjuje u posebnom dijelu memorije
zajedno s operacijama koje se mogu primijeniti na
objekte u memoriji
jedini nain pristupa objektu i njegovu modificiranju
je pomou operacija (metoda) koje objekt podrava.
Operacije nad objektom zovu se metode. Sve
metode nisu vidljive. Neke od njih su interne.
Struktura i sadraj memorije za pohranjivanje
objekta skrivene su od vanjskih pogleda.
www.ckm.ba - Leonardo Miljko
Metode vidljive svima zovu se javne (public) metode.

Metode i poruke

Objekt s nazivom Ana (jedinstveni identifikator objekta je


Ana) predstavlja jednog kupca kome je rezerviran
memorijski prostor. U njemu se uvaju sve vrijednosti
(podaci) koji se odnose na samo tog kupca. Tim se
podacima objekta (vrijednostima) pristupa putem suelja.

www.ckm.ba - Leonardo Miljko

Metode i poruke

Objekt s nazivom Ana (jedinstveni identifikator objekta je


Ana) predstavlja jednog kupca kome je rezerviran
memorijski prostor. U njemu se uvaju sve vrijednosti
(podaci) koji se odnose na samo tog kupca. Tim se
podacima objekta (vrijednostima) pristupa putem suelja.

www.ckm.ba - Leonardo Miljko

Metode i poruke

Poruka Pronai ime pozvat e odgovarajuu metodu


koja pronalazi i prikazuje promet kupca Ana. Neka
druga poruka, npr. Dodati, ponovno e pozvati
odgovarajuu metodu koja e zabiljeiti vrijednosti
prometa u memoriji za kupca Ana.
Korisnika ne zanima struktura objekta pohranjena u
memoriji niti mu je potrebno znanje o toj strukturi
(koje atribute sadri klasa Kupac).
Ono to korisnika zanima je suelje (public
interface) prema objektima klase Kupac. Upravo u
tome je snaga i kvaliteta objektno orijentiranog
pristupa. Korisnik ne mora znati kako je organizirana
i strukturirana memorija za pohranjivanje objekata.
Metode objekata su operacije na objektima koji su
pohranjeni u memoriji. One su odgovori na poruke.
www.ckm.ba - Leonardo Miljko

Metode i poruke

Poruka aktivira metodu B.


Metoda B aktivira objekte u memoriji koji daju
odgovore.
Potom metoda B sve odgovore komponira u jedan
odgovor i upuuje poiljatelju poruke.

www.ckm.ba - Leonardo Miljko

Metode i poruke

Poruka se mora strukturirati na odgovarajui nain i


ona nije potpuno jednaka pozivu procedure ili
funkcije u konvencionalnim programskim jezicima.
Poruka mora imati sljedee sastavnice:
ime metode koja e odgovoriti na poslanu poruku
(esto se ta sastavnica poruke zove selektor)
objekt kojem je upuena poruka (najee se zove
cilj ili primatelj poruke)
parametre.

www.ckm.ba - Leonardo Miljko

Metode i poruke

Npr. Strukturu poruke koja unosi prosjenu ocjenu


postignutu tijekom studiranja, za objekt Ana.

Metoda moe, ali ne mora, vratiti neku vrijednost kao odgovor


na primljenu poruku. To ovisi o dizajnu metode.
Vano je primijetiti da je odgovor na poruku ponovno objekt koji
moe biti cilj druge poruke.
www.ckm.ba - Leonardo Miljko

Hvala !
Leonardo Miljko
diplomirani inenjer
elektrotehnike,
raunarstva i
informatike

Pitanja?
www.ckm.ba - Leonardo Miljko

Vous aimerez peut-être aussi