algoritmi i strukture_podataka_2016-02_v01

33
Algoritmi i strukture podataka Uvod u objektno orijentirano programiranje Leonardo Miljko www.ckm.ba - Leonardo Miljko Prezentacija nastala na osnovu knjige: Brano Markić i Dražena Tomić, Uvod u algoritme i strukture, Ekonomski fakultet , Mostar,2008.

Upload: leonardo-miljko

Post on 21-Mar-2017

26 views

Category:

Software


2 download

TRANSCRIPT

Algoritmi i strukture podataka

Uvod u objektno orijentirano programiranje

Leonardo Miljko

www.ckm.ba - Leonardo Miljko

Prezentacija nastala na osnovu knjige:

Brano Markić i Dražena Tomić,

Uvod u algoritme i strukture, Ekonomski fakultet , Mostar,2008.

Objektno orijentirano programiranje Objektno orijentirano programiranje je razvijeno zato što su

proceduralni jezici, kao što su C, Pascal, Basic, Fortran i dr. postali neodgovarajući za velike i složene programe.

Svi se proceduralni jezici temelje na ideji podjele programskog koda na funkcije ili procedure.

Skupine funkcija oblikuju novu veću 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 više funkcija moglo pristupiti istim podacima oni se moraju deklarirati kao globalni, a globalnim je podacima mogla pristupiti svaka funkcija. To je iniciralo i stvaralo česte programerske pogreške.

Rješenje osiguravaju objektno orijentirani programski jezici.

www.ckm.ba - Leonardo Miljko

Objektno orijentirano programiranje Objektno orijentirano programiranje je metodologija koja program

organizira kao skup objekata, pri čemu objekti sadrže podatke i operacije.

Potrebno je odrediti klase, objekte i operacije (metode) koje pripadaju klasama.

Ključni pojmovi i ideje objektnog pristupa su:

- objekt,

- tip objekta,

- klasa,

- inkapsulizacija (učahurivanje),

- nasljeđivanje,

- metoda,

- poruka.

www.ckm.ba - Leonardo Miljko

Elementi objektnog dizajna

Općenito, objektno orijentirano dizajniranje primjenjivo je na one sustave (načelno složene) koji se ponašaju kao objekti u stvarnosti.

Opća metoda kojom se služi objektno orijentirani dizajn je apstrakcija. Apstrakcija je način razmišljanja koji se koncentrira na najvažnije elemente nekog objekta, pojave, događaja, procesa i sl. Čovjekov način razmišljanja o svijetu je temeljen na načelima objektne orijentacije.

Čovjek spoznaje objekte analizirajući njihova obilježja i njihovo ponašanje.

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 računalni program. Podaci nisu u središtu pozornosti. U središtu su akcije kojima se ulazni podaci transformiraju u izlaze.

• U objektnom dizajnu temeljna jedinica apstrakcije je klasa sa svojim atributima i metodama. Objektni pristup povećava razinu našeg razmišljanja o problemu, povećava razinu apstrakcije.

Za objektni dizajn objekt je svaki predmet, pojava, događaj, osoba. Objekti mogu biti realni ili apstraktni (stvarni ili zamišljeni). Svaki objekt pripada nekom tipu. Tip označava sve objekte koji imaju jednaka svojstva. Pojedinačni objekt je instanca (jedna pojava) određenog tipa.

www.ckm.ba - Leonardo Miljko

Elementi objektnog dizajna Npr. Bicikl ima

određena stanja: trenutnu brzinu kretanja, dva kotača, broj brzina

i ponašanje: ubrzavanje, usporavanje, promjena brzine, parkiran, zakočen.

Softver objekte modelira prema njihovu stanju i ponašanju u realnom svijetu. Odražava stanje objekta u varijablama, a implementira ponašanje 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.

Događaj uzroči ponašanje objekata na određeni način (npr. ispis teksta u nekom upravljaču na zaslonu ili izračunavanje prosječne ocjene određenog studenta, prosječne ocjene na ispitu iz jednog predmeta i sl.).

www.ckm.ba - Leonardo Miljko

Elementi objektnog dizajna • Programski objekt koji modelira stvarni, realni objekt kao što je

zaposlenik, služi se varijablama koje čuvaju podatke o stanju toga realnog objekta: ime: Marin, prezime: Soldo, mjesto rođenja: Mostar, godina rođenja: 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 izražena varijablama. Vrijednosti varijabli su u

središtu, nukleusu objekta.

• Metode okružuju i skrivaju središte objekta od drugih objekata u programu.

• Pakiranje varijabli objekta i njihova zaštita metodama objekta zove se učahurivanje (inkapsulizacija). Učahurivanje služi za skrivanje detalja implementacije jednog objekta od drugih objekata. Upravo se metode nekog objekta ponašaju kao zaštitne membrane. Učahurivanje se može promatrati kao nastavak apstrakcije kojom se objekti i metode vezuju u jednu cjelinu.

• Koncept inkapsulizacije i skrivanja informacija potiče od pojma apstraktnog tipa podatka koji je u softversko inženjerstvo uveden ranije.

