objektno orijentirano programiranje c

22
Strana 1 od 38 2012/2013 Prirodoslovno matematički fakultet Obradili: Saša Mladenovid, Marko Rosid i Goran Zaharija [OBJEKTNO ORIJENTIRANO PROGRAMIRANJE] Bilješke s predavanja

Upload: silkmilk

Post on 29-Dec-2015

89 views

Category:

Documents


2 download

DESCRIPTION

Objektno Orijentirano Programiranje C

TRANSCRIPT

Page 1: Objektno Orijentirano Programiranje C

Strana 1 od 38

2012/2013

Prirodoslovno matematički fakultet Obradili: Saša Mladenovid, Marko Rosid i Goran Zaharija

[OBJEKTNO ORIJENTIRANO PROGRAMIRANJE] Bilješke s predavanja

Page 2: Objektno Orijentirano Programiranje C

Strana 2 od 38

Page 3: Objektno Orijentirano Programiranje C

Strana 3 od 38

OBJEKTNO ORIJENTIRANO

PROGRAMIRANJE

odati po vodi i razvijati softver

temeljem specifikacija je lako

ako su voda i specifikacije zamrznute."

Edward V. Berard

H

Page 4: Objektno Orijentirano Programiranje C

Strana 4 od 38

Page 5: Objektno Orijentirano Programiranje C

Strana 5 od 38

SADRŽAJ

Sustav ....................................................................................................................... 8

Opservacijske metode .............................................................................................. 9

Analitičke metode ................................................................................................... 10

Sustavske metode .................................................................................................. 11

Opis sustava ........................................................................................................... 16

Model .................................................................................................................... 17

Oblikovanje i implementacija ................................................................................. 20

Osnovni koncepti objektno orijentiranog programiranja ...................................... 23

Apstrakcija ............................................................................................................. 24

ENKAPSULACIJA...................................................................................................... 27

NASLJEĐIVANJE ...................................................................................................... 29

POLIMORFIZAM ...................................................................................................... 35

Page 6: Objektno Orijentirano Programiranje C

Strana 6 od 38

Page 7: Objektno Orijentirano Programiranje C

7

SUSTAV

Različito o istome

Page 8: Objektno Orijentirano Programiranje C

Strana 8 od 38

S U S T A V

iječi sustav ili sistem su najčešde usko povezani sa pojmom reda ili poretka, tj. nečega u čemu vlada nekakav red i neka sistematičnost ili sustavnost. Pojam sustav ili sistem je vrlo usko povezan sa pojmom ustrojstva ili organizacije. Ved sama riječ sustav u hrvatskom jeziku označava na određen način povezane jedinke koje čine cjelinu. Međunarodna riječ sistem dolazi od grčke riječi σύστημα (systema), značenja: cjelina sastavljena od nekoliko dijelova ili članova, sustava. U nastavku se daje nekoliko definicija sustava kako bi se uvidjelo različite poglede na isti problem.

Definicije sustava

rva i sa filozofskog gledišta najtočnija definicija: “Sustav je nešto suprotno od kaosa tj. nereda, dakle nešto u čemu vlada nekakav red i poredak”

Ludwig von Bertalanffy 1: “Sustavi su skupine elemenata u međusobnom i uzajamnom djelovanju na koje se sistemski zakoni mogu primijeniti”

Bertalanffy je ideje o potrebi stvaranja opde teorije sustava obrazlagao analizirajudi razvoj znanosti kroz razvoj znanstvenih metoda u povijesti. Analizom je došao do zaključka kako je razvoj pojedinih znanstvenih metoda uvjetovan informacijskom

osnovom i stanjem tehnike odnosno tehnologije.

Pod tehnikom se u hrvatskom jeziku najčešde podrazumjeva upotreba umjetnih sredstava i način obavljanja nekog posla dok se pod tehnologijom najčešde podrazumijeva postupak izvršenja nekog posla uz korištenje tehničkih sredstava.

