Cauta rapid aici ↑

PROGRAMAREA ORIENTATA PE OBIECTE

Programarea orientate pe obiecte nu este o idee noua, dar este noua in programarea bazelor de date. Conceptul de programare orientate pe obiecte a aparut catre 1970 si s-a raspandit incetul cu incetul. El a inspirit numeroase limbaje, majoritatea experimentale si create pentru a raspunde unor nevoi specific sau pentru testarea unor concept.

Tehnologia orientate pe obiecte reprezinta o schimbare de abordare de la functia generala a unui sistem, la entitati intr-un sistem care efectueaza functii diferite ale sistemului in general. Astfel, in loc sa va imaginati cum interactioneaza fiecare piesa a unui program cu restul sistemului, concentrate-va pe crearea obiectelor care reprezinta o componenta a sistemului. Aceste obiecte sunt component auto incluse care incapsuleaza atat datele care reprezinta o entitate in lumea reala cat si functionalitatea necesara pentru a lucra cu datele.

Un exemplu de tehnologie orientate pe obiecte in lumea reala poate fi un automat bancar. Masina si intregul sistem au anumite attribute si component. Modul in care masina functioneaza este incapsulat sau ascuns. Atunci cand va aflati in fata unui automat bancar nu sunteti pusi in situatia de a interactiona cu functionalitatea lui interioara, ci aveti doar un ecran si niste butoane. Cu toate acestea, fiecare selectie pe care o faceti, cum ar fi de exemplu retragerea banilor, este o componenta separate care implica un proces complicat pentru a va indeplini cererea.

AVANTAJELE PROGRAMARII ORIENTATE PE OBIECTE

Dezvoltatorii pot sa obtina un avantaj competitiv prin crearea si dezvoltarea rapida a unei solutii. Modelul orientat pe obiecte ofera dezvoltatorilor un set de interfete bine definit pentru anumite obiecte pentru a:

  • Crea prototipuri utilizand clasele existente.
  • Personalize o clasa existent prin subclasare.
  • Utilize mai multe obiecte ale aceleasi clase intr-o singura sesiune.
  • Rezolva defectele prin reducerea domeniului problemei la ierarhia clasei in loc de a transmite modificarile succesiv in structurile modulelor prin mostenire.
  • Ascunde datele interne ale obiectului.
  • Ignora conflictele de nume pentru proprietati sau metode care apartin obiectelor.

Modelul orientat pe obiecte permite dezvoltatorilor sa creeze sisteme complexe mai sigure intr-un timp mai scurt in timp ce sunt premise actualizari mai curate si mai simple. Modelul orientat pe obiecte se bazeaza pe principiul mai putin cod, mai multa putere.

DIFERENTELE INTRE PROGRAMAREA ORIENTATA PE OBIECT SI PROGRAMAREA STRUCTURATA

Programarea orinentata pe obiecte si programarea conventional structurata au multe diferente pe care le vom prezenta in continuare.

Diferenta dintre cele doua abordari din programare poate fi ilustrata prin diferenta dintre un tren si o masina. Pe cand trenul are un drum bine stabilit, cu un punct de inceput si unul de sfarsit, o masina poate fi imaginata ca un obiect care se misca liber, nimic nefiind dinainte stabilit. Ceea ce este stabilit este masina in sine si ce poate face ea, cum se misca sau cum se opreste.

CONCENTRAREA PE OBIECTE SI NU PE PROCESE

Analiza si conceptia structurata se concentreaza atat pe o ierarhizare a proceselor effectuate secvental, cat si pe modalitatea de a crea o solutie pentru problema.

Analiza si modelul orientat pe obiecte se concentreaza pe obiecte care au anumite attribute si comportamente. Atributele si comportamentele obiectelor determina cum va functiona fiecare dintre ele.

VIZIBILITATEA SAU ASCUNDEREA DATELOR

