1. Programare procedurala –Programare orientata pe obiecte.
Limbajul C, ca si Pascal, utilizeaza modelul programarii structurate procedurale, care consta în descompunerea programului în proceduri (functii), apelate în ordinea în care se desfasoara algoritmul. Datele sunt separate de functiile care le manipuleaza.
Odata cu cresterea dimensiunii programelor s-a acordat o atentie sporita organizarii datelor – functiile, împreuna cu datele pe care le manevreaza sunt organizate ca un modul. Programarea modulara este tot programare procedurala, cu proceduri si date grupate în module si ascunse altor module.
Programarea orientata pe obiecte consta în identificarea unor obiecte, cu operatii (metode) specifice asociate si realizarea comunicarii între aceste obiecte prin intermediul unor mesaje. Elementul constructiv – obiectul este o instanta a unei clase (tip de data definita de utilizator). Clasele sunt membre ale unei ierarhii si sunt corelate între ele prin relatii de mostenire.
Un limbaj de programare pune la dispozitia utilizatorilor un numar de tipuri primitive (sau predefinite). Astfel în C avem ca tipuri primitive char, int, float, etc. Un tip de date este precizat printr-o multime finita de valori T (constantele tipului) si o multime de operatori (aplicatii T ® T sau
T ´ T ® T).
Într-un limbaj de programare un tip de date reprezinta un model matematic. Astfel tipul int , caracterizat prin multimea finita de întregi (-32768, 32767) si operatorii binari +, -, *, / si % ilustreaza conceptul de numar întreg.
Modelele matematice care nu au reprezentare directa prin tipuri predefinite se pot reprezenta prin tipuri definite de utilizator (numite si tipuri de date abstracte- TDA).
2. Declararea claselor.
O clasa reprezinta un tip definit de utilizator. Declararea unei clase se face într-o maniera asemanatoare declararii structurilor si contine atât date cât si functii (metode) si putem declara variabile de acest tip nou. Un obiect este un exemplar sau o instanta a unei clase (în vechea terminologie obiectul este echivalent unei variabile, iar clasa este echivalentul unui tip definit de utilizator).
Consideram conceptul Data, pe care-l reprezentam printr-o structura si un set separat de functii de manipulare:
struct Data{
int a, l, z; // reprezentare
};
void initD(const Data&, int, int, int); //initializare
void ad_a(const Data&, int); //adauga un an
void ad_l(const Data&, int); //adauga o luna
void ad_z(const Data&, int); //adauga o zi
Nu exista o legatura implicita între date si functiile de manipulare a lor. Pentru a stabili aceasta legatura, declaram functiile ca membre ale structurii:
struct Data{
int a, l, z; // reprezentare
..// functii de manipulare
void initD(int, int, int); // initializare
void ad_a(int);
void ad_l(int);
void ad_z(int);
};
Functiile declarate în definirea clasei (structura este o clasa) se numesc functii membre si pot fi apelate numai de variabile de tipul corespunzator (obiecte) folosind sintaxa de acces la membrii structurii:
Data d;
d.initD(2001, 10, 15);
d.ad_a(3);
. . .
Definirea functiilor membre, în afara clasei se face folosind operatorul de vizibilitate (rezolutie), care indica faptul ca functia apartine clasei specificate înaintea acestui operator.
void Data::initD(int aa, int ll, int zz){
a = aa;
l = ll;
z = zz;
};
Declararea unei clase se face în mod asemanator cu declararea unei structuri. Cuvântul struct este înlocuit prin class, iar câmpurile se separa în date membre si functii membre (sau metode). În plus, se pot preciza specificatori de acces la membri. Acestia pot fi:
• private – membrii sunt accesibili numai din interiorul clasei
• public – membrii sunt accesibili din afara clasei
• protected – membrii sunt accesibili din interiorul clasei si din clasele derivate
Domeniul de definitie al clasei este cuprins între începutul definitiei clasei (class nume) si sfârsitul definitiei.
Documentul este oferit gratuit,
trebuie doar să te autentifici in contul tău.