Programarea orientata pe obiecte in C++:clase, obiecte, functii membru, structuri si uniuni in analogie cu clasele, functii speciale

Configurare noua (How To)

Situatie

Solutie

1. Notiuni introductive

Programarea orientată pe obiecte este o tehnologie modernă in domeniul programării calculatoarelor, care a rezultat din necesitatea realizării de aplicaţii   din ce în ce mai complexe. Programarea clasica si structurata avea urmatoarele dezavantaje: control greoi al programelor de dimensiuni mari, dificultati cu privire la reutilizarea codurilor de programe si inflexibiliatea adaptarii si extinderii unor module de program deja realizate. Programarea clasica structurata are la baza celebra ecuatie a lui Nikolaus Wirth:

Program = Structuri de date + Algoritmi

            Programarea Orientata pe Obiecte, POO, se fundamenteaza pe conceptul de obiect, care este definit printr-o multime de date, numite proprietati, si o multime de proceduri sau functii de prelucrare ale acestor date, numite metode. In consecinta, ecuatia POO este:

Obiect = Date + Functii

sau

Obiect = Date + Functii

Obiect = Proprietati + Metode

Diferenta dintre cele doua cai de abordare ale programarii calculatoarelor consta in maniera de abordare a programarii. In timp ce programarea clasica structurata se concentreaza pe prelucrarea datelor, adica pe programe, proceduri si functii, POO se bazeaza pe definirea obiectelor, adica, pe proprietatile acestora, numite date, si pe functiile acestor obiecte, numite metode.

2. Clase si  obiecte

            La baza POO stau conceptele de clasa si de obiect.

Definitia 1

            Clasa, intr-un anumit limbaj de programare, reprezinta definirea unui tip de obiecte abstracte sau concrete, adica descrierea proprietatilor, a datelor si a metodelor, a prelucrarilor, posibile asupra datelor. Clasa este, de fapt, o notiune abstracta, care defineste un anumit tip de obiecte, sau, altfel spus, o clasa reprezinta multimea posibila a mai multor obiecte de acelasi tip.

Definitia 2

            Obiect, reprezinta o multime de date care descrie un anumit obiect concret sau abstract, numite si proprietati,  impreuna cu procedurile, functiile, de prelucrare a cestora, numite metode.

            Crearea unui obiect presupune specificarea clasei din care face parte, astfel identificandu-se proprietatile obiectului si modul in care acestea pot fi folosite si prelucrate

Observatie:

Crearea sau declararea unui obiect este similara cu crearea sau declararea unor variabile. Declararea unei variabile se face, dupa cum se stie, prin specificarea identificatorului acesteia, precedat de tipul variabilei iar declararea unui obiect presupune precizarea identificatorului acestuia, precedat de clasa din care face parte, clasa care in mod implicit determina proprietatile si metodele  obiectului definit.

O clasa in limbajul C++ poate fi reprezentata ca o extindere a conceptului de structura, care, ca si o structura, descrie un sablon pentru viitoarele declarari de variabile obiect.

Definirea generala unei clase in C++

class [nume_clasa]

  {

    specificator_acces1;

       date_si_functii1;

    specificator_acces2;

       date_si_functii2;

………………………..

    specificator_accesn;

       date_si_functiin;

}[obiect1] [,obiect2] … [,obiectm];

unde:

            – nume_clasa – optional, este un identificator ales de programator care denumeste clasa definita si prin intermediul caruia se apeleaza aceasta;

– specificator_accesi (i=1,n) – este o eticheta care poate fi unul dintre cuvinele cheie: publicprivate sau protected.

Spre deosebire de o structura, ai carei membri sunt toti accesibili programului, o clasa poate avea membri pe care programul ii poate accesa  direct (public), utilizand operatorul punct (.) si alti membri, denumiti privati (private), pe care programul nu-i poate accesa direct. Unica accesare a datelor si metodelor private (private) se face numai prin intermediul metodelor publice. Dupa cum se va vedea, o clasa poate deriva dintr-o clasa de baza, anterior definita, concept cunoscut sub numele de mostenire. Un membru protejat (protected) are un statut intermediar intre membri publici si privati. Pentru clasa de baza, obiectele acesteia pot accesa membri protejati, ca si cum ar fi publici, iar obiectele claselor derivate nu pot accesa un membru declarat protected in clasa de baza, decat prin intermediul unor functii de interfata declarate publice.

– date_si_functiii; (i=1,n) – descrie datele, adica proprietatile, si functiile, adica metodele specifice clasei definite care, in functie de specificator_accesi (i=1,n), pot fi publicprivate sau protected.

– [obiect1] [,obiect2] … [,obiectm– reprezinta identificatorii obiectelor de tipul clasei la care sunt atasati, adica numele variabilelor obiect respective care vor fi utilizate in programul in care apar.

Observatii:

            – la declararea obiectelor, o data cu definirea clasei asociate,  se poate omite identificatorul de clasa, nume_clasa.

– declararea obiectelor, ulterior definirii clasei asociate, impune obligativitatea identificatorului de clasa, nume_clasa.

Declararea obiectelor, ulterior definirii clase se face astfel:

class nume_clasa [obiect1] [,obiect2] … [,obiectm];

unde, nume_clasa,obiect1,obiect2, … ,obiectm au semnificatiilie mai sus prezentate.

Tip solutie

Permanent

Voteaza

(7 din 16 persoane apreciaza acest articol)

Despre Autor

Leave A Comment?