U engleskom jeziku i to naročito pod ujecajem američke stručne literature pod

tehnologijom se najčešde podrazumijeva i jedno i drugo tj. i sredstva i postupak.

Prema navedenim uvjetima znanstvene metode mogu se podijeliti u tri osnovne grupe:

opservacijske;

analitičke;

sistemske.

1 L. Von Bertalanffy, “The history and status of general systems theory,” Academy of Management Journal, vol. 15, no. 4, pp. 407-426, 1972.

P

R

Page 9: Objektno Orijentirano Programiranje C

Strana 9 od 38

O P S E R V A C I J S K E M E T O D E

pservacijske metode ili metode znanstvenog promatranja prema Bertalanffyju su na neki način izvorište svih ostalih znanstvenih metoda. U počecima pojave znanosti znanstveniku istraživaču pri istraživanju bilo kakvih pojava nije osim dobrog promatranja i zdravog razuma ništa drugo nije stajalo na raspolaganju. Znanstvenik iz tog vremena nije imao na raspolaganju mnoštvo znanstvenih informacija, a tehnička sredstva za podrobnije promatranje pojave bila su vrlo oskudna.

Znanstvenik je stoga mogao sustavno motriti pojave, pažljivo i sustavno zapisivati događaje te potom logično i kritički analizirati zapisane činjenica, odnosno. registrirane informacije o promatranoj pojavi.

Nove znanstvene informacije rezultat su upravo tog rada, sustavnog motrenja, zapisivanja, logičke analize i provjere postavljenih hipoteza daljnjim promatranjem.

Rezultati opservacijske metode u najvedoj mjeri ovisile su o sposobnosti uočavanja

zanimljive pojave od strane istraživača, te ispravnog odabira predmeta i vremena

promatranja. Za vrijeme promatranja ključno je bilo bilježiti sve važne događaje kako bi se mogla provesti logička analiza bilješki koja rezultira postavljanjem smislene hipoteze koju se provjerava daljim promatranjem.

Iz svega navedenog je jasno kako opservacijska metoda kao znanstvena metoda ne predstavlja bilo kakvo promatranje, kakvo se uobičajeno provodi za vrijeme „sjedenja na klupi“ u parku nego je to smišljeno sustavno promatranje temeljem kojeg se postavlja znanstvena hipoteza koja objašnjava promatranu pojavu ili zakonitosti vezane uz istu.

Slika 1 Elementi metode opservacije

O

Page 10: Objektno Orijentirano Programiranje C

Strana 10 od 38

A N A L I T I Č K E M E T O D E

azvitak znanosti i tehnike doveo je do pojave novih znanstvenih metoda koje po metodološkim značajkama nazivamo analitičkim metodama. Znanstvene spoznaje su uvjetovale razvoj tehnike i stvaranje boljih sredstava pomodu kojih je stvorena mogudnost promišljenog djelovanja na pojave.

Razvoj tehničkih sredstava je na taj način omogudio čovjeku, znanstveniku pretvorbu iz pasivnog promatrača u aktivnog sudionika, eksperimentalnog znanstvenika. Za vrijeme istraživanja znanstvenik ne promatra pasivno pojavu ved promišljeno djeluje s ciljem

izazivanja događaja koje na prethodno opisani način promatra i bilježi.

Kako bi promatrali samo događaje koje smo sami izazvali potrebno je spriječiti pojavu slučajnih događaja koje mogu prouzročiti nekontrolirani vanjski čimbenici (sustav je potrebno izolirati od nepoželjnih utjecaja).

emeljem navedenog mogu se izdvojiti osnovna načela analitičkih metoda:

Kako se sustavi i pojave u nekim slučajevima ne mogu izolirati i staviti u posebne uvjete, potrebno je izdvojiti njihov reprezentativni dio. Taj dio zamjenjuje cijeli sustav ili

pojavu te se nad njim provode eksperimenti.

