Click here to load reader

Objektno orijentisano

  • View
    100

  • Download
    0

Embed Size (px)

DESCRIPTION

Teorija

Text of Objektno orijentisano

Sadraj: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. Elementi standardnog C++ okruenja Pregled tehnika programiranja Modelovanje problema Modelovanje problema klasama Inline Funkcije Class Scope i pristup lanovima klase Razdvajanje Interfejsa od implementacije Poziv konstruktora i destruktora Podrazumevana pokomponentna dodela Konstruktor kopije Prijatelji klasa Prijateljske funkcije Prijateljske klase Preklapanje operatora Operatorske funkcije Boni efekti i veze izmeu operatora Operatorske funkcije kao lanice ili kao globalne funkcije Unarni i binarni operatori Izbor povratnih tipova operatorskih funkcija Izvoenje, nasleivanje Definisanje izvedene klase Vidljivost i prava pristupa Naini izvoenja Konstruktori i destruktori izvedenih klasa Polimorfizam Konverzija pokazivaa i referenci Virtuelne funkcije Uslov aktiviranja virtuelnog mehanizma iste virtuelne funkcije i apstraktne klase Virtuelni destruktor Nizovi i izvedene klase Viestruko izvoenje (nasleivanje) Konstruktori i destruktori viestruko nasleivanje Viestruki podobjekti Virtuelne osnovne klase Generiki mehanizam abloni Definisanje ablona Generisanje funkcija Generisanje klasa Obrada izuzetaka

41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71.

Izazivanje izuzetaka Prihvatanje izuzetaka Neprihvadeni izuzeci Ulazno / izlazni tokovi Hijerarhija klasa za realizaciju ulazno-izlaznih operacija Standardni tokovi Klase za ulazne tokove Konstruisanje objekata ulaznih tokova Konstruktori ulaznih tokova datoteka Konstruktor bez argumenata Konstruktor sa argumentima Navoenje deskriptora datoteke Konstruktori ulaznih tokova Operacije ulaznog toka Operacija GET Operacija READ Prekalpanje operatora ekstrakcije Izlazni tokovi Upotreba operatora umetanja Formiranje izlaza Operacije izlaznog toka Funkcija WRITE Preklapanje operatora umetanja za korisnike tipove Standardna biblioteka STL Kontejnerske klase Namespace Vector Iteratori Lists Algoritmi String

Objektno Orijentisano Programiranje - C++Elektronski fakultet u Niu Prof. Dragan Jankovid

Elementi standardnog C++ okruenjaFaze u razvoju C++ programa: - Editovanje - Preprocesiranje - Compajliranje - Linkovanje - Uitavanje - Izvravanje

Pregled tehnika programiranjaNestrukturno - proceduralno programiranje: - Glavni program direktno operie sa globalnim podacima - Dugi i nepregledni programi - Copy paste- Kod se viestruko koristi kopiranjem delova Proceduralno programiranje: - Program se moe posmatrati kao sekvenca poziva potprograma (procedura) - Strukture podataka se modeliraju odvojeno od koda procedura koje ih obrauju - Viestruko koridenje koda postie se preko biblioteka procedura i funkcija Modularno programiranje: - Procedure sa zajednikom funkcionalnodu su integrisane u jedan modul - Svaki modul moe da ima svoje sopstvene podatke - Viestruko koridenje struktura podataka i procedura Objektno orijentisano programiranje Strukture podataka i procedure integrisane u klase: - Program moe da se posmatra kao mrea objekata koji su u interakciji pri emu svaki objekat zna svoje stanje - Apstracija, enkapsulacija, nasleivanje i polimorfizam - Ponovno koridenje objekata

Modelovanje problema:Definisati objekte koji se sredu u opisu problema Apstrahovati objekte klasama Definisati elemente klasa Definisati broj objekata, trenutak njihovog nastajanja, nestajanja i nain medjusobne interakcije tokom vremena Definisati odgovornosti Klase

Modelovanje problema klasama:Modeluju (apstrahuju) objekte o Atribute (podaci lanovi) o Ponaanja (funkcije lanice) Definiu se upotrebom kljune rei class Funkcije lanice o Metode o Aktiviraju se kao odgovori na poruke

-

-

-

-

Specifikatori prava pristupa lanovima klase public: o Pristup omoguden svuda gde objekat klase ima scope private: o Pristup omoguden samo u funkcijama lanicama protected: o U izvedenim klasama Konstruktori Specijalne funkcije lanice o Inicijalizuju podatke lanove klase o Isto ime kao i ime klase Pozivaju se kada se kreira (instancira) objekat klase Vie konstruktora o Overloading funkcija Nemaju povratni tip Funkcije lanice definisane van klase Binarni rezolucioni operator (::) o Vezuje ime funkcije sa imenom klase o Jedinstveno identifikuje funkcije konkretne klase o Razliite klase mogu imati funkcije lanice sa istim imenima Format za definisanje funkcija lanica PovratniTip ImeKlase::ImeFunkcijelanice( ){ } Ne zavisi da li je funkcija public ili private Funkcije lanice definisane unutar klase Nije potrebno navoditi operator :: niti ime klase Kljuna re inline ispred funkcije Nalog kompajleru da kopira kod u program umesto da se generie poziv funkcije o Umanjuje broj poziva funkcija o Kompajler moe da ignorie inline Dobro za male funkcije koje se esto koriste

Inline funkcije

-

Primer:

-

-

