Programare Orientata Pe Obiecte C++/C

download Programare Orientata Pe Obiecte C++/C

of 90

  • date post

    30-Nov-2015
  • Category

    Documents

  • view

    78
  • download

    7

Embed Size (px)

description

poo

Transcript of Programare Orientata Pe Obiecte C++/C

  • UNIVERSITATEA TITU MAIORESCU DIN BUCURETI FACULTATEA DE INFORMATIC

    Programarea orientat pe obiecte n limbajul C++

    -suport curs pentru forma de nvatamnt ID -

    Lector univ. drd. Dsclescu Ana Cristina

    - 2010 -

    1

  • Cuprins Cap. 1 Introducere in programarea orientata pe obiecte ..................................................................3

    1.2 Concepte ale programrii orientate pe obiecte.......................................................................5 1.3 Elemente introductive ale programrii orientate pe obiecte n limbajul C++......................7 1.4 Tipuri de date .........................................................................................................................9 1.5 Operatori specifici C++........................................................................................................17

    Cap.2 Clase si Obiecte .................................................................................................................21 2.1 Definirea unei clase..............................................................................................................23 2.2 Constructori si destructor .....................................................................................................25 2.3 Tablouri de obiecte...............................................................................................................31 2.4 Funcii i clase friend ...........................................................................................................32 2.5 Funcii inline .......................................................................................................................33 2.6 Date si functii statice ............................................................................................................34

    Capitolul 3 .Mostenire....................................................................................................................41 3.1 Relatia de mostenire. Clase de baz si clase derivate ..........................................................41 3.2 Constructori i destructori n clasele derivate ......................................................................44 3.3 Controlul accesului la membrii clasei de baz .....................................................................45 3.4 Mostenirea multipla..............................................................................................................47 3.4 Clase de baz virtuale...........................................................................................................50 3.6 Funcii virtuale i polimorfism.............................................................................................51 3.7 Clase abstracte......................................................................................................................54 3.8 Polimorfism..........................................................................................................................56

    Cap. 4 Facilitti ale limbajului C++...............................................................................................64 4.1 Supraincarcarea operatorilor ................................................................................................64 4.2 Funcii operator membre ale claselor ...................................................................................64 4. 3 Template-uri ........................................................................................................................68 4.4 Stream-uri de I/E ..................................................................................................................69 4.5 Funcii de I/O pentru tipurile predefinite .............................................................................69 Funcii de I/O pentru tipuri definite de utilizator .......................................................................71 4. 6 Procesarea fisierelor ............................................................................................................72

    Teste recapitulative: .......................................................................................................................76

    2

  • Cap. 1 Introducere in programarea orientata pe obiecte

    Obiective: Conceptul programre orientata pe obiecte; Paralela ntre programarea procedural si cea orientat pe obiecte; Tipuri de date abstracte. Abstractizare; Concepte de baz ale programrii orientate pe obiecte; Scurta incursiuni n programarea orientat pe obiecte prin intermediul limbajului C++. Modalitile (tehnicile, paradigmele) de programare au evoluat de-a lungul anilor, reflectnd trecerea de la programe de dimensiuni reduse, la programe i aplicaii de dimensiuni foarte mari, pentru coordonarea crora sunt necesare tehnici evoluate. Software-ul de dimensiuni mari, care nu poate fi realizat de o singur persoan, intr n categoria sistemelor complexe, cu o mare diversitate de aplicaii. Situaiile reale i experiene ale psihologilor au relevat limitele capacitii umane n perceperea sistemelor complexe, adic imposibilitatea unei persoane de a percepe i controla simultan un numr mare de entiti de informaie. De aceea, este esenial descompunerea i organizarea sistemelor complexe, pentru a fi percepute, proiectate sau conduse. Modul n care este abordat programarea, din punct de vedere al descompunerii programelor, definete mai multe tehnici de programare , care s-au dezvoltat i au evoluat odat cu evoluia sistemelor de calcul. Programarea procedural este prima modalitate de programare care a fost i este nc frecvent folosit. n programarea procedural accentul se pune pe descompunerea programului n proceduri (funcii) care sunt apelate n ordinea de desfurare a algoritmului. Limbajele care suport aceast tehnic de programare prevd posibiliti de transfer a argumentelor ctre funcii i de returnare a valorilor rezultate. Limbajul Fortran a fost primul limbaj de programare procedural. Au urmat Algol60, Algol68, Pascal, iar C este unul din ultimele invenii n acest domeniu. Programarea modular. n cursul evoluiei programrii procedurale, accentul n proiectarea programelor s-a deplasat de la proiectarea procedurilor ctre organizarea datelor, aceast deplasare reflectnd creterea dimensiunilor programelor. O mulime de proceduri corelate, mpreun cu datele pe care le manevreaz, sunt organizate ca un modul. Tehnica de programare modular decide descompunerea unui program n module, care ncorporeaz o parte din datele programului i funciile care le manevreaz. Aceast tehnic este cunoscut ca tehnic de ascundere a datelor (data-hiding). n programarea modular stilul de programare este n

    3

  • continuare procedural, iar datele i procedurile sunt grupate n module, existnd posibilitatea de ascundere a unor informaii definite ntr-un modul, fa de celelalte module. Gruparea de date i proceduri n module nu implic i o asociere strict ntre acestea.

    Programarea orientat pe obiecte apeleaza la o modalitate nou de gndire a unei probleme. Spre deosebire de programarea procedural care se concentreaz pe structuri de date si algoritmi, programarea orientat pe obiecte se concentreaz pe definirea de obiecte care modeleaz problema ce trebuie rezolvat. n programarea orientat pe obiecte (POO) un program are rolul de a simula strile si activittile obiectelor lumii reale. Pe lng structuri de date (care descriu strile obiectelor, atributele acestora) trebuie incluse si metodele asociate obiectelor, adic acele functii care modific atributele obiectelor si care descriu comportamentul lor. 1.1 Abstractizarea datelor. Tipuri de date abstracte Primul pas pe care il facem cand scriem un program care sa realizeze diferite operatii, este sa gasim un model care simplifica realitatea, prin separearea detaliilor care interreseaza, de cele care nu afecteaza problema pe care o rezolvam asfel, datele cu care se lucreaza, operatiile , tin de specificul fiecarei probleme tratate. Acest proces de grupare a datelor si metodelor de prelucrare specifice rezolvarii unei probleme se numeste abstractizare. n cazul dezvoltrii unui produs software, abstractizarea se poate defini ca fiind o structurare a unei probleme n entitti bine precizate prin definirea datelor si a operatiilor asociate. Aceste entitti combin date si operatii care sunt necuplate ntre ele. Procedurile si functiile au fost primele dou mecanisme de abstractizare larg rspndite n limbajele de programare. Procedura a reprezentat si prima modalitate de ascundere a informatiei (interfata cu procedura). Modulele au reprezentat urmtorul mecanism de abstractizare prin gruparea procedurilor si functiilor ce sunt relationate. n continuare, tipurile de date abstracte au realizat un pas important ctre dezvoltarea unui software de calitate si au permis trecerea la abordarea orientat pe obiecte a problemelor. Un tip de date abstract (TDA) const dintr-o structur de date abstract si o multime de operatii. Interfata unui TDA este definit de multimea de operatii si reprezint acea portiune a unui TDA care este vizibil din exterior. Conceptul de tip de date abstract presupune existenta unui mecanism de separare a specificatiei de implementare. Aceasta nseamn c un utilizator al unui TDA trebuie s cunoasc doar modul de utilizare al tipului de date, nu si detaliile de implementare. Un tip de date abstract (TDA) este caracterizat de urmtoarele proprietti: 1. export un tip; 2. export o multime de operatii (furniznd interfata TDA); 3. singurul mecanism de acces la structura de date a tipului este furnizat de operatiile definite n interfat; 4. axiomele si preconditiile definesc domeniul deaplicatie al tipului.

    4

  • De exemplu, dorim sa construim TDA persona. Sa presupunem ca realizam o aplicatie necesara pentru realizarea recesamnatului popul