Programare orientata pe obiecte C++.doc

download Programare orientata pe obiecte C++.doc

of 90

  • date post

    07-Jan-2016
  • Category

    Documents

  • view

    20
  • download

    0

Embed Size (px)

Transcript of Programare orientata pe obiecte C++.doc

Cap

UNIVERSITATEA TITU MAIORESCU DIN BUCURETIFACULTATEA DE INFORMATIC

Programarea orientat pe obiecte n limbajul C++

-suport curs pentru forma de nvatamnt ID -Lector univ. drd. Dsclescu Ana Cristina 2010 -Cuprins

3Cap. 1 Introducere in programarea orientata pe obiecte

51.2 Concepte ale programrii orientate pe obiecte

71.3 Elemente introductive ale programrii orientate pe obiecte n limbajul C++

91.4 Tipuri de date

171.5 Operatori specifici C++

21Cap.2 Clase si Obiecte

232.1 Definirea unei clase

252.2 Constructori si destructor

312.3 Tablouri de obiecte

322.4 Funcii i clase friend

332.5 Funcii inline

342.6 Date si functii statice

41Capitolul 3 .Mostenire

413.1 Relatia de mostenire. Clase de baz si clase derivate

443.2 Constructori i destructori n clasele derivate

453.3 Controlul accesului la membrii clasei de baz

473.4 Mostenirea multipla

503.4 Clase de baz virtuale

513.6 Funcii virtuale i polimorfism

543.7 Clase abstracte

563.8 Polimorfism

64Cap. 4 Facilitti ale limbajului C++

644.1 Supraincarcarea operatorilor

4.2 64Funcii operator membre ale claselor

684. 3 Template-uri

694.4 Stream-uri de I/E

4.5 69Funcii de I/O pentru tipurile predefinite

71Funcii de I/O pentru tipuri definite de utilizator

724. 6 Procesarea fisierelor

76Teste recapitulative:

Cap. 1 Introducere in programarea orientata pe obiecteObiective:

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

De exemplu, dorim sa construim TDA persona. Sa presupunem ca realizam o aplicatie necesara pentru realizarea recesamnatului populatiei, atunci datele care interseaza pentru tipul persoana sunt : nume, prenume, loc_nastere, adresa etc. Daca aplicatia presupune, in schimb, gestiunea intretinerii pentru o asociatie de locatari, atunci pentru tipul persoana sunt necesare si date cum ar fi : spatiul_locuit, nr_persoane etc.

Deci, prin procesul de abstarctizare, separam datele care intereseaza de cele care nu fac obiectul aplicatiei. Construim, ulterior, un tip abstract de date care inglobeaza o structura de date impreuna ca operatii aupra datelor ( ex: calculul intretinerii pentru o persoana, nr_persoane pe fiecare judet etc.).

Exemplu: TDA_persona

nume

prenume

spatiu_locuit

calcul intretinere; - operatii asupra datelor

Programarea orientat pe obiecte este programarea cu tipuri de date abstracte, care combin functionalittile acestora pentru rezolvarea problemelor. n programarea orientat pe obiecte, TDA-urile sunt numite clase.1.2 Concepte ale programrii orientate pe obiecte

Conceptele programrii orientate pe obiecte au aprut din dezvoltrile realizate n cadrul limbajelor moderne de programare. Astfel, limbajele orientate pe obiecte au noi structuri care mbunttesc ntretinerea programului si fac ca portiuni mari de program s fie reutilizabile, conducnd astfel la scderea costului de dezvoltare a produselor software.

Cele sase concepte de baz ce caracterizeaz programarea orientat pe obiecte sunt :

Obiectele;

Clasele;

Mesajele

Incapsularea;

Mostenirea

Polimorfismul.

Obiectele

Un obiect poate fi considerat ca fiind o entitate care ncorporeaz att structuri de date (denumite atribute) ct si comportament (actiuni). Obiectele sunt inteligente prin faptul c realizeaz anumite actiuni si stiu cum s execute aceste actiuni. Inteligenta unui obiect reprezint o form de abstractizare prin faptul c presupune c un obiect poate executa o actiune si ascunde detaliile referitoare la modul n care se va realiza efectiv actiunea. Obiectele pot fi de tipuri diferite: entitti fizice, algoritmi, relatii sau subsisteme. Practic, obiectele sunt componente de software reutilizabil care modeleaz elemente din lumea real.

Pentru tipul de date abstract persoana definit mai sus un exemplu de obiect poate fi definit astfel :

Popescu Ion, 34, 56 m2 .Clasele

Clasele desemneaz o colecie de obiecte (de natur material sau spiritual) care au n comun faptul c pot fi caracterizate similar din punct de vedere informaional i comportamental.Este evident faptul c identificarea unei clase este n mod normal, rezultatul unui demers cognitiv care presupune caracterizarea unui obiect prin nsuirile lui (informaionale i comportamentale) care i definesc apartenena