R

T

Page 11: Objektno Orijentirano Programiranje C

Strana 11 od 38

emeljem navedenog može se zaključiti kako su rezultati analitičkih metoda ovisni o:

spjeh analitičkih metoda temeljen je na činjenici da sve prirodne pojave imaju tzv. sistemsko ustrojstvo, tj. sistemsku strukturu. Pojednostavljeno rečeno, svaka prirodna, funkcionalna cjelina, sastoji se od prirodnih funkcionalnih sredina niže razine. Prema terminologiji teorije sustava kaže se kako se svaki sustav sastoji od podsustava koji

su također sustavi, ali niže razine. Svaki podsustav predstavlja funkcionalnu cjelinu i ima prepoznatljivu funkciju u višem sustavu.

S U S T A V S K E M E T O D E

udwig von Bertalanffy je među prvima ukazao na to da postoje

fenomeni i problemi na koje se ne mogu uspješno primijeniti ni

opservacijske ni analitičke metode u znanstvenom istraživanju. Veliki dio takvih problema uočio je u području biologija. �

Jednostavan primjer koji ilustrira nedostatak opservacijske i analitičke metode je živo bide, ili život. Život je pojava vezana za cjelinu bida i nema svoje sjedište samo u nekom dijelu bida ved je vezan za sve dijelove bida. Ako želimo proučavati život ili živo bide, te sukladno navedenim metodama odvojili jedan dio živog bida kao reprezentativni uzorak nad kojim demo provoditi eksperimente, ne bi bili u stanju izvesti zaključke o životu promatranog bida.

ojava cjeline nije karakteristična samo za biologiju ved se pojavljuje i u gotovo svim drugim znanostima. Problemi kojima se znanost bavi sve su složeniji, (kompleksniji), što vrijedi i za područje informatike.

T

U

L

P

Page 12: Objektno Orijentirano Programiranje C

Strana 12 od 38

Kompleksnost sustava

nformacijski sustav može biti kompleksan. U razmatranju se treba odmaknuti od uobičajenog poimanja informacijskog sustava kao poslovnog sustava te treba obuhvatiti cjelinu koja uključuje mnogostruke aplikacije i sudionike (tehnologiju i ljude). S obzirom na popularnost autocesta u zadnje vrijeme, promotrimo sustav za naplatu cestarine kao predstavnika kompleksnih sustava. Mnogostruke aplikacije i sudionici, čine ovaj sustav teškim za modeliranje, a s ciljem razumijevanja interakcija koje se mogu nadi u promatranom sustavu. Uzimajudi u obzir navedeno, za izradu matematičkog modela, znanost o kompleksnosti dobar je kandidat. Model de omoguditi istraživanje međuovisnosti u sustavu za naplatu cestarine. Metoda modeliranja uključuje način izgradnje višedimenzionalnih elemenata odozdo prema gore iz skupa elemenata niže razine, a u sklopu razbijanja sustava na višedimenzionalne elemente od vrha prema dolje. Iako postoje višestruke definicije kompleksnih sustava može se redi kako je kompleksan sustav onaj koji se sastoji od mnogo dijelova čije međudjelovanje

nije jednostavno. Kod takvih sustava cjelina predstavlja više od zbroja vlastitih

dijelova2, ne u konačnom, metafizičkom smislu, ved u važnom objektivnom smislu, pri čemu značajke dijelova i zakoni njihovih međudjelovanja nisu dovoljni za jednostavno zaključivanje na značajke sustava kao cjeline3. Postoji i težnja za podjelom na „staru znanost“ primjerenu za jednostavne sustave i „novu znanost“ kompleksnih sustava.4 Jedna od značajki stare znanosti je linearnost koja se očituje u pristupu koji

kreće od analize pojedinih dijelova sustava, a na cjelinu gleda kao zbroj

