fbpx

Principiile programarii orientate obiect

Una dintre întrebările care nu lipseşte la un interviu tehnic, fie el pe programare ABAP sau pe orice alt limbaj de programare, este cea legată de principiile programării orientate obiect. În principiu această întrebare le este adresată candidaţilor pentru o poziţie de junior sau chiar middle, deoarece este o modalitate uşoara pentru intervievator să îşi facă o părere despre următoarele lucruri:

  1. S-a pregătit candidatul pentru acest interviu?
  2. Răspunsul candidatului este doar din punct de vedere teoretic, ceea ce denotă doar o pregatire acumulată din diverse tutoriale?
  3. Cât de clar poate să explice candidatul principiile orientării obiect?

Vom lua rând pe rând conceptele orientării obiect încapsularea, abstractizarea, moştenirea şi polimorfisumul şi le vom explica pe întelesul tuturor, deoarece uneori căutarea unor explicaţii pe internet amplifică şi mai mult confuzia referitoare la aceşti termeni şi din această cauză îmi doresc să ofer o explicaţie simplă, scurtă şi clara pentru fiecare dintre aceste concepte.

Înainte de a trece la principii, aş dori să trecem în revistă noţiunile de clasă şi obiect, pentru o întelegere mai bună a principiilor.

În lumea în care traim suntem obişnuiţi să vedem în jurul nostru diferite entităţi (oameni, clădiri, animale etc), toate acestea caraterizate prin însuşiri proprii şi actiuni proprii. De exemplu oamenii au ca şi însuşiri culoarea părului, culoarea ochilor, numele şi au diverse acţiuni: merg, aleargă, manâncă etc.

Toate obiectele care prezintă caracteristici (însuşiri) și comportamente (acţiuni) similare pot fi grupate într-o clasă. Astfel, o clasă poate fi definită ca un şablon pentru realizarea de obiecte cu caracteristici și comportamente similare. În concluzie am putea avea clasa oameni, clasa animale, clasa cladiri etc.

În fiecare clasă putem să avem diferite obiecte, de exemplu în clasa de oameni am putea să avem 3 persoane: Mihnea, Andrei, George, în clasa animale am putea avea 3 obiecte: pisica, caine, urs, iar în clasa clădiri: casă, bloc, clădire de birouri.

In programarea orientă obiect vom lucra cu diferite clase şi obiecte de natura virtuală, dar care păstreaza ideea de baza, clasele sunt sabloane sau templateuri pentru realizarea unor obiecte.  Obiectul este conceptul de bază în programarea orientata obiect care asociază caracteristicile ( însuşirile, denumite şi atribute sau date) cu comportamentele corespunzătoare (acţiuni sau operaţii, denumite şi metode).

Iată şi un exemplu vizual pentru a întelege mai bine:

exemplu_clasa1

In acest exemplu avem o clasă masina care are 3 atribute (însusiri) şi 2 metode (acţiuni). Atributele sunt marca, model, an fabricatie, iar metodele sunt accelerează şi frânează. Această clasă se foloseste ca un şablon pentru realizarea obiectelor. Avem 3 obiecte (adică 3 maşini), fiecare cu propriile caracteristici.

Principiile programării orientate obiect:

1.Abstractizarea

Abstractizarea presupune reducerea la un model simplu a tuturor proprietăţilor şi metodelor de care dispune un obiect. Astfel realizarea unei clase (şablon) care ne arată ce proprietăţi si ce metode vor avea obiectele, reprezintă tocmaabstractizarei conceptul de abstractizare.  Astfel clasa reprezintă o descriere a unor mulţimi de obiecte care au aceeaşi structură şi comportament. Până acum programarea ţinea cont de o succesiune de operaţii sau functii (programarea procedurală), dar în programarea orientată obiect accentul cade pe un ansamblu complet de date şi operaţii.

Tot prin abstractizare avem posibilitatea ca un program să ignore unele aspecte ale informației pe care o manipulează, adică posibilitatea de a se concentra asupra esențialului.  De exemplu o masină poate fi vazută din punctul de vedere al unui proprietar sau din punctul de vedere al unui mecanic. Pentru un proprietar va conta probabil culoarea masinii, anul de fabricatie, marca, modelul etc., în timp ce pentru un mecanic va conta componentele mecanice, greutatea, puterea motorului, inspecţiile tehnice etc.

2. Incapsularea

EncapsulationIncapsularea reprezintă proprietatea claselor de a grupa datele şi metodele într-o singură structură de date. Incapsularea înseamnă că datele se definesc împreuna cu codul care acţioneaza asupra lor. Incapsularea mai este denumită şi tehnica de ascundere a datelor, deoarece poate restricţiona accesul la datele(caracteristicile) sau metodele unui obiect. In SAP caracteristicile sau metodele dintr-o clasă pot fi publice, private sau protejate. In funcţie de zona în care sunt declarate (public, private sau protected) caracteristicile pot fi accesate din exterior sau doar din interior prin diverse metode publice. Ca exemplu am putea sa luam o clasă masini care are ca atribute publice: marca, model, culoare şi atributul privat serie motor. Atributele publice pot fi folosite şi afisate şi din exterior, în timp ce pentru atributul privat vom avea nevoie de o metodă publica, de exemplu afisare_serie_motor în care vom afişa seria motorului şi aceasta metodă va fi chemata din exterior.

3.Mostenirea

inheritanceProgramarea orientată pe obiecte le permite claselor să moşteneasca stările (atributele) şi comportamentele(metodele) comune din alte clase, ceea ce înseamnă crearea unei clase copil pe baza unei clase parinte. Clasa copil conţine toate proprietătile şi metodele clasei parinte, dar poate include şi elemente noi. Să considerăm că avem o clasa maşina si 2 subclase limuzină şi cabrio. Dacă clasa maşina care este clasa părinte va avea de exemplu caracteristica culoare, atunci şi celelalte 2 clase copil vor dobîndi această caracteristică prin conceptul de moştenire. La fel se întâmplă si cu metodele care se regăsesc în clasa parinte, aceastea vor fi moştenite şi în clasa copil.

 

4.Polimorfismul

poliConceptul de polimorfism este legat de cel de moştenire, deoarece permite ca aceeaşi operaţie să se realizeze în mod diferit în clase diferite. Să considerăm că avem o clasa animale, cosiderată şi clasă părinte şi 3 clase copil (clasa caine, clasa pisica şi clasa rata ) care moştenesc comportamentele clasei animale. In clasa animale vom avea o metodă scoate_sunete care va fi moştenită de toate cele 3 clase copil. Tinând cont că fiecare animal va trebui să se comporte diferit în momentul când va fi apelată metoda scoate_sunete, atunci prin polimorfism vom putea face acest lucru şi vom permite metodei să se comporte diferit în functie de clasa în care este implementată.

28 January 2019

0 responses on "Principiile programarii orientate obiect"

Leave a Message

Despre SAP Online

SapOnline.ro - Toate materialele de instruire SAP sunt proprietatea SAPOnline.ro. Saponline.ro nu este afiliat SAP AG. SAP este o marca inregistrata SAP AG. SAP AG nu este editorul materialelor de pe acest site si nu este responsabil pentru acestea.

Online acum

There are no users currently online

Cauta un curs

top