Sunteți pe pagina 1din 5

Programarea orientată pe obiecte: noţiuni introductive

Tehnologiile de programare au cunoscut diferite etape în procesul evoluţiei lor. Iniţial au


fost utilizate cele mai simple strategii de programare, care treptat au devenit din ce în ce mai
sofisticate. Vor fi evidenţiate următoarele etape evolutive în programare:
 programare nestructurată;
 programare procedurală;
 programare modulară;
 programare orientată pe obiecte.
O strategie nestructurată de scriere a programelor presupune existenţa unui program
principal şi toate prelucrările necesare pentru soluţionarea problemei au loc doar în cadrul acestui
program principal.

O strategie procedurală de scriere a programelor presupune existenţa unui program


principal şi a unui şir de proceduri, iar rezultatul final este obţinut prin apelarea procedurilor
existente transmiţându-le lor datele necesare.

O următoare schimbare în tehnologiile de scriere a programelor apare odată cu strategia


modulară. Un modul este o reuniune de proceduri, care este realizată în baza unor principii
logice. În caz general, fiecare modul îşi are şi o serie de date caracteristice lui. Modulul principal
interacţionează în acest caz cu modulele implicate în rezolvarea problemei de interes.
Urmărind dinamica schimbărilor în tehnologiile de programare, apare întrebarea firească:
totuşi, din ce motiv s-au produs toate aceste schimbări ale strategiilor de creare a programelor.
Pentru a înţelege aceste schimbări, trebuie de ţinut cont de o serie de momente obiective.
Iniţial, programele erau orientate la acoperirea unor domenii de activităţi importante, dar relativ
simple. În mare parte, erau acoperite modelele orientate la calcule. Treptat-treptat, domeniile
acoperite devin din ce în ce mai complicate. Odată cu complexitatea sferelor modelate, creşte şi
complexitatea programelor. Ele devin din ce în ce mai voluminoase. Dat fiind faptul că volumul
atenţiei umane este relativ mic constituind 5-7 semne distincte, există un volum-limită al
programelor la depăşirea căruia productivitatea de dezvoltare a programului scade simţitor. Acest
volum-limită este cel mai mic pentru metoda programării nestructurate, crescând simţitor pentru
metoda programării structurate, iar pentru metoda programării modulare, acest indice este şi mai
mare. Aici nu este vorba desptre un programator genial, ci despre măsura potenţialului unui
programator ordinar, care este suficient de instruit pentru a face lucrările de dezvoltare a unei
aplicaţii. Se ia în calcul un programator ordinar, fiindcă la dezvoltarea masivă de aplicaţii nu se
poate miza doar pe programatori geniali. De aceea sunt căutate metode de dezvoltare a
aplicaţiilor care ar permite unui colectiv ordinar un proces mai productiv de dezvoltare.
Deci, următoarea etapă a tehnologiilor de programare, şi anume tehnologia orientată pe
obiecte, a venit ca ceva firesc, având acelaşi scop, şi anume de a lărgi posibilităţile de dezvoltare
a aplicaţiilor complexe. Adoptarea acestei tehnologii duce la schimbarea unor accente. Dacă
tehnologiile utilizate până la ea se bazau pe proceduri ce corespund acţiunilor, deci raţionarea se
făcea mai degrabă prin verbe, atunci în cadrul acestei tehnologii se face o cotitură spre obiecte,
deci raţionarea se face mai degrabă prin substantive, fapt ilustrat schematic astfel:
Cele mai importante caracteristici ale tehnologiei orientate pe obiecte ar fi:
 Obiecte.
 Proprietatea de moştenire.
 Proprietatea de polimorfism.
 Incapsularea codului.
Lumea din jur este alcătuită din obiecte. De aceea procesul de raţionare este acomodat la
operare cu obiecte.
Obiectele nu sunt izolate, ci sunt legate prin diferite tipuri de relaţii. Una dintre relaţiile
foarte importante este moştenirea. Ea stă la baza diferitelor clasificări în cele mai diverse ramuri
ale ştiinţei. Astfel de clasificări sunt de formă ierarhică, nivelurile ierarhice superioare fiind mai
abstracte, iar cele inferioare sunt mai concretizate. Moştenirea este exprimată printr-o frază de
următorul tip „A este un fel de B”, de exemplu „Mărul este un fel de fruct”. O schemă simplă de
moştenire care înglobeazăFruct
şi exemplul anterior ar fi următoarea:

măr pară ...

Datorită importanţei sale, relaţia de moştenire este implementată şi în tehnologiile orientate pe


obiecte, contribuind la optimizarea codului.
Este simplu a opera cu obiectele care realizează aceeaşi idee de comportament, cu toate că
modurile de realizare pot fi diferite de la caz la caz. În acest caz, se spune că este realizat
conceptul de polimorfism, adică o singură interfaţă, însă mai multe metode. De exemplu, un
termostat are aceeaşi menire, de a regla temperatura, fie la centrale electrice, fie la centrale cu
gaz, fie la centrale cu alt tip de combustibil. Acţiunea de reglare este similară: este rotit sau este
glisat un buton. Deci este vorba de aceeaşi interfaţă, pe când realizarea la nivel de funcţionare
poate să difere pentru diferite tipuri de combustibil.
Din cele expuse anterior, reiese o formulă succintă care transmite esenţa programării
orientate pe obiecte (POO) şi care este următoarea:
POO = obiecte + polimorfism + moştenire.
Pentru a elabora aplicaţii utilizând tehnologia orientată pe obiecte, este necesar a parcurge
o serie de etape caracteristice acestei tehnologii. Faza iniţială de formulare a problemei este
urmată de etapa de cercetare a domeniului de problemă. Modelul fizic al oricărui domeniu de
problemă este unul complex, depinzând de multe relaţii şi de mulţi parametri. De aceea se face o
simplificare a modelului fizic, obţinând modelul logic al domeniului de problemă. Sunt omise
din modelul fizic o serie de proprietăţi şi legături care nu sunt esenţiale în contextul problemei
formulate. Acest proces de simplificare este o expresie a procesului de abstractizare, ceea ce
poate fi reprezentat schematic astfel:

