470 likes | 832 Views
Objektno orijentirano programiranje. Sadržaj: . Motivacija za prelazak na paradigmu objektno orijentiranog programiranja Karakteristike objektno orijentiranog programiranja. Literatura i korisne hiperveze.
E N D
Sadržaj: • Motivacija za prelazak na paradigmu objektno orijentiranog programiranja • Karakteristike objektno orijentiranog programiranja
Literatura i korisne hiperveze • Graham, I., (1994), Object Oriented Methods, Addison-Wesley Publishing Company Inc., London • Object oriented programming tutorial http://www.quiver.freeserve.co.uk/OOP1.htm • Object-Oriented Modeling, http://www.ifs.uni-linz.ac.at/ifs/useful/oomod/oomod.html
Motivacija za promjenu paradigme: • Kriza industrije programske podrške računalnih sustava • Potreba za bržim razvojem kvalitetne programske podrške • Preveliko “preklapanje” pri radu programera
Rješenje: • Strukturiranje programske podrške u procesu izrade na način koji bi omogućio ponovno korištenje te programske podrške. Omogućavanje nadogradivosti izgrađene programske podrške.
Prvi koraci • Kasne sedamdesete godine prošlog stoljeća: Adele Goldberg i Alan Kay predstavili objektno orijentirani programski jezik Smalltalk • Uspjeh? Pretežno samo na akademskoj razini. Industrija pokušava nadograditi postojeće programske jezike.
Kako su se nadograđivali postojeći programski jezici? • Dodavanjem biblioteka potprograma • Problemi? Nije se izgubila potreba za intervencijom unutar programskog koda potprograma unutar biblioteka! • Programi pisani jednim programskim jezikom nisu mogli koristiti potprograme iz biblioteke nekog drugog programskog jezika.
Prvo “pravo” rješenje! • Temeljita nadogradnja programskog jezika C. Izrađen je objektno orijentirani programski jezik C++. To je prvi objektno orijentirani programski jezik široko prihvaćen od industrije.
Osnovne karakteristike objektno orijentiranog programiranja • Ponovno korištenje elemenata programske podrške (eng. Reusability) • Nadogradivost elemenata programske podrške (eng. Extensibility) Kako to postići: grupirati elemente programske podrške unutar klasa. Standardizirati uporabu klasa u različitim okruženjima. Omogućiti nadogradnju klasa.
Osnovni pojmovi • Objekt – element programa karakteriziran svojim svojstvima i metodama. • Klasa – predložak po kojem se izgrađuju objekti.
Jednostavan primjer • Klasa: LJUDI • Svojstva: visina, težina, starost, spol, zanimanje… • Metode: spava, jede, radi,... • Objekti: Ante, Ana, Jozo, Marko
Zadavanje svojstava i pozivanje metoda objekata • Ana.visina:=170; • Jozo.spol:=“M” • Ante.spava(); • Marko.radi();
Primjer 2 Klasa automobili: • Svojstva: • Duzina, snaga motora, tip motora, vanjska boja, proizvođač, model... • Metode: • Kretanje, kočenje, svjetlosno signaliziranje, zvučno signaliziranje...
Primjer 3: Klasa Pravokutnik • Elementi objekta: • visina, • sirina, • površina, • opseg, • rotiraj.
Klasa pravokutnik{ visina: realni broj; širina: realni broj; površina() { p:realni broj; p=visina*sirina; vrati p;} opseg() { o:realni broj; o=2*(visina+sirina); vrati o;} }
Program 1 Ugradi klasu pravokutnik; Glavni{ a = novi pravokutnik(); a.visina=3; a.širina=5; ispiši(‘Površina pravokutnika =‘, a.povrsina()); }
Program 2 Ugradi klasu pravokutnik; Glavni(){ prvi = novi pravokutnik(); drugi = novi pravokutnik(); ispiši (‘unesi visinu i širinu prvog pravokutnika’); uzmi (a.visina, a.širina); ispiši (‘unesi visinu i širinu drugog pravokutnika’); uzmi (b.visina, b.širina); ako je a.površina()=b.površina tada ispiši(‘Pravokutnici imaju jednaku površinu) u suprotnom{ ako je a.povr a.površina()>b.površina tada ispiši(‘Prvi pravokutnik ima veću površinu) u suprotnom ispiši(‘Drugi pravokutnik ima veću površinu);} }
Program 1 i program 2 koriste istu klasu; klasu pravokutnik. • Programerima programa 1 i 2 potrebno je poznavati samo specifikacije klase pravokutnik. Sama implementacija klase nije bitna za korištenje njenih primjeraka.
Enkapsulacija implementacije objekta • Nazivi svojstava i metoda su jedini vidljivi dijelovi objekta. • Implementacija objekta je skrivena. • Imena svojstava i metoda čine sučelje objekta. • Komunikacija s objektom se vrši korištenjem poruka.
Ponovno korištenje elementa programske podrške • Ostvarena je mogućnost ponovnog korištenja elemenata programske podrške (klasa pravokutnik)! • Potrebno je ići dalje: omogućiti nadogradivnost takvih elemenata. Rješenje: nasljeđivanje!
Primjer nasljeđivanja 1: Automobil • Klasa automobil{ svojstva: smjer, pozicija, brzina; metode: gas(), kočnicu(), volan() }
Klasabolji_automobilnasljeđujeautomobil{ metode: klima(), abs() } GLAVNI DIO PROGRAMA{ bolji_automobil audi=new bolji_automobil(); audi.brzina=135; audi.klima(ukljuci); audi.gas(dodaj); }
Primjer nasljeđivanja 2: Klasa nadograđeni_pravokutnik{ Naslijedi pravokutnik; dijagonala() { d:realni broj; d=drugi_korjen(visina^2+sirina^2); vrati d;} }
Program 3 Ugradi klasu nadograđeni_pravokutnik; Glavni{ a = novi nadograđeni_pravokutnik(); a.visina=3; a.širina=5; ispiši(‘Dijagonala pravokutnika =‘, a.dijagonala()); }
Privatni i javni elementi objekata • Svako svojstvo ili metoda mogu biti privatni ili javni. Privatno svojstvo ili metoda vidljivo je samo elementima objekta, dok su javna svojstva i metode element sučelja objekta odnosno takva svojstva i metode su vidljiva okolini objekta
Neke prednosti objektno orijentiranog programiranja • Dobro oblikovani objekti predstavljaju osnovu za izgradnju sustava od prethodno korištenih modula što ima za posljedicu veću produktivnost pri izradi programske podrške. • Ponovno korištenje klasa već testiranih unutar drugih sustava smanjuje mogućnost nastanka pogrešaka i vrijeme potrebno za testiranje sustava. • Skrivanje implementacije objekata podiže sigurnost sustava.
Neki potencijalni problemi • Kratki rokovi isporuke programske podrške često ne ostavljaju mogućnost za kreiranje ponovno upotrebljivih modula. • Nisu dovoljno razvijeni mehanizmi pretraživanja biblioteka klasa. • Ostvarivanje višestrukog nasljeđivanja.
Objekti • Što su objekti? Postoje objekti datuma, plaće, računa, audio i video objekti, objekti datoteka, itd. Gotovo se svaka imenica može predstaviti objektom. • U svijetu postoje objekti različitih tipova • UML koristi ikone za predstavljanje objekta ili pravokutnik u kojem se specificira ime i tip objekta
Klase • Objekti imaju svojstva (tj. atribute, kao što su boja, veličina i težina) i obavljaju akcije (tj. imaju ponašanja kao npr. spavanje ili crtanje) • Klasa predstavlja grupu srodnih objekata • npr. sva auta pripadaju klasi “Auto”, iako se individualna auta razlikuju po modelu, boji i sl. • Klasa specificira općeniti format svojih objekata; svojstva i akcije dostupne objektu ovise o njegovoj klasi
Namještaj mojStol: tvojStol: bijelaFotelja: Ljudi Žene Muškarci Tanja: Marin: Klasificiranje objekta
xxx: xxx: xxx: xxx: xxx: xxx: xxx: xxx: xxx: xxx: xxx: xxx: xxx: xxx: xxx: xxx: xxx: xxx: xxx: Preklapanje klasa Klasificiranje objekta • Objekti se uglavnom mogu klasificirati na više načina • Marin se može klasificirati kao osoba, muškarac, zaposlenik, student itd., ovisno o kontekstu
Definicije objekta • Konkretna manifestacija apstrakcije • Entitet s jasno određenim granicama i identitetom koji enkapsulira stanje i ponašanje • Instanca klase
stolica: sjedi na Marin: auto: vlasnik relacija (veza) stvarnost model mapiranje Mapiranje svijeta na programsku podršku • Objekti iz stvarnosti mapiraju na objekte u programskoj podršci
Mapiranje svijeta na programsku podršku • Mi živimo u svijetu objekata. Pogledajte oko sebe – vidjet ćete automobile, avione, ljude, životinje, zgrade, prometna svjetla, liftove, itd. • Objektno orijentirana tehnika pokušava imitirati naš način razmišljanja. Sustav razvijen korištenjem OO tehnike se može promatrati kao sustav objekata koji surađuju u svrhu rješavanja nekog zadatka.
Objektna orijentacija • Objektna orijentacija koristi klase za enkapsulaciju / učahurivanje podataka (atributa) i metoda (ponašanja) • Objekti imaju sposobnost skrivanja svoje implementacije od drugih objekata • Iako međusobno komuniciraju putem sučelja (kao što sučelje auta prema vozaču uključuje volan, gas, kočnicu i mjenjač), objektima nije poznata implementacija drugih objekata (kao što ni vozaču nije poznato kako su implementirani mehanizmi upravljanja volanom, motorom, kočnicom i prijenosom) • Skrivanje informacija je ključno za dobro programsko inženjerstvo
RAZINA GORIVA TEMPERATURA ULJA VOZAČ AUTOMOBIL ITD. ITD. SKRENI POKRENI MOTOR Objektna orijentacija • Objekt komunicira sa sučeljem drugog objekta
Dekompozicija sustava • Divide et impera (podijeli pa vladaj) • Algoritamska dekompozicija • Problem razlaže na slijed događaja ili funkcija • Objektno - orijentirana dekompozicija • Definira povezanost i međusobnu komunikaciju među objektima u sustavu
Dekompozicija sustava • Algoritamska dekompozicija Naruči i plati karticom Provjera narudžbe Provjera kartice Obavljanje narudžbe Izvršenje Provjeri kontrolnu znamenku Postoji li roba u skladištu Dovoljna količina ? Provjeri valjanost kartice Ažuriraj skladište Ažuriraj karticu Pošalji knjige Ažuriraj knjigu računa Provjeri valjanost u banci Provjeri stanje na računu
Dekompozicija sustava • Objektna dekompozicija Narudžba Provjera stanja na skladištu Skladište Provjera valjanosti Aktiviranje narudžbe Kartica Ažuriranje knjige računa Provjera stanja računa Isporuka Kupac Knjiga računa Bankovni račun