Introducere în programarea orientatã pe obiecte

                              Conceptul de obiect

    Conform celebrei ecuatii a lui Niklaus Wirth:
                              algoritmi + structuri de date = programe

un program este format din doua parti total separate: un ansamblu de functii si un ansamblu de date asupra carora actioneaza functiile. Functiile sunt privite ca si cutii negre, fiecare avand de rezolvat o anumita sarcina (de facut anumite prelucrari). Aceasta modalitate de programare se numeste programare dirijata de prelucrari. Evolutia calculatoarelor si a problemelor de programare a facut ca in aproximativ zece ani programarea dirijata de prelucrari sa devina ineficienta. Astfe este posibil ca o schimbare relativ minora in structura datelor sa provoace o dezorganizare majora a functiilor.

 Inconvenientele programarii dirijate de prelucrari sunt eliminate prin incapsularea datelor si a procedurilor care le manipuleaza intr-o singura entitate numita obiect. Programatorul nu este obligat sa cunoasca reprezentarea fizica a datelor si procedurilor utilizate, motiv pentru care poate trata obiectul ca pe o cutie neagra cu un comportament bine precizat.

   In acest context, programarea devine dirijata de date, si nu de prelucrarile care trebuie realizate.

    Obiectul este o instantiere (o instanta) a clasei. In acelasi program se pot folosi mai multe obiecte apartinand aceleeasi clase, sau unor clase diferite.
    Fiecare obiect se caracterizeaza prin stare si comportament. Starea obiectului depinde de datele pe care acesta le contine, in timp ce comportamentul este dat de metodele (functiile) clasei respective.
 

Utilizarea consecventa a obiectelor confera programarii urmatoarele calitati:

     Abstractizarea datelor. Nu este nevoie de a cunoaste implementarea si reprezentarea interna a unui obiect pentru a-i adresa mesaje (a-l prelucra). Este posibila supraincarcarea metodelor. De exemplu, este foarte comod de a desemna printr-un simbol unic, +, adunarea intregilor, concatenarea sirurilor de caractere, reuniunea multimilor, suma vectorilor, matricilor etc.

    Modularitate. Structura programului este determinata in mare masura de obiectele utilizate. Schimbarea definitiilor unor obiecte se poate face cu un minim de implicatii asupra celorlalte obiecte utilizate in program.

    Flexibilitate. Un obiect poate fi foarte usor introdus intr-o biblioteca pentru a fi utilizat ca atare, sau pentru a construi noi tipuri prin mostenire, adica prin specializare (particularizare) si compunere cu obiecte existente.

    Claritate. Incapsularea, posibilitatea de supraincarcare si modularitatea intaresc claritatea programelor.