dijelova sustava. Vedina kompleksnih sustava pokazuje linearnost i nelinearnost u podsustavima kojih ih tvore. Nužan uvjet za kompleksnost je postojanje

međudjelovanja između dijelova sustava iz kojih izviru (eng. emerge) značajke

sustava kao cjeline, kako pokazuje Slika 2.

Slika 2 Primjer izviranja svojstava

2 Aristotela i njegovu tvrdnju: �“Cjelina je više od sume dijelova.“� spominju mnogi autori, pored ostalih i

G.Klaus u knjizi: Kyberentik und Gesellschaft, VEB Deutscher Verlag der Wissenschaften, Berlin l965. str. 61. 3 H. A. Simon, The Sciences of the Artificial - 3rd Edition, 3rd ed. The MIT Press, 1996. 4 W. R. Ashby, An introduction to cybernetics. Chapman & Hall London, 1956.

I

Page 13: Objektno Orijentirano Programiranje C

Strana 13 od 38

ojam izviranja može se opisati kako nedjeljiva značajka promatranog sustava

koji je posjeduje, a koja izvire iz sustava kao cjeline, a koju nema niti jedan od

elemenata koji čine promatrani sustav.5 Neki autori tvrde kako je svojstvo izviranja

koje pokazuju kompleksni sustavi nepredvidivo i može predstavljati novu razinu evolucije sustava.6,7 Ovakvo tumačenje ne prikazuje u cijelosti koncept izviranja i ne vrijedi opdenito za sva područja primjene. Za ovu raspravu važan je pojam inženjerskog izviranja koji je najjednostavnije objasniti na primjeru.

PRIMJER INŽENJERSKOG IZVIRANJA:

rilikom oblikovanja sklopovske pločice znaju se značajke svih sastavnica te se temeljem tih informacija mogu izračunati neka od međudjelovanja elemenata sustava. Nakon provedenih izračuna, inženjer točno određuje način spajanja elemenata i postavlja ih na pločicu s pripadajudim vodljivim dijelovima pomodu kojih de ostvariti zadani način spajanja, a s namjerom ostvarivanja

predodređenog izvirućeg, ponašanja sustava kao cjeline.8

Jedan od osnovnih razloga za uvođenje pristupa kompleksnosti i izviranja je pronalaženje načina oblikovanja sustava kod kojih će željena svojstava izvirati

iz sustava kao cjeline. Temeljem navedenog može se redi kako se ponašanje inženjerskih sustava kao cjeline može izvesti iz ponašanja i međuodnosa dijelova koji čine inženjerski sustav. Kompleksan sustav obilježen je međudjelovanjem sastavnica. Diskretni sustavi sastoje se od skupa elemenata i skupa relacija među njima (konačni skupovi). Diskretizacija je temelj za pojavu sistem integratora sustava.

5 L. Von Bertalanffy, “The history and status of general systems theory,” Academy of Management Journal,

vol. 15, no. 4, pp. 407-426, 1972. 6 J. Goldstein, “Emergence as a construct: History and issues,” Emergence, vol. 1, no. 1, pp. 49-72, 1999. 7 A. Finch, “Complexity and systems theory: Implications for the EFL teacher/researcher,” The Journal of

Asia TEFL, vol. 1, no. 2, pp. 27–46, 2004. 8 J. Johnson, “Can Complexity Help Us Better Understand Risk?,” RISK MANAGEMENT-LEICESTER-, vol. 8,

no. 4, p. 227, 2006.

P

P

Page 14: Objektno Orijentirano Programiranje C

Strana 14 od 38

Skup elemenata sustava

kup elemenata sustava može biti bilo koja zbirka objekata koja se naziva elementi objekta. Elementi sustava mogu biti apstraktni ili konkretni, a razmatrat de se konačan prebrojiv skup elemenata od 1 do N za neki konačan broj N. Skup X je dobro definiran

ako postoji operacijska procedura Px za prepoznavanje elemenata skupa.

