Author
roxana-nicoleta
View
48
Download
10
Embed Size (px)
DESCRIPTION
curs facultate anul II, profesor Novac-Ududec.
LIMBAJUL C++Programarea orientat pe obiecte
1
Introducere
Exist limbaje concepute strict pe baza POO, ex. Simula, Smalltalk, Java; O alt abordare - adaugarea tehnicilor POO limbajelor cu mare polularitate, ex. Pascal i C; C++ combin avantajele oferite de C (eficien, flexibilitate, portabilitate) cu avantajele oferite de POO.2
Programarea orientat pe obiecte n C++
Scopul limbajului C++ este s permit dezvoltarea programelor complexe (peste 25.000 linii cod surs); C++ asigur programatorului libertatea i controlul din C, mpreun cu puterea obiectelor; POO combin metodele programrii structurate cu concepte noi;3
C++ conine mbuntiri ale limbajului C care nu sunt direct legate de POO, cum ar fi:
Tipul referin; Funcii inline; Suprancrcarea operatorilor; Operatori pentru gestionarea memoriei libere.4
Ce este programarea orientat pe obiecte ?
n POO se mparte o problem n subgrupe de seciuni nrudite, care in seam att de cod ct i de datele corespunztoare din fiecare grup. Se organizeaz apoi, aceste subgrupe pe structuri ierarhice; Se transform subgrupele n uniti de sine stttoare, numite obiecte.5
Toate limbajele OO au 3 caracteristici comune: ncapsulare, polimorfism i motenire
ncapsularea este un mecanism care leag mpreun cod i date; Permite crearea unui obiect; Un obiect este o entitate logic care ncapsuleaz att date ct i cod care manevrez aceste date; Cnd se definete un obiect, implicit se creeaz un nou tip de date !6
Polimorfism
n POO polimorfismul se aplic metodelor unei clase i permite definirea unor funcii cu acelai nume dar cu comportament diferit (specific); Exemplu: metoda de calculat aria unui poligon;
7
Motenirea
Este procesul prin care un obiect poate s preia prototipul altui obiect; Se admite astfel conceptul de clasificare; Exemplu:
Clasa mamifer
Clasa pisica
Clasa pisic birmanez8
Inregistrare - Clas
n numeroase aplicaii, este necesar s se prelucreze date grupate sub forma de nregistrri, situate fizic fie n fiiere, fie n memoria intern. S considerm, de exemplu, evidena materialelor dintr-o magazie. Fiecare material se caracterizeaz prin mai multe atribute, cum sunt: codul materialului, denumirea materialului, cantitatea.9
Informaia despre un material ar putea fi, deci, pstrat pe un formular de hrtie avnd, ca exemplu, urmtorul coninut: MATERIAL Cod material: 13027522 Denumire material: Pnza alb bumbac Cantitate: 127.53
10
Pentru prelucrare, aceste date sunt grupate ntr-o nregistrare de forma: 127.53
13027522 Pnza alb bumbac
11
Remarcm c aceast structur, care se introduce n memoria calcula-torului, conine numai datele, nu i alte informaii, cum ar fi denumirile atributelor i tipurile de date din fiecare cmp. Descrierea acestei structuri se face n program, folosind o instruciune numit declaraie de structur. Forma declaraiei depinde de sintaxa limbajului de programare utilizat.12
In limbajul C, aceleai declaraii se fac sub forma:typedef struct{ int cod; char nume[30]; double cantitate} Material; Material a, b, c;
13
Remarcm c nici n Pascal, nici n C nu este predefinit un tip de date numit Material, dar limbajul pune la dispoziia programatorului modalitatea prin care el poate s defineasc un astfel de tip.
14
nregistrarea (engl: record) este o structur de date neomogen cu urmtoarele caracteristici:
Componentele nregistrrii, numite n mod uzual cmpuri (engl. fields), au fiecare propriul su nume; Cmpurile nregistrrii pot aparine unor tipuri de date diferite (de aceea spunem c este o structur neomogen); n memorie cmpurile sunt aezate consecutiv (n linie), ocupnd o zon de memorie compact.15
Primele dou caracteristici se refer la conceptul abstract de nregistrare, iar ultima caracteristic se refer la modul de implementare. Cmpurile de date dintr-o nregistare pot conine nu numai date primitive, ci i structuri de date. n particular, orice cmp al unei nregistrri poate fi el nsui o nregistrare.16
Clasa ca extindere a structurii de nregistrare
n limbajele de programare OO, structura de nregistrare a fost extins, astfel nct n afar de date sa conin i metode, adic funcii sau proceduri prin care se prelucreaz datele respective. S-a obinut astfel conceptul de clas. Clasa nu mai este o simpl structur de date, ci un modul de program, care conine att date, ct i metode. Se poate deci considera c nregistrarea este un caz particular de clas, care nu conine metode.
17
Clasele structuri abstracte de date, definite de utilizator, care ncapsuleaz att datele propriu-zise ct i operaiile efectuate asupra acestora.
Un obiect este o instan a unei clase. Clasa = abstractizare logic; Obiect = real, exist n memoria calculatorului; O clas are atribute (caracteristici-date) i metode (funcii);
18
mbuntiri ale limbajului C introduse n C++1.
Transmiterea parametrilor n C++ exist 2 posibiliti de transmitere a param. actuali ctre o funcie:
Prin valoare; Prin referin.
Primul este modul standard de transmitere a param. n C.19
Transmiterea parametrilor prin referin
Prin folosirea param formali referin se permite realizarea transferului prin adres, la fel ca n Pascal (paramerii VAR). Se elimin astfel necesitatea utilizarii param formali pointeri, n cazul n care modificrile fcute n interiorul funciei asupra param. trebuie s rmn i dup revenirea din procedur.
20
Exempluvoid schimb(int &a, int &b){ int aux=a; a=b; b=aux;} Transferul prin referin este util atunci cnd programul are dimensiune mare (struct, class) i crearea n stiv a unei copii a valorii lui reduce viteza de execuie i ncarc memoria.21
2. Parametri cu valori implicite
n C++ se pot declara funcii cu valori implicite ale parametrilor; La apelarea acestor funcii se poate omite specificarea param efectivi pentru aceia care au fost declarai cu valori implicite; Este obligatoriu ca numai ultimii param s aib valori implicite i nu este permis alternarea param cu i far valori implicite.22
Exemplu- Val_impl.cppvoid fct(int, int=10); void fct(int p1, int p2){ cout