inline double cube( const double s ) { return s * s * s; } const kazuje kompajleru da funkcija ne menja s Destruktori Isto ime kao i klasa o Imenu prethodi simbol tilda (~) Nemaju argumente Ne mogu biti overloadovani (preklopljeni) Izvravaju radnje kod unitavanja objekata Prednosti koridenja klasa Jednostavnije programiranje Interfejs

o Skrivanje implementacije Ponovno koridenje softvera o Kompozicija (agregacija) Objekti klase mogu da ukljuuju objekte drugih klasa o Izvodjenje (nasledjivanje) Nove klase se izvode iz postojedih

Class Scope i pristup lanovima klaseClass scope Podaci lanovi, funkcije lanice U okviru class scope o lanovi klase Direktno dostupni svim funkcijama lanicama Referenciranje navodjenjem imena o Van class scope Referenciranje na osnovu o Imena objekta, reference objekta, pointera na objekat File scope Funkcije koje nisu lanice Scope funkcije Promenljive deklarisane u funkciji lanici Poznate samo u funkciji Promenljive sa istim imenom kao promenljive u class-scope o Class-scope promenljive se sakrivaju - maskiraju Pristup je mogu korienjem scope resolution operatora (::) ImeKlase::imePromenljiveKlase Promenljive su poznate samo u funkcijama gde su definisane Promenljive se unitavaju nakon zavretka funkcije tj. izlaska iz nje Operatori za pristup lanovima klase Identini onima kod struktura (struct) Operator taka (.) o Objekat o Referenca objekta Operator strelica (->) o Pointeri Razdvajanje interfejsa od implementacije Prednosti o Lake se modifikuju programi Nedostaci o Header fajlovi Delovi implementacije o Inline funkcije lanice Napomene o ostalim implementacijama o private lanovi o Vii stepen skrivanja koridenjem proxy klase

-

-

Razdvajanje Interfejsa od Implementacije-

-

-

Header fajlovi Definicija klasa i prototipova funkcija Ukljuuju se u svaki fajl koji koristi klasu o #include Ekstenzija fajla .h Fajlovi sa kodom Definicije funkcija lanica Isto osnovno ime o konvencija Kompajliraju se i posle se linkuju Konstruktori i destruktori Implicitno se pozivaju kompajler Redosled poziva Zavisi od redosleda izvravanja o Kada u toku izvravanja objekti dobijaju odnosno gube scope (oblast vaenja, doseg) Generalno, destruktori se pozivaju u suprotnom redosledu od redosleda poziva konstruktora Redosled poziva konstruktora i destruktora Globalni objekti o Konstruktori Pre bilo koje druge funkcije (ukljuujudi i main) o Destruktori Kada se main zavrava (ili je pozvana exit funkcija) Ne poziva se ako se program zavri sa abort Automatski lokalni objekti o Konstruktori Kada se objekti definiu o Svaki put kada u toku izvrenja dobiju scope o Destruktori Kada objekti prestanu da vae tj gube scope o Kada se zavrava blok u kome je objekat definisan Ne poziva se ako se program zavri sa exit ili abort Statiki lokalni objekti Konstruktori o Tano jedanput o Kada se dodje do mesta gde je objekat definisan Destruktori o Kada se main zavrava ili je pozvana exit funkcija o Ne poziva se ako se program zavrava sa abort int x,z; x=z; KlasaC x, z; x=z; ???? Dodela objekata Operator dodele (=)

Poziv Konstruktora i Destruktora-

-

-

Podrazumevana pokomponentna dodela-

-

Objekat se moe dodeliti objektu istog tipa Default: pokomponentna dodela Svaki desni lan se pojedinano dodeljuje levom Prosledjivanje, vradanje objekata Objekti kao argumenti funkcija Objekti kao vradene vrednosti iz funkcija Default: prosledjivanje po vrednosti (pass-by-value) o Kopija objekta se prosledjuje, vrada Copy konstruktor o Kopira originalne vrednosti u novi objekat Kada se objekat x1 klase XX inicijalizuje drugim objektom x2 iste klase, C++ de podrazumevano izvriti prostu inicijalizaciju redom lanova objekta x1 lanovima objekta x2. To ponekad nije zadovoljavajude (esto ako objekti sadre lanove koji su pokazivai ili reference), pa programer treba da ima potpunu kontrolu nad inicijalizacijom objekta drugim objektom iste klase. Za ovu svrhu slui tzv. konstruktor kopije (engl. copy constructor). Konstruktor kopije klase XX se moe pozvati sa samo jednim stvarnim argumentom tipa XX. Konstruktor kopije se poziva kada se objekat inicijalizuje objektom iste klase, a to je: 1. prilikom inicijalizacije objekta (pomodu znaka = ili sa zagradama); 2. prilikom prenosa argumenata u funkciju (kreira se lokalni automatski objekat); 3. prilikom vradanja vrednosti iz funkcije (kreira se privremeni objekat). Konstruktor ne sme imati formalni argument tipa XX. Konstruktor kopije ima argument tipa XX& ili (najede) const XX&. Ostali eventualni argumenti kopirajudeg konstruktora moraju imati podrazumevane vrednosti. Ponekad je potrebno da klasa ima i "povladene" korisnike koji mogu da pristupaju njenim privatnim lanovima. Povladeni korisnici su funkcije (globalne ili lanice drugih klasa) ili cele klase. Takve funkcije i klase nazivaju se prij

Search related