www.ckm.ba - Leonardo Miljko

Elementi objektnog dizajna • Svojstva objekta izražena varijablama. Vrijednosti varijabli su u

središtu, nukleusu objekta.

• Metode okružuju i skrivaju središte objekta od drugih objekata u programu.

• Pakiranje varijabli objekta i njihova zaštita metodama objekta zove se učahurivanje (inkapsulizacija). Učahurivanje služi za skrivanje detalja implementacije jednog objekta od drugih objekata. Upravo se metode nekog objekta ponašaju kao zaštitne membrane. Učahurivanje se može promatrati kao nastavak apstrakcije kojom se objekti i metode vezuju u jednu cjelinu.

• Koncept inkapsulizacije (učahurivanje) i skrivanja informacija potiče od pojma apstraktnog tipa podatka koji je u softversko inženjerstvo uveden ranije. Time se izražava ideja pakiranja informacija istog tipa u jednu cjelinu.

www.ckm.ba - Leonardo Miljko

Elementi objektnog dizajna Ideja učahurivanja osigurava dvije važne činjenice koje koriste

izgradnji programa:

• Skrivanje informacija. Objekt može održavati vlastite (private) podatke i metode, može ih mijenjati, modificirati. Pristupati objektu mogu i metode drugih objekata ako je taj pristup otvoren pomoću javnog sučelja (public interface).

• Modularnost. Izvorni kod za jedan objekt može se pisati i održavati neovisno o izvornom (source) kodu za druge objekte.

Metoda je način rukovanja svojstvima objekta. Vezana je samo za jedan tip objekta, te se njome ne može pristupiti objektu drugog tipa.

www.ckm.ba - Leonardo Miljko

klasa Rabeći terminologiju

objektno orijentiranog

pristupa, ispravno je kazati da je

konkretni, određeni zaposlenik objekt,

jedna instanca, jedan primjerak klase

objekata koja se naziva zaposlenici.

Svaki zaposlenik ima neke opće osobine, zajedničke atribute koji povezuju sve zaposlenike u klasu. To su ime, prezime, mjesto rođenja, godina rođenja i druge osobine bitne u analizi i dizajnu. Isto tako svakom zaposleniku se može izračunati radni staž, pronaći ime ili izračunati plaća.

U rječniku objektno orijentirane analize i dizajna kaže se da objekt ima ponašanje koje je zajedničko ponašanju ostalih primjeraka, instanci ili jednostavno ostalih objekata.

www.ckm.ba - Leonardo Miljko

klasa • Klasu čini skup sličnih objekata. Opisujući klasu, opisujemo i sve

njezine objekte. Klasa je zato predložak na temelju koga se može 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 opći predložak ili prototip koji definira varijable i metode zajedničke svim objektima istog tipa. Drugim riječima, svaka klasa ima svoje metode i svoje varijable.

• Varijablama klase pridružuju se određene vrijednosti. Kaže se da se varijable instanciraju. Pridruživanjem vrijednosti varijablama klase kreira se pojedinačni objekt klase i njemu se dodjeljuje i odgovarajući 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

označava objekt stol koji pripada klasi Uredska oprema.

www.ckm.ba - Leonardo Miljko

atributi • Atributi opisuju svojstva klase. Objekti jedne klase se međusobno

razlikuju po vrijednostima atributa.

• Npr. atributi klase Uredska oprema su: Nabavna vrijednost, Sadašnja vrijednost, Datum nabavke.

• Za prikaz klase poslužit ćemo se UML (Unified Modeling Language). Notacija UML za klasu rezervira pravokutnik s tri dijela. Prvi dio sadrži deklaraciju naziva klase (ime klase), drugi dio nazive atributa i treći dio operacije (metode) koje definiraju ponašanje 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 piše malim početnim slovo. Ako ima više riječi u nazivu onda

svaka riječ počinje prvim velikim slovom osim početne.

www.ckm.ba - Leonardo Miljko

www.ckm.ba - Leonardo Miljko

www.ckm.ba - Leonardo Miljko

asocijacija Dva su glavna tipa odnosa između 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. Između klase student i klase fakultet, između klase radnik i klase odjel, između klase država i klase glavni grad, između 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 može predavati jedan ili dva predmeta. Jedan ili dva predmeta može predavati isti profesor. Jedan ili više predmeta pripadaju jednom studentu i jedan student polaže 1 ili više predmeta. Asocijacije je teže riječima opisati nego ih vizualno razumjeti i prikazati. Brojevi koji se nalaze uz crtu označavaju kardinalnost veze.

www.ckm.ba - Leonardo Miljko

kardinalnost Kardinalnost (brojnost) je

broj koji označava koliko

objekata jedne klase

sudjeluje u vezi.

www.ckm.ba - Leonardo Miljko

nasljeđivanje 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 nasljeđivanja.

Npr. oblikuje se klasa Osoba. Logično je razmišljati da su zaposlenici osobe pa zato nasljeđuju sve osobine klase Osoba, ali imaju i neke specifične (posebne) osobine različite od drugih osoba.