Označavanje Px(x)=Istina znači da je element x prošao proceduru Px , pa kažemo da x

pripada X i pišemo X={x|Px(x)=Istina}

Ako postoji relacija R između dva elementa x1 i x2 tada kažemo da je to binarna relacija i

pišemo x1 R x2, ili R( x1, x2 )=Istina. Opdenito, relacija između n elemenata naziva se n-arna

relacija i označava se sa R( x1, x2, …, xn )=Istina

Složena relacija < a, b, c > ≠ < a, b > + < a, c > + < b, c > ne može se prikazati kao skup binarnih relacija, a razliku u prikazu daje .

N-arne relacije su temeljne relacije kompleksnih sustava, a spajaju elemente u

strukture koje postoje na višoj razini apstrakcije u odnosu na tvorbene elemente.

Binarne relacije mogu se promatrati kao poseban slučaj n-arne relacije između n

elemenata.

Kao slučaj korištenja odabran je sustav za naplatu cestarine. Svatko od vas koristio je usluge tog sustava i to u segmentu pladanja na autocesti (Slika 4, Slika 6).

S

Slika 3 Skup binarnih relacija i 3-narna relacija .

Slika 5 Shematski prikaz rasporeda opreme mješovitog prolaza van kućice

Page 15: Objektno Orijentirano Programiranje C

Strana 15 od 38

Slika 6 Shematski prikaz rasporeda opreme mješovitog prolaza unutar kućice

Kao i svaki korisnik, primijetili ste samo dio elemenata sustava. Pokušajte se prisjetiti nekog od elemenata kako bi mogli napraviti analizu potreba, a potom i model sustava.

Slika 7 Zahtjevi korisnika nisu dovoljni za oblikovanje sustava

Page 16: Objektno Orijentirano Programiranje C

Strana 16 od 38

rethodna ilustracija treba poslužiti kao upozorenje kako sam postupak oblikovanja

sustava uključuje i znanje koje ne dolazi isključivo iz informatičke domene već je

prožeto i znanjem vezanim uz domenu rješavanja konkretnog problema.

Opis sustava

vrha opisa ili modeliranja sustava je pokazati kako bi sustav trebao raditi,9 iz čega slijedi da model opisuje svojstva modeliranog sustava. Modeliranje je tehnika

kojom se izražava, predočava, analizira i mijenja arhitektura sustava.10 Problem modeliranja nekog sustava svodi se na identifikaciju (određivanje) sustava, odnosno podsustava, koji se uzimaju u razmatranje i modeliranje samo onog dijela sustava koji može utjecati na promatrana svojsvta ili ponašanje.

pojam sustava vrlo usko povezan sa pojmom ustrojstva ili organizacije. Razmotrimo kako se može prikazati hijerarhijski organiziran sustav te zaključimo zbog čega je baš hijerarhijska struktura ta koja se najčešde srede u praksi.

Prikaz hijerarhijski organiziranih sustava

vaki sustav mogude je opisati entitetima i pripadajudim odnosima (relacijama). Neka entiteti i pripadajude relacije nekog sustava čine strukturu sustava koju je mogude preobličiti u stablo sa označenim čvorovima i vezama, tada kažemo da su dva sustava usporediva ako se pronađu sličnosti u stablima kojima je predstavljena njihova struktura. Razina usporedivosti ovisi neposredno o razni sličnosti promatranih stabala. Sličnost se može odrediti nad entitetima strukture, uspoređivanjem značajki entiteta, ili pak nad složenijom strukturom koju tvore združeni entiteti i pripadajudi odnosi.

sporedivost sustava osigurava mogudnost procjene udaljenosti modela postojedeg sustava od modela ciljnog sustava, a u idealnom slučaju model postojedeg sustava u cijelosti odgovara modelu ciljnog sustava (sve funkcionalne i nefunkcionalne značajke su zadovoljene).

