1 / 40

Objektno orijentirano programiranje

Objektno orijentirano programiranje. Sadržaj: . Motivacija za prelazak na paradigmu objektno orijentiranog programiranja Karakteristike objektno orijentiranog programiranja. Literatura i korisne hiperveze.

millicent
Télécharger la présentation

Objektno orijentirano programiranje

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Objektno orijentirano programiranje

  2. Sadržaj: • Motivacija za prelazak na paradigmu objektno orijentiranog programiranja • Karakteristike objektno orijentiranog programiranja

  3. 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

  4. 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

  5. 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.

  6. 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.

  7. 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.

  8. 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.

  9. 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.

  10. Osnovni pojmovi • Objekt – element programa karakteriziran svojim svojstvima i metodama. • Klasa – predložak po kojem se izgrađuju objekti.

  11. Jednostavan primjer • Klasa: LJUDI • Svojstva: visina, težina, starost, spol, zanimanje… • Metode: spava, jede, radi,... • Objekti: Ante, Ana, Jozo, Marko

  12. Zadavanje svojstava i pozivanje metoda objekata • Ana.visina:=170; • Jozo.spol:=“M” • Ante.spava(); • Marko.radi();

  13. Primjer 2 Klasa automobili: • Svojstva: • Duzina, snaga motora, tip motora, vanjska boja, proizvođač, model... • Metode: • Kretanje, kočenje, svjetlosno signaliziranje, zvučno signaliziranje...

  14. Primjer 3: Klasa Pravokutnik • Elementi objekta: • visina, • sirina, • površina, • opseg, • rotiraj.

  15. 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;} }

  16. Program 1 Ugradi klasu pravokutnik; Glavni{ a = novi pravokutnik(); a.visina=3; a.širina=5; ispiši(‘Površina pravokutnika =‘, a.povrsina()); }

  17. 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);} }

  18. 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.

  19. 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.

  20. 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!

  21. Primjer nasljeđivanja 1: Automobil • Klasa automobil{ svojstva: smjer, pozicija, brzina; metode: gas(), kočnicu(), volan() }

  22. Klasabolji_automobilnasljeđujeautomobil{ metode: klima(), abs() } GLAVNI DIO PROGRAMA{ bolji_automobil audi=new bolji_automobil(); audi.brzina=135; audi.klima(ukljuci); audi.gas(dodaj); }

  23. Primjer nasljeđivanja 2: Klasa nadograđeni_pravokutnik{ Naslijedi pravokutnik; dijagonala() { d:realni broj; d=drugi_korjen(visina^2+sirina^2); vrati d;} }

  24. 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()); }

  25. 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

  26. 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.

  27. 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.

  28. Objektno orijentirano oblikovanje

  29. 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

  30. 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

  31. Namještaj mojStol: tvojStol: bijelaFotelja: Ljudi Žene Muškarci Tanja: Marin: Klasificiranje objekta

  32. 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

  33. Definicije objekta • Konkretna manifestacija apstrakcije • Entitet s jasno određenim granicama i identitetom koji enkapsulira stanje i ponašanje • Instanca klase

  34. 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

  35. 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.

  36. 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

  37. RAZINA GORIVA TEMPERATURA ULJA VOZAČ AUTOMOBIL ITD. ITD. SKRENI POKRENI MOTOR Objektna orijentacija • Objekt komunicira sa sučeljem drugog objekta

  38. 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

  39. 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

  40. 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

More Related