Zato bi se objektnom programiranju definirala klasa Osoba koja reprezentira svaku pojedinačnu, konkretnu osobu, a onda klasa Zaposlenik koja reprezentira svakog pojedinačnog, konkretnog zaposlenika.

To svojstvo objektno orijentiranog dizajna zove se nasljeđivanje (inheritance).

www.ckm.ba - Leonardo Miljko

nasljeđivanje Bitno je razlikovati klasu od objekta. Objekt je primjer klase. On je

„dinamički“ jer ima specifične 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 nasljeđivanje svojstava klase i operacija (metoda). Atribute i operacije klase mogu rabiti svi objekti koji pripadaju istoj klasi.

Npr. bilo koji objekt klase Osoba nasljeđuje atribute i operacije te klase.

Nasljeđivanje je jedan od najvažnijih koncepata u objektno orijentiranom programiranju.

Često klase imaju iste osobine (atribute i operacije) i razumno je zajednička svojstva objekata različitih klasa objediniti i prikazati jednom klasom. Sve klase mogu naslijediti te zajedničke atribute. Generalizacija je tip odnosa između klasa koji to omogućuje.

www.ckm.ba - Leonardo Miljko

nasljeđivanje • Klasa u kojoj su objedinjena zajednička svojstva naziva se

nadklasa, a klase koje nasleđuju svojstva nadklase i sadrže neka specifična svojstva (atribute) nazivaju se podklase.

• Klase na nižoj razini hijerarhije, kaže se, nasljeđuju osobine klasa na višoj razini hijerarhije.

www.ckm.ba - Leonardo Miljko

KORACI U OBJEKTNO ORIJENTIRANOM DIZAJNU Objektno orijentirani dizajn uključuje nekoliko koraka:

• identificiranje klasa sustava i analiza njihove strukture (identificiranje atributa)

• analiza ponašanja klasa (treba utvrditi koje se operacije mogu obaviti nad pojedinim objektima klase)

• na temelju provedenih analiza strukture sustava i njegova ponašanja oblikovati strukture objekata i njihova ponašanja

• definiranje korisničkih sučelja 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 ponašanja (metode).

Npr. sva osnovna sredstva u poduzeću imaju nabavnu vrijednost i sadašnju vrijednost i svako osnovno sredstvo se tijekom vremena amortizira.

Odnos klasa koji to omogućuje naziva se generalizacija.

Generalizacija se prikazuje trokutom čija je osnovica okrenuta prema podklasama, a vrh prema nadklasi. Pored trokuta se može upisati “diskriminator”. To je atribut koji omogućuje specijalizaciju. Generalizacija pokazuje istodobno pojavljivanje podklase i nadklase. Generalizacija i specijalizacija su dva pogleda na iste veze između klasa.

• Objekti komuniciraju porukama. Objekt može, u gornjem primjeru, odgovoriti na poruke: amortizacija, zarada putnik/km (putnik po kilometru) što je naslijedio od vlastitih nadklasa i klase kojoj pripada.

www.ckm.ba - Leonardo Miljko

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 sljedeća 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 način pristupa objektu i njegovu modificiranju je pomoću operacija (metoda) koje objekt podržava. Operacije nad objektom zovu se metode. Sve metode nisu vidljive. Neke od njih su interne. Struktura i sadržaj memorije za pohranjivanje objekta skrivene su od vanjskih pogleda.

• Metode vidljive svima zovu se javne (public) metode.

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 sučelja.

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 sučelja.

www.ckm.ba - Leonardo Miljko

Metode i poruke • Poruka Pronaći ime pozvat će odgovarajuću metodu koja pronalazi

i prikazuje promet kupca Ana. Neka druga poruka, npr. Dodati, ponovno će pozvati odgovarajuću metodu koja će zabilježiti 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 sadrži klasa Kupac).

• Ono što korisnika zanima je sučelje (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 upućuje pošiljatelju poruke.

www.ckm.ba - Leonardo Miljko

Metode i poruke • Poruka se mora strukturirati na odgovarajući način i ona nije

potpuno jednaka pozivu procedure ili funkcije u konvencionalnim programskim jezicima. Poruka mora imati sljedeće sastavnice:

• ime metode koja će odgovoriti na poslanu poruku (često se ta sastavnica poruke zove selektor)

• objekt kojem je upućena poruka (najčešće se zove cilj ili primatelj poruke)

• parametre.

www.ckm.ba - Leonardo Miljko

Metode i poruke Npr. Strukturu poruke koja unosi prosječnu ocjenu postignutu

tijekom studiranja, za objekt Ana.

www.ckm.ba - Leonardo Miljko

Metoda može, ali ne mora, vratiti neku vrijednost kao odgovor

na primljenu poruku. To ovisi o dizajnu metode.

Važno je primijetiti da je odgovor na poruku ponovno objekt koji

može biti cilj druge poruke.

Hvala !

Leonardo Miljko

diplomirani inženjer

elektrotehnike,

računarstva i

informatike

Pitanja?

www.ckm.ba - Leonardo Miljko