Sunteți pe pagina 1din 2

1.2.

Paradigme de programare

O paradigma permite specificarea unui model de rezolvarea a unei probleme. Un model


este o reprezentare simplificata sau o abstractizare a unui sistem.
Uneori limbajul de programare in care va fi implementata soluţia, oferă aceleaşi
construcţii si mecanisme ca si paradigma; in acest caz implementarea, verificarea soluţiei se face
mult mai simplu. Se poate considera atunci ca o paradigma de programare este o clasa de limbaje.
De multe ori, un limbaj de programare poate aparţine mai multor paradigme; astfel C++
include caracteristici ale paradigmelor imperativa si procedurala, ca predecesorul C, dar si ale
celei de orientare pe obiecte.
Paradigma Imperativa
Se caracterizează printr-un model abstract al unui calculator cu o memorie foarte mare,
modelul clasic von Neumann. Soluţiile se găsesc prin prelucrări care cuprind asignări, citiri,
operaţii aritmetice si logice, selecţii (  if-else ) pentru controlul fluxului execuţiei. Din aceasta
clasa de limbaje fac parte cele de asamblare sau BASIC.

Paradigma Procedurala
Extinde cea anterioara cu un mecanism de abstractizare, cel al procedurilor cu parametri.
Alte facilităţi sunt iteraţia, recursivitatea, selecţia. Din aceasta clasa fac parte limbajele
FORTRAN, Pascal, C.
In aceasta paradigma, un sistem se modelează ca un set de algoritmi ( proceduri ) si unul
de date. Deşi mecanismul de abstractizare oferit de aceasta paradigma, procedurile, reprezintă un
mecanism puternic, dezavantajul este cel al slabei legături dintre procedura si datele manipulate.

Paradigma Procedurala cu Tipuri de Date Abstracte


Clasa de limbaje include CLU, Ada, Modula-2; un TDA este un model matematic pe care
se defineşte un set de operatori; implementarea si reprezentarea datelor pot fi realizate in variante
diferite, cu performante diferite. 
De exemplu o stiva are operatorii Push, Pop, IsEmpty, si se poate implementa ca tablou,
lista simplu sau dublu înlănţuită.

Paradigma Orientare pe Obiecte


Noţiunea de baza este cea de obiect, o entitate logica, compus din date si operatorii asupra
acestora. 
Limbaje din aceasta clasa sunt Smalltalk, C++, Objective-C, CLOS (the Common Lisp
Object System ). "Daca procedurile si funcţiile sunt verbe, iar blocurile de date sunt substantive,
un program procedural este organizat in jurul verbelor, in timp ce un program orientat pe obiecte
este organizat in jurul substantivelor"1.
Definiţia data de Booch Programării Orientate pe Obiecte: "POO este metoda de
implementare in care programele sunt organizate ca si colecţii de obiecte ce cooperează intre ele,
fiecare obiect reprezentând instanţa unei clase; fiecare clasa aparţine unei ierarhii de clase, clasele
fiind unite prin relaţii de moştenire".
Aceasta definiţie cuprinde trei părţi importante, si anume:
􀂃 obiectele si nu algoritmii sunt blocurile logice fundamentale;
􀂃 fiecare obiect este o instanţa a unei clase;
1
G.Booch: "Object-Oriented Analysis with Applications", Addison-Wesley, 1994
􀂃 clasele sunt legate intre ele prin relaţii de moştenire.
Un limbaj de programare care oferă suport pentru utilizarea claselor si a obiectelor, dar
care nu are implementat mecanismul relaţiilor de moştenire intre clase este un limbaj de
programare bazat pe obiecte. Programarea bazata pe clase si pe obiecte, care nu face uz de relaţia
de moştenire se mai numeşte programare cu tipuri de date abstracte.

Important: Trebuie înţeles ca prin simpla învăţare a unui limbaj care suporta
programarea orientata pe obiecte NU învăţăm automat sa programam corect conform
modelului obiectual! Pentru a învăţa acest lucru trebuie sa înţelegem si sa aplicam
conceptele si mecanismele care stau la baza acestui model.

Cele trei caracteristici ale paradigmei OO sunt: 


Încapsularea - este mecanismul care leagă datele de operatorii asupra lor; este deci
mecanismul care permite crearea unui obiect; un obiect este o instanţiere ( o variabila ) a unui tip,
clasa, creat de utilizator;
Moştenirea - este mecanismul care permite crearea de noi obiecte, din cele existente; noile
obiecte preiau, moştenesc, metode si date de la obiectul părinte, putând sa modifice altele; acest
mecanism face posibil ca un obiect sa fie un exemplar specific al unui caz mai general;
Polimorfismul - este mecanismul caracterizat de expresia " o interfaţa, metode multiple ";
permite unei interfeţe sa fie folosita cu o clasa generala de acţiuni, deci obiecte de tipuri diferite
sa execute aceeaşi operaţie.

Fig.1.2.

Scrierea unui program OO implica determinarea obiectelor necesare; acestea vor realiza
prelucrările care definesc comportarea sistemului. Obiectele sunt responsabile pentru modificarea
datelor proprii, sunt deci self-contained.

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