Introducere in Object Oriented Programming (OOP)
2.1. Caracteristicile generale ale sistemelor OOP
Una dintre sarcinile cercetatorilor si producatorilor de software este aceea de a modela lumea reala si problemele lumii reale. Dintre metodele propuse, in general se considera ca poate fi luata in considerare oricare dintre acelea ce suporta un grad inalt de abstractizare. Intre acestea, un loc aparte il ocupa Object Oriented Programming (OOP).
OOP este o metoda de proiectare si implementare a sistemelor software ce se apropie foarte mult de felul natural de existen 929f56j ta a lucrurilor. Este o evolutie naturala a inovatiilor anterioare in proiectarea software-ului: este mai structurata decit incercarile anterioare din programarea structurata, desi se bazeaza pe aceasta; este mai modulara si mai abstractizata decit incercarile anterioare de modularizare, abstractizare a datelor si ascundere a detaliilor.
OOP este un nou mod de a gindi despre programare ca raspuns direct la cresterea exasperanta a complexitatii si costului aplicatiilor, avind ca obiectiv esential imbunatatirea productivitatii prin cresterea extensibilitatii si refolosirii software-ului deja scris.
OOP simplifica dezvoltarea sistemelor software prin "oferirea" unor "obiecte" (deja scrise si testate) care isi incapsuleaza procesele si isi ascund fata de restul programului tot ceea ce este intern (date, operatii). In acest fel utilizatorii, proiectantii si programatorii vor avea capacitatea sa lucreza la un moment dat cu un set acceptabil de mare de "idei" (concepte), prin divizarea operatiilor complexe in obiecte "inteligibile". Se satisface astfel o restrictie foarte reala a capacitatii de cunoastere umane: pentru a intelege un sistem trebuie sa intelegem simultan numai citeva din partile sale.
Ca urmare, se apreciaza ca OOP va duce la cresterea dramatica a cantitatii de software produs de toate tipurile de producatori. Producatorii de aplicatii, folosind uneltele si tehnologiile OOP pot dezvolta, se apreciaza, aplicatii de peste 100 de ori mai repede decit cu uneltele actuale.
OOP este o deplasare fundamentala ce se intinde de la noile limbaje la interfetele grafice utilizator (GUI) bazate pe conceptul WIMP (Windows, Icons, Menus, Pointing Device), de la baze de date orientate pe obiecte si pina la moduri sofisticate de a prezenta cunostintele in programele expert, de la sistemele on-line la comunicatii in diferite tipuri de retele informatice, de la prelucrarile paralele si pina la noile sisteme de operare.
OOP este rezultatul unui nou mod de a analiza problemele si de a proiecta metodele de rezolvare a acestora. Instructiunile computer-ului anilor '90 se vor reorganiza astfel incit sa imbunatateasca rolul conceptual cheie de obiect. Se apreciaza ca OOP-ul va constitui o "prezenta" de cel putin 30 ani in tehnologiile software engineering.
2.2. OOP vs programarea procedurala; programarea in mod activ
In programarea conventionala se incearca modelarea si reprezentarea lumii reale si a obiectelor ce o compun divizat: pe de o parte o multime de atribute reprezentate sub forma unor structuri de date, iar pe de alta parte actiunile, respectiv procedurile ce le asociem cu aceste atribute, proceduri ce actioneaza PE aceste structuri de date. Aceasta divizare contine in sine limita fundamentala a programarii conventionale.
Programarea conventionala se mai numeste de obicei si "programare procedurala", pentru ca tinde sa dea o mai mare importanta actiunilor, proceselor, procedurilor si sa trateze structurile de date (atributele) ca si cum ar fi de importanta secundara.
Paradigma de programare (modelul de programarea, filozofia de programare) conventionala se poate exprima astfel:
"decideti ce proceduri doriti; folositi cei mai buni algoritmi pentru aceasta".
Prin intermediul subprogramelor (proceduri, functii) programarea procedurala foloseste functii pentru a crea ordine intr-un labirint de algoritmi (dar NU si de date).
Prima incercare de a elimina acest dezavantaj a fost crearea "modulelor", care sint un set de proceduri si date pe care aceste proceduri le utilizeaza, intr-un fisier sursa (de obicei) relativ independent. Programele ce folosesc aceasta tehnica au ca avantaj posibilitatea (uneori redusa insa) de incapsulare a datelor, adica utilizarea datelor unui modul numai in interiorul acelui modul.
De exemplu, limbajul PASCAL nu permite incapsularea datelor decit prin declararea acestora in interiorul unei functii sau procedura, iar in cazul limbajului C tehnica utilizata (folosirea clasei de variabile "static") este o tehnica de nivel scazut (are implicatii in toate celelalte fisiere ce sint legate de datele incapsulate).
Tot in incercarea de a elimina diferenta dintre date si cod s-a introdus conceptul de "tip de date abstract", ce este un tip de date definit de utilizator impreuna cu toate operatiile permise asupra acelor date.
Pina acum, toate limbajele procedurale nu permit decit decit apelarea unor functii ("externe" datelor) care sa le foloseasca, simulind in acest fel operatiile cu datele respective.
Ceea ce trebuie remarcat este ca limbajele procedurale doar "permit" tehnici care sa incerce "uniformizarea" tratarii datelor si codului si NU ofera "suport" (prin facilitati care fac parte integranta din limbaj), nu incurajeaza folosirea acestor tehnici. Aceste tehnici sint insa "suportate" si incurajate de limbajele si tehnologiile OOP.
OOP este fundamentata pe conceptul de programare structurata si pe abstractizarea datelor. Programele scrise in maniera OOP deplaseaza importanta asupra datelor, asociindu-le insa cu operatiile in aceeasi maniera ca si gindirea omului. Aceasta permite analizarea si proiectarea programelor intr-o maniera mai naturala.
Putem gindi in termeni ca "masina", "vulpe", etc. mult mai bine decit sa ne concentram pe atributele lor (structuri de date care sa le reprezinte) (are 4 roti, etc.) sau pe existenta lor (merge, fuge, etc.) luate in mod separat.
Limbajele OOP au fost denumite si "limbaje actoricesti" datorita utilizatorilor lor ce antropomorfizau obiectele cu care lucrau. Astfel structurile de date nu mai erau vazute ca niste simple "sertare" in care se depun valori. In noua lumina obiectele sint vazute ca actori pe scena carora regizorul (programatorul) le da comenzi pe care acestea le executa - de aici provenind si denumirea de "programare in mod activ".
In limbajele OOP conceptul central este obiectul. Atit datele cit si procedurile ce le folosesc servesc obiectului. Nici datele, nici codul nu sint privilegiate.
Paradigma OOP incearca foarte acut sa modeleze componentele unei probleme ca pe componente si nu ca abstractii logice. Fiecare obiect ce ne inconjoara are propriile caracteristici, atribute (datele) si propriile comportari (proceduri) ce sint reprezentate ca atare.
|