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.
O abordare simplă a SEO: Cum să înțelegi elementele de bază ale optimizării pentru motoarele de căutare într-un mod simplu și practic, printr-o cale de descoperire nespecializată pentru toată lumea
O abordare ușoară a comunicării profesionale: Ghidul practic de comunicare profesională și cele mai bune strategii de comunicare în afaceri din punct de vedere scris și interpersonal
O abordare simplă a analizei tehnice a piețelor financiare: Cum să construiești și să interpretezi graficele de analiză tehnică pentru a-ți îmbunătăți activitatea de tranzacționare online
Glosarul de tranzacționare online: Termenii pe care trebuie să-i cunoști și să-i aprofundezi pentru a te familiariza cu domeniul tradingului la nivel operațional