Abordarea structurata presupune crearea unor sectiuni separate de date si proceduri care sunt vizibile si accesibile in celelante portiuni ale programului. Decizia de ascundere a informatiilor fata de alte procese este lasata la latitudinea programatorului.

In abordarea orientate pe obiecte, datele sunt ascunse, vazandu-se numai comportamentul obiectului. Codul din interiorul obiectului este ascuns utilizatorului. Singurele elemente pe care utilizatorul obiectului le poate afecta sunt componentele pe care programatorul le pune la dispozitie.

ABORDARE UNITARA SAU COMPONENTE MODULARE

Programarea structurata se bazeaza pe o singura unitate de cod unde procesele apeleaza alte procese si sunt dependente unele de altele.

In programarea orientate pe obiecte, obiectele sunt de sine statatoare cu functionalitatea de a putea face apel la comportamentul altor obiecte.

O SINGURA UTILIZARE SAU REUTILIZARE

Procesele structurate pot sa nu fie reutilizabile, depinzand totusi de modul de implementare. In programarea orientate pe obiecte, obiectele sunt prin definitie modulare din constructia lor, de aceea sunt foarte reutilizabile.

CU ALTGORITM ORDONAT SAU NEORDONAT

Programarea structurata tinde catre o implementare liniara sau de sus in jos, bazata pe algoritm. Aplicatiile orientate pe obiecte sunt construite pe baza mesajelor sau bazate pe evenimente unde obiectele trimit mesajele catre alte obiecte.

REUTILIZARE

Deoarece utilizarea modelului pe obiecte incurajeaza reutilizarea software-ului si a logicii, sistemele orientate pe obiecte sunt adesea mai mici decat implementarile echivalente conventionale. Reutilizarea obiectelor inseamna mai putin cod de scris si de intretinut, lucru care poate sa aiba ca rezultat reducerea costurilor si a timpului de programare.

STABILITATE

Software-ul proiectat pentru reutilizare devine stabil in timp si mai usor de modificat. Acest tip de software poate sa se dezvolte mai degraba decat sa fie reproiectat atunci cand apar modificari majore.

COMPLEXITATE USOR DE GESTIONAT

In loc de dezvoltarea sistemelor bazata pe modelul prin care se scrie o linie la un moment datla sfarsitul programului, componentele complexe de software pot sa fie proiectate individual si utilizate asa cum se construiesc blocurile pentru software mai complex.

COMPLEXITATE ASCUNSA

Programarea orientate pe obiecte ascunde complexitatea sistemul fata de utilizator. De exemplu, cand ridicati receptorul telefonului, nu trebuie sa va ganditi la tehnologia care se afla in spatele aparatului. Cu aceste detalii ascunse puteti sa va realizati scopurile cu usurinta. Un telefon exemplifica foarte bine modul in care abordarea orientate pe obiecte in lumea reala face ca un sistem complex sa fie provit foarte simplu.

SIGURANTA SI CORECTITUDINE

Construirea sistemelor software din componente reduce riscurile in dezvoltarea proceselor si mareste claritatea programului. Programele dezvoltate din componente stabile si bine testate vor contine mai putine erori decat programele dezvoltate de la zero.

PROGRAMARE MAI RAPIDA SI MAI USOARA

Reutilizarea componentelor economiseste timp atat pentru dezvoltare cat si pentru implementare. De asemenea, multe componente pot fi adaptate mai usor pentru alte sisteme.

MAI USOR DE ACTUALIZAT

Componentele actioneaza independent comunicand unele cu altele prin metodele si proprietatile lor. In loc sa modificatii nenumarate linii de cod nu trebuie decat sa identificati componenta sau componentele care au nevoie de modificare. In programarea conventional, o modificare ar putea sa schimbe modul in care intregl sistem raspunde.

SIMILAR CU PERCEPTIA UMANA