U različitim područjima i na različite načine došlo se do zaključka kako je za razumijevanje načina na koji djeluju složeni sustavi, potrebno zaključiti na njihovu hijerarhijsku organizaciju, koja je prepoznata u sustavima od transportnih pa do metaboličkih mreža.

9 L. Franco, J. Newman, G. Murphy, and E. Mariani, Achieving quality through problem solving and process

improvement. Bethesda, USA: USAID, 1994, p. 126. 10 T. Kresken, System Modelling. 1996, p. 11.

P

S

U

S

Page 17: Objektno Orijentirano Programiranje C

Strana 17 od 38

Hijerarhija je temeljna značajka mnogih složenih sustava.11 Hijerarhijska organizacija strukturirana je tako da je svaki entitet organizacije, osim jednog (korijenskog), podređen (zavisan), jednom od drugih entiteta organizacije.

Ovaj način organizacije prevladava u velikim i složenim sustavima, pa je tako vedina tvrtki, vlada i religija, ali i tehničkih sustava upravo tako organizirana.

lanovi hijerarhijski organiziranih struktura razmjenjuju informacije sa neposredno nadređenim entitetom.

Na jednostavnom primjeru organizacije bankovnih računa može se pokazati značaj hijerarhije.

Na pitanje: „Koliko je upladeno novaca u banku na razini pojedinca, grupe korisnika u jednom gradu, regiji i na kraju sveukupno?“ jednostavno je odgovoriti ako su podaci hijerarhijski organizirani, sumiranjem elemenata na niže razine. U suprotnom odgovor se dobija isključivo sumiranjem pojedinačnih uplata.

Model

odel je pojednostavljeni prikaz dijela svijeta koji se koristi za komunikaciju,

dokumentaciju, analizu, simulaciju, donošenje odluka i provjeru. Model kao takav ima ograničenja koja proizlaze iz uvedenih pojednostavljenja modeliranog svijeta.

Model može biti matematički, izražen formulama, tekstualan, izražen tekstom ili vizualan, vizualiziran kroz dijagrame. Model može biti formalan, označavanje, operacije i pojmovi precizno su definirani ili neformalan kada koristi govorni jezik i skice. Kvantitativni modeli koriste smislene brojčane vrijednosti koje omoguduju provjeru i vrednovanje. Kvalitativni modeli koriste relacije i ponašanje, osiguravajudi razumijevanje. Konkretni modeli koriste opipljive objekte i parametre, dok apstraktni

modeli izražavaju mentalne koncepte. Neke modele mogude je izvoditi (kao simulacije) dok su drugi razumljivi samo ljudima.

11

E. Ravasz and A. L. Barabási, “Hierarchical organization in complex networks,” Physical Review E, vol. 67, no. 2, p. 26112, 2003.

M

C

Page 18: Objektno Orijentirano Programiranje C

Strana 18 od 38

Sistemnost

Sistemnost je donekle u suprotnosti sa pojmom sveobuhvatnosti. Sveobuhvatnost podrazumijeva obuhvatiti istraživanjem i analizom sve do najsitnijih mogućih detalja, odnosno analizirati sustav do prepoznatljivih elemenata najniže sistemske razine. Sistemnost znači istraživati i analizirati sustav samo do one sistemske razine na kojoj

su, s obzirom na svrhu istraživanja, elementi, struktura i funkcija sustava najjasniji. Jedna od najpoznatijih metoda sistemske analize je metoda crne kutije.

Metoda crne kutije