Modelul fizic

abstractizare
Modelul logic

A elabora modelul logic al domeniului de problemă înseamnă a elabora modelul logic al


elementelor componente ale lui. Deci un pas anterior elaborării modelului logic este evidenţierea
obiectelor din domeniul de problemă. Totodată, obiectele asemănătoare sunt grupate în clase de
obiecte.
De exemplu, dacă ar trebui de elaborat un program de evidenţă a cadrelor într-o
întreprindere, atunci un prim pas ar fi evidenţierea obiectelor din domeniul dat. Este natural că
cele mai importante obiecte în acest caz sunt persoanele angajate. Este evidenţiat setul de
proprietăţi care ar caracteriza o persoană, de exemplu:
- nume;
- prenume;
- anul naşterii;
- înălţime;
- culoarea ochilor;
- număr copii.
De aici se observă că o serie de proprietăţi nu sunt adecvate problemei formulate, de exemplu,
înălţime şi culoarea ochilor, ele fiind eliminate din descriere. Dar pe lîngă proprietăţi un obiect
este caracterizat şi printr-o serie de operaţii (funcţionalitate), de exemplu:
- Crearea unui cont nou la angajare.
- Nimicirea contului la eliberare.
- Schimbarea numelui (fenomen întâlnit frecvent la domnişoare).
Din punctul de vedere al obiectelor şi al claselor de obiecte, procesul de elaborare a oricărei
aplicaţii trece prin:
- Analiza orientată pe obiecte (AOO).
- Designul orientat pe obiecte (DOO).
- Programarea orientată pe obiecte (POO).
Pentru o reprezentare schematică, poate fi utilizată secvenţa liniară
AOO DOO POO,
cu toate că procesele date sunt deseori iterative.
În continuare, sunt prezentate definiţiile care exprimă esenţa acestor etape.
1) Analiza orientată pe obiecte este o metodologie în cadrul căreia cerinţele faţă de sistem
sunt concepute din perspectiva claselor şi a obiectelor evidenţiate în domeniul problemei.
2) Designul orientat pe obiecte este o metodologie care reuneşte în sine procesul de
decompoziţie pe obiecte şi metode de reprezentare a modelelor logic şi fizic, static şi dinamic ale
sistemului proiectat.
3) Programarea orientată pe obiecte este o metodologie de programare, legată de
reprezentarea programului prin intermediul unui set de obiecte, fiecare dintre ele fiind un
exemplar ale unei anumite clase, iar clasele formează o ierarhie de moştenire.
Din punctul de vedere al programării, datele utilizate în program sunt de anumite tipuri. Cu
cât este mai bogat limbajul în tipuri de date, cu atât este mai uşor procesul de descriere şi definire
a datelor. Dar tipurile predefinite nu pot acoperi toate situaţiile, în ceea ce priveşte datele. De
aceea este foarte important de a putea descrie tipuri de date care ar permite descrierea datelor
din domeniul de problemă. Astfel de tipuri vor fi numite tipuri abstracte de date, fiindcă ele vor
corespunde datelor ce aparţin modelului logic obţinut prin abstratizare din modelul fizic. Un tip
abstract de date trebuie să aibă minimum caracteristicile unui tip predefinit:
- domeniu de valori;
- set de operaţii admisibile.
De aceea un tip abstract de date va avea o serie de elemente, va satisface, totodată, şi o
serie de cerinţe, care în ansamblu constituie caracteristicile sale:
- va consta dintr-o serie de câmpuri, care corespund proprietăţilor datelor descrise, ce
permit descrierea domeniului de valori;
- va consta dintr-o serie de operaţii, care corespund operaţiilor admise asupra datelor;
- accesul la cîmpuri va fi realizat doar prin intermediul unor operaţii, care vor forma
interfaţa tipului de date;
- poate realiza descrierea unor date, operaţie numită şi exportare de tip.
Deci, descrierea unui tip abstract de date conţine atât proprietăţi, cât şi operaţii, exprimate
prin proceduri, reprezentând cod de program. Reunirea într-un tot întreg a proprietăţilor şi a
codului, ce descriu o entitate, va fi numită încapsulare. Fiindcă în cadrul unui tip abstract de date
este mai important tipul operaţiilor şi mai puţin modul de realizare a acestor operaţii, încapsulare
mai inseamnă şi ascunderea modului de realizare a operaţiilor.
Tehnologiile orientate pe obiecte au incontestabil o serie de avantaje, care le evidenţiază
printre alte tehnologii similare. În continuare, sunt enumerate unele avantaje oferite de aceste
tehnologii:
- uşurinţa proiectării şi refolosirii codului;
- fiabilitate sporită;
- uşurinţa înţelegerii;
- grad înalt de abstractizare;
- grad ridicat de încapsulare.

S-ar putea să vă placă și