Perceptia umana, in mod general, se rudece la identificare si generalizare, la gasirea relatiilor intre grupuri si interactiunea prin interfata normala a unei entitati (comportament). Tot asa se intampla si in programarea orientate pe obiecte.

CARACTERISTICICE MODELULUI ORIENTAT PE OBIECTE

Un obiect este o entitate concreta care este distinct fata de alte obiecte. Fara a fi in mod necesar o entitate fizica, un obiect ar putea fi un telefon, o comanda, o componenta sau o forma dintr-o aplicatie. Un obiect este definit prin atributele (proprietatile) si componentele (modelele) sale.

Desi nu este o definitie unanim acceptata a modelului orientat pe obiecte, se poate spune ca acesta cuprinde cel putin patru concept generale:

  • Abstractizarea
  • Incapsularea
  • Mostenirea
  • Polimorfismul

ABSTRACTIZAREA

Programarea orientate pe obiecte incurajeaza programatorul sa proiecteze in termini abstracti. Abstractizarea este capacitatea de a reprezenta, indica si manevra informatiile la un nivel mai inalt decat este cel inerent la un calculator sau la un limbaj de baza. De exemplu, este mai usor de lucrat cu inregistrari si procese decat cu o colectie de numere intregi, numere in virgule mobila si instructiuni executabile. Toate limbajele moderne, la nivel inalt, presupun abstractizarea. Exista doua tipuri de abstractizare: abstractizare procedural si de date.

INCAPSULAREA

Incapsularea este capacitatea de a grupa informatiile si procesele intr-o unitate compacta. Este asemanatoare cu ascunderea informatiilor. De exemplu, un calculator de buzunar este un obiect incapsulat. Procesorul si circuitele sale sunt ascunse in carcasa sa. Utilizatorul se poate concentra astfel pe folosirea calculatorului pentru a efectua calculi aritmetice si nu pe operatiunile sale interne. Cand datele sunt incapsulate intr-un obiect, accesul la ele este permis doar prin functiile obiectului. Acest lucru ofera doua avantaje clare unui programator:

  • Dezvoltare simplificata - Atunci cand dezvoltati obiectele, puteti sa va concentrate atentia pentru a descrie mai precis o componenta din sistem fara a va face probleme despre cum va afecta modificarile alte parti ale sistemului.
  • Protectie mai buna - O data ce un obiect a fost definit, codat si testat, toate programele sau partile sistemului care au nevoie de informatii continute in acel obiect creeaza pur si simplu o instant a obiectului pentru a accesa datele. Nu exista nici un risc ca un program sa scrie direct in date sis a le corupa, deoarece incapsularea protejeaza datele de coruptie si protejeaza alte obiecte din schimbarile structural.

MOSTENIREA

Mostenirea este o modalitate de a crea o noua variant a unei entitati existente. In programarea orientate pe obiecte, mostenirea este un mecanism pentru partajarea automata a functiilor si datelor prin clase si subclase. Subclasele (derivate dintr-o clasa existenta) mostenesc atat atributele cat si componentele clasei parinte. Aceste clase derivate sunt forme mai specializate ale claselor parinte.

Mostenirea este adesea referita ca persistenta deoarece atunci cand un obiect este salvat intr-o clasa, clasa persista. Puteti sa utilizati aceeasi clasa in oricare aplicatie si va mosteni obiectul adaugat.

POLIMORFISMUL

Literal, polimorfismul inseamna mai multe forme. In programarea orientate pe obiecte, acesta permite obiectelor asociate sa raspunda la acelasi mesaj cu actiuni corespunzatoare, dar diferite. Prin polimorfism puteti sa aplicati metodele definite la mai mult de o clasa.

Polimorfismul este legatura dinamica a unei metode la un obiect in momentul rularii programului. Aceasta inseamna ca tipurile tuturor variabilelor si expresiilor nu sunt determinate pana in momentul rularii. Pentru programator, polimorfismul permite interfatarea mai simpla si mai flexibila cu un grup de obiecte asociate.