Metoda crne kutije (eng. Black Box Methode) se često koristi u raznim strukama kada se želi zaključiti na ponašanje nekog sustava. Crna kutija predstavlja model sustava čiju unatrašnjost ne poznajemo ili u čiju unutrašnjosti ne možemo ili ne želimo udi. O svojstvima takvog sustava možemo nešto doznati samo promatranjem onog što se sa sustavom događa odnosno izazivanjem nekih promjena sustava. Na svojstva sustava zaključujemo temeljem promatranja ulaza i izlaza i na temelju njihove utvrđene uzročno posljedične veze. Ako vanjski utjecaji na sustav ne ovise o promatraču, tada se metoda crne kutije svodi na ranije spomenutu metodu znanstvenog promatranja ili opservacije. Kada aktivno proizvodimo ulaze u sustav i promatramo reakcije sustava na tako narinute ulaze, govorimo o eksperimentima metodom crne kutije. U teoriji sustava pored pojma crne, spominju se još i pojmovi bijele i sive kutije.12 Bijela kutija predstavlja model sustava o kome sve (elemente, strukturu i ponašanje ) znamo. Siva kutija je model za sustav čije značajke samo djelomično (elemente, strukturu i ponapanje možemo samo pretpostaviti) poznajemo.

Cilj svake sistemske analize bi trebao biti prijelaz modela iz crne u bijelu kutiju

Nakon završene analize može se redi kako postoje svi preduvjeti za izradu specifikacija koje de redi što to sustav mora činiti.

12 Lars Skyttner, „General Systems Theory: Problems, Perspectives, Practice“, World Scientific, 2005

Page 19: Objektno Orijentirano Programiranje C

19

OBLIKOVANJE

I IMPLEMENTACIJA

U čemu je razlika?

Page 20: Objektno Orijentirano Programiranje C

Strana 20 od 38

O B L I K O V A N J E I I M P L E M E N T A C I J A 13

Nakon što je specifikacijom utvrđeno što softverski sustav treba raditi, oblikovanje treba utvrditi kako de sustav raditi. Rezultat oblikovanja je dizajn sustava: precizni opis građe sustava, dijelova od kojih se on sastoji, sučelja izmedu dijelova, korisničkog sučelja, te eventualno struktura podataka i algoritama koji se koriste. Oblikovanje je iterativni postupak, tj. do dizajna se dolazi postupnim usavršavanjem i razradom kroz više iteracija.

Nakon oblikovanja slijedi implementacija, tj. svi dijelovi predviđeni dizajnom realiziraju se uz pomod pogodnog programskog jezika. Zadnje iteracije oblikovanja obično se preklapaju s implementacijom.

Također, implementacija se donekle preklapa s verifikacijom (testiranjem), bududi da se programeri odmah bave otkrivanjem pogreški.

Kod objektnog pristupa oblikovanju, riječ je o takvom pristupu u kojem projektant prvenstveno razmišlja o “objektima” (predmetima, osobama, pojavama, ...) a manje o “funkcijama” (operacijama, aktivnostima, procesima, ...). Pristup je postao popularan u 80-tim u 90-tim godinama 20. stoljeda, a bio je najprije motiviran razvojem grafičkih sučelja. Danas je to uobičajeni način oblikovanja softvera.

Osnovni pojmovi unutar objektnog oblikovanja su objekt i klasa.

Objekt je entitet uz kojeg je vezan skup atributa i skup operacija. Vrijednosti atributa vezanih uz objekt odreduju stanje tog objekta. Operacije vezane uz objekt mijenjaju vrijednosti objektovih atributa, te na taj način djeluju na stanje tog objekta.

Klasa je skup istovrsnih objekata. Definicija klase služi kao obrazac za stvaranje objekata. Definicija klase sadrži deklaracije svih atributa i operacija vezanih uz objekt iz te klase.

Svojstva objektno-oblikovanog sustava

Konačni rezultat objektnog oblikovanja je objektno-oblikovani sustav (design). On se sastoji od objekata koji su u međusobnoj interakciji . Svaki objekt pripada nekoj klasi. Interakcija objekata odvija se na način da jedan objekt (klijent) pokrene operaciju drugog objekta (poslužitelja).

U tom smislu, operacije se mogu tumačiti kao servisi, a svaki objekt može se pojaviti u ulozi klijenta i u ulozi poslužitelja. Prilikom poziva operacija, objekti razmjenjuju podatke (parametre i rezultate).

