Extras din curs
1. INTRODUCERE
1.1. Scurt istoric
Multá vreme C a fost limbajul preferat de programatori, ín special de cei care dezvoltau aplicaþii
pentru sistemele MS-DOS ßi WINDOWS. Ín ultima vreme ínsá, popularitatea limbajului C++ a
crescut datoritá faptului cá permite programarea orientatá pe obiecte (Object-Oriented
Programming) - o metodá de programare folositá ín prezent pentru realizarea multor aplicaþii
software.
Ideea programárii orientate pe obiecte (POO) a apárut ín anii ’60, fiind pusá ín practicá prin
intermediul limbajelor SIMULA (1967) ßi SMALLTALK (1975). Totußi, aceste limbaje au avut o
ráspändire relativ redusá, deoarece puþini programatori formaþi la ßcoala limbajelor clasice
procedurale din acea perioadá (FORTRAN, COBOL, PASCAL, MODULA-2, C etc.) erau dispußi
sá abandoneze aceste limbaje doar de dragul de a lucra obiectual. Cu toate acestea, ín anii ’80, ín
urma acceptárii definitive a limbajului C, un colectiv condus de Bjarne Stroustrup, un tänár
cercetátor de la Bell Lab’s, a avut ideea scrierii unui compilator care sá preia simplitatea ßi
flexibilitatea C-ului ßi mecanismele de "modelare“ ale limbajului SIMULA 67. Bjarne a numit acest
dialect “C with Classes“ ßi, prima versiune comercialá a acestuia a apárut la AT&T ín 1983, cu
denumirea modificatá ín cea actualá, C++ (sugeratá de Rik Masciti, un colaborator apropit a lui B.
Stroustrup). Denumirea de C++ semnificá de fapt multiplele facilitáti adáugate limbajului C.
Profitänd de multitudinea domeniilor de aplicaþie (de la grafica interactivá la proiectarea interfeþelor
utilizator ßi de la exploatarea reþelelor de calculatoare la tehnicile de proiectare a compilatoarelor),
printre programatori ín general ßi printre programatorii de C ín particular, aproape imediat apar
partizani ai POO-ului. De ce acest succes extraordinar ? Ín primul ränd, din cauza faptului cá
limbajul C++ nu face nimic altceva decät sa dea un nou avänt unuia dintre cele mai la modá limbaje
ale momentului (este vorba de C), iar ín al doilea ränd din cauza faptului cá aduce o ßi mai mare
economie de timp ín procesul de dezvoltare-implementare-testare a aplicaþiilor software. Ín cazul
limbajelor tradiþionale procedurale (3GL’s - 3rd Generation Languages), algoritmul materializat íntro
diagramá de flux a datelor (DFD - Data Flow Diagram), ajunge sá se adapteze arhitecturii
calculatorului. Generaþia a patra de limbaje (4GL’s), cum se obißnuießte a se denumi categoria
acestor limbaje orientate pe obiecte, urmáreßte adaptarea calculatorului la obiecte.
1.2. Avantajele POO
Avantajele POO reies din definirea principalelor concepte care stau la baza POO ßi anume:
abstractizarea datelor (data abstraction ), moßtenirea (inheritance ) ßi polimorfismul (polymorphism).
Abstractizarea datelor se referá la procesul de definire a tipurilor abstracte de date, ín timp ce
moßtenirea ßi polimorfismul se referá la mecanismele care permit programatorilor sá beneficieze de
caracteristicile comune ale tipurilor abstracte de date (obiectele din POO).
Abstractizarea datelor
Termenul tip abstract de date se referá la un tip de date definit de programator obþinut prin
íncapsularea (“contopirea“) datelor specifice aplicaþiei cu setul de operaþii (codul) care pot fi
efectuate asupra acestor date. Este numit abstract, pentru a-l diferenþia de tipurile de date de bazá
predefinite ín C, cum ar fi int, char, float ßi double. Deci, definirea unui tip abstract de date
(abstract data type - ADT) implicá specificarea reprezentárii interne a datelor din acel tip, precum ßi
a funcþiilor pe care alte module de program le vor utiliza pentru manipularea acelui tip abstract de
date. Ascunderea datelor, o facilitate a abstractizárii datelor, asigurá posibilitatea modificárii
structurii interne a unui tip abstract de date fárá a provoca funcþionarea defectuoasá a programelor
2
care apeleazá funcþiile ce opereazá asupra acelui tip abstract de date. Ín POO, un astfel de tip
abstract de date definit de utilizator, dar care se comportá la fel ca un tip predefinit, se numeßte
clasá (class ). O clasá poate fi consideratá ca un model (ßablon) din care pot fi create obiecte
specifice. Un obiect este o instanþiere a unei clase, deci o variabilá declaratá ca fiind de tipul clasá
respectiv.
Funcþiile care opereazá asupra unui obiect sunt denumite metode. Metodele definesc comportarea
unui obiect. Ín C++, metodele sunt denumite funcþii membre (member functions ) ale clasei.
Prin conceptul de íncapsulare a datelor ßi codului corespunzátor se ating ßi alte obiective:
posibilitatea de localizare a erorilor (íntotdeauna cauza se aflá ín “interiorul“ unei singure clase) ßi
modularizarea problemei de rezolvat (fiecare clasá va rezolva, de regulá, o singurá problemá).
Moßtenirea
Abstractizarea datelor nu acoperá o caracteristicá importantá a obiectelor ßi anume aceea cá
obiectele din lumea realá nu existá ín stare izolatá. Fiecare obiect este ín relaþie cu unul sau mai
multe obiecte. De multe ori un nou obiect poate fi descris evidenþiind modul ín care caracteristicile
ßi comportarea acestuia diferá faþá de cele ale unei clase de obiecte deja existente. Aceastá practicá
de a defini noi obiecte ín termeni ai unuia (unora) vechi este o parte integrantá a POO ßi se
defineßte prin conceptul de moßtenire . Prin mecanismul moßtenirii, ín urma definirii unei clase, cu
un minim de efort ßi timp, se pot preciza seturi de clase asemánátoare, avänd totußi o trásáturá
distinctivá. Moßtenirea impune o relaþie ierarhicá íntre clase, prin care o clasá derivatá (derived
class ) moßteneßte caracteristicile unei clase de bazá (base class ). Trebuie precizat cá, prin
mecanismul moßtenirii multiple, mai multe clase derivate pot moßteni o aceeaßi clasá de bazá ßi,
mai multe clase de bazá pot fi moßtenite de o aceeaßi clasá derivatá.
Polimorfismul
Ín sens literal, polimorfism ínseamná calitatea de a avea mai mult de o formá. Ín contextul POO,
polimorfismul ínseamná cá íntr-o ierarhie de clase obþinute prin moßtenire, o metodá poate avea
forme diferite de la un nivel la altul (specifice respectivului nivel de ierarhie) ßi poate funcþiona
diferit ín obiecte diferite. De exemplu, sá considerám operaþia de adunare. Pentru douá numere,
adunarea va genera suma lor. Íntr-un limbaj de programare care suportá POO, operaþia de adunare
poate fi exprimatá printr-un singur operator, semnul plus (+). Consideränd acest fapt, se poate
utiliza expresia x+y pentru a indica suma lui x ßi y pentru mai multe tipuri diferite de numere x ßi y
cum ar fi: íntregi, numere ín virgulá mobilá, numere complexe etc. Se poate chiar defini operaþia +
ca ínsemnänd concatenarea a douá ßiruri de caractere.
Preview document
Conținut arhivă zip
- Curs POO
- Curs 01 & 02 .pdf
- Curs 03.pdf
- Curs 04.pdf
- Curs 05.pdf
- Curs 06.pdf
- Curs 07.pdf
- Curs 08.pdf
- Curs 09.pdf
- Curs 10.pdf