13 Robert Manger; Softversko inženjerstvo, 2008

Page 21: Objektno Orijentirano Programiranje C

Strana 21 od 38

U objektno-oblikovanom sustavu ne postoje globalne funkcije koje bi se izvršavale neovisno o objektima, ved je funkcionalnost sustava izražena isključivo u terminima operacija vezanih uz objekte. Slično, ne postoje globalne varijable, već se stanje

sustava dobiva kao zbroj stanja pojedinih objekata.

Objekti unutar objektno-oblikovanog sustava se u principu izvršavaju paralelno. To daje mogudnost da se sustav distribuira na više računala, ili da se istovremeni rad objekata simulira na jednom računalu.

Novi objektno-oblikovani sustavi mogu biti razvijeni uz upotrebu objekata koji su bili stvoreni za prethodne sustave. To smanjuje cijenu razvoja softvera i vodi ka upotrebi standardnih objekata. Ipak, pokazuje se da su za ponovnu upotrebu pogodnije vede cjeline od pojedinih objekata.

Važno svojstvo objektno-oblikovanog sustava je da on omoguduje laganu evoluciju. Naime, sustav se sastoji od objekata, dakle dijelova s jakom unutarnjom kohezijom i labavim vezama prema van. Evolucija sustava zahtijevat de promjenu unutarnje grade pojedinog objekta ili dodavanje novih objekata, a takvi zahvati nemaju značajnog učinka na ostatak sustava.

Objektno oblikovanje sastavni je dio objektno-orijentiranih metoda za razvoj softvera (Booch, Rum-baugh, Jacobson, RUP/UML). Osim oblikovanja, te metode uključuju objektnu analizu (specifikaciju),te objektno programiranje. I analiza i oblikovanje bave se uočavanjem objekata i klasa te razvijanjem objektnih modela. Razlika izmedu analize i oblikovanja nije čvrsto odredena i svodi se na sljedede.

•U analizi se koncentriramo na modele aplikacijske domene, dok se u oblikovanju bavimo modeliranjem bududeg softvera.

•Analiza je manje precizna, tj, uočavaju se samo najvažniji objekti. Oblikovanje dodaje nove objekte koji su na primjer potrebni za korisničko sučelje ili za unutrašnje funkcioniranje složenih objekata.

•Analiza ne ulazi u detalje sučelja objekata, dok oblikovanje do kraja definira to sučelje.

Objektno programiranje bavi se realizacijom objektno-oblikovanog sustava pomodu objektno-orijentiranog programskog jezika kao što je C#, Java ili C++. Posao je relativno jednostavan, bududi da objektno-orijentirani jezici uključuju sve što je potrebno za neposredno definiranje klasa, stvaranje objekata, te pozivanje operacija.

Page 22: Objektno Orijentirano Programiranje C

Strana 22 od 38

Objektno orijentirano programiranje predstavlja pokušaj približavanja modela programa načinu ljudskog razmišljanja. Kod starog načina programiranja, programer je morao pronadi računalnu zadadu koju treba izvršiti kako bi se riješilo neki problem. Programiranje se sastojalo od pronalaženja niza instrukcija koje bi izvršile razmatrani zadatak. U samom temelju objektno orijentiranog programiranja, umjesto zadada nalaze se objekti - elementi koji imaju svoje ponašanje, drže podatke i mogu međudjelovati. Programiranje se sastoji od oblikovanja skupa objekata koji opisuju problem koji treba riješiti. Programski objekti u programu predstavljaju stvarne ili zamišljene elemente u području problema. Na ovaj način razvoj programa je prirodniji i jednostavniji za postavljanje i razumijevanje.

Izrada programa uključuje:

1. Analizu potreba 2. Tehnički opis 3. Dizajn i arhitekturu 4. Kodiranje 5. Prevođenje 6. Testiranje 7. Dokumentaciju 8. Održavanje