Extras din curs
1. INTRODUCERE ÎN C++
Exista limbaje concepute strict pe baza conceptelor programării orientate pe obiecte (POO), de exemplu Simula sau Smalltalk. O altă abordare este de a adăuga unor limbaje cu o popularitate bine stabilită, de exemplu Pascal si C, elementele tehnicii programării orientate pe obiecte.
C++ combină avantajele oferite de limbajul C (eficienţă, flexibilitate şi popularitate) cu avantajele oferite de tehnica POO (Programării Orientate pe Obiecte). Deşi adoptă principiile POO, C++ nu impune aplicarea lor strictă (se pot scrie programe fără elemente POO). Conceptul fundamental în C++ este clasa.
C++ este o extensie a limbajului C, creat de Bjarne Stroustrup. Cea mai importantă extensie pe care aceasta a făcut-o limbajului său s-a produs în momentul introducerii claselor.
Clasele reprezintă o extensie a structurilor din C. Cu acestea, programatorul îşi poate crea tipuri de date complexe, ce cuprind atât datele cât şi operaţiile ce acţionează asupra acestora.
Variabilele create din clase se numesc obiecte, iar programarea utilizând aceste concepte, programare orientată pe obiecte (Object – Oriented Programming).
Cum este şi firesc, C++ posedă toate capacităţile limbajului C. În plus utilizând clasele, se pot dezvolta programe de un de un înalt grad al complexităţii. Tipurile definite prin clase pot fi integrate în programe aproape la fel de uşor ca în cazul structurilor.
1.1. Ce este programarea orientată pe obiecte ?
Programarea orientată pe obiecte (OOP) este o nouă cale de abordare a programării. Modalităţile de programare s-au schimbat imens de la inventarea calculatorului, în primul rând pentru a se acomoda creşterii complexităţii programelor. De exemplu, la început, când au fost inventate calculatoarele, programarea se făcea introducându-se instrucţiuni în maşina de cod binar cu ajutorul panoului frontal al calculatorului. Acest lucru a fost convenabil atât timp cât programele aveau doar câteva sute de instrucţiuni. O dată cu mărirea programelor, au fost inventate limbajele de asamblare, astfel încât programatorii se puteau descurca cu programe mai mari, cu complexitate crescută, folosind reprezentarea simbolică a instrucţiunilor pentru maşină. Deoarece programele continuau să crească, au fost introduse limbajele de nivel înalt care oferă programatorului mai multe unelte cu care să facă faţă complexităţii. Primul limbaj larg răspândit a fost, desigur, FORTRAN. Chiar dacă el a fost un prim pas foarte impresionant, este departe de a fi un limbaj care încurajează programe clare, uşor de înţeles.
Anii ’60 au dat naştere programării structurate. Aceasta este metoda încurajată de limbaje precum sunt C şi Pascal. Utilizarea limbajelor structurate face posibilă scrierea destul de uşoară a unor programe relativ complexe. Totuşi, chiar folosind metodele programării structurate, un proiect nu mai poate fi controlat odată ce atinge anumite mărimi (adică odată ce complexitatea sa o depăşeşte pe cea pe care o poate controla un programator).
Luaţi în calcul că pentru fiecare realizare din dezvoltarea programării au fost create metode care să permită programatorului să se descurce cu complexitate crescută. La fiecare pas al drumului noua abordare a preluat cele mai bune elemente ale metodelor anterioare şi a continuat drumul. Astăzi multe proiecte sunt aproape sau în punctul în care programarea structurată nu mai face faţă. Pentru a rezolva această problemă, a fost inventată programarea orientată pe obiecte.
Programarea orientată pe obiecte a preluat cele mai bune idei ale programării structurate şi le combină cu mai multe concepte noi, mai puternice, care încurajează abordarea programării într-un mod nou. În general, când se programează în modul orientat pe obiecte, o problemă este împărţită în subgrupe de secţiuni înrudite, care ţin seama atât de codul cât şi de datele corespunzătoare din fiecare grup. Apoi, se organizează aceste subgrupe într-o structură ierarhică. În sfârşit, subgrupele se transformă în unităţi de sine stătătoare numite obiecte.
Toate limbajele de programare orientate pe obiecte au trei caracteristici comune: încapsularea, polimorfism şi moştenire.
Încapsularea
Încapsularea este un mecanism care leagă împreună cod şi date şi le păstrează pe ambele în siguranţă faţă de intervenţii din afară şi de utilizări greşite. Mai mult, încapsularea este cea care permite crearea unui obiect. Spus simplu, un obiect este o entitate logică ce încapsulează atât date cât şi cod care manevrează aceste date. Într-un obiect o parte din cod şi/sau date pot fi particulare acelui obiect şi inaccesibile pentru orice din afara sa. În acest fel, un obiect dispune de un nivel semnificativ de protecţie care împiedică modificarea accidentală sau utilizarea incorectă a părţilor proprii obiectului de către secţiuni ale programului cu care nu are legătură.
În cele din urmă, un obiect este o variabilă de un tip definit de utilizator. La început poate să apară ciudat ca un obiect, care leagă atât cod cât şi date, să fie considerat ca fiind o variabilă. Totuşi, în programarea orientată pe obiecte aşa stau lucrurile. Când se defineşte un obiect, implicit se crează un nou tip de date.
Polimorfism
Limbajele de programare orientate pe obiecte admit polimorfismul, care este caracterizat prin fraza „o interfaţă, metode multiple”. Mai clar, polimorfismul este caracteristica ce permite unei interfeţe să fie folosită cu o clasă generală de acţiuni. Acţiunea specifică selectată este determinată de natura precisă a situaţiei. Un exemplu din practica zilnică pentru polimorfism este un termostat. Nu are importanţă ce combustibili este utilizat pentru încălzirea casei (gaze, petrol, electricitate, etc.) termostatul lucrează în acelaşi fel. În acest caz, termostatul (care este interfaţa) este acelaşi indiferent de combustibil (metodă). De exemplu, dacă temperatura dorită este de 22 de grade, se va regla termostatul la 22 de grade. Nu are importanţă combustibilul care produce căldura. Acelaşi principiu de poate aplica şi programării. De exemplu, se poate implementa un program care defineşte trei tipuri de memorie stivă. Una este folosită pentru valori întregi, una pentru valori tip caracter şi una pentru valori în virgulă mobilă. Datorită polimorfismului se pot crea trei perechi de funcţii numite push() şi pop() – câte una pentru fiecare tip de date. Conceptul general (interfaţa) este cel de a introduce şi de a scoate date dintr-o memorie stivă. Funcţiile definesc calea specifică (metoda) care se foloseşte pentru fiecare tip de date. Când se introduc date în memoria stivă, tipul de date va fi cel care va determina versiunea particulară a lui push() care va fi apelată.
Preview document
Conținut arhivă zip
- Programare Orientata pe Obiect C++
- curs 1.doc
- curs 10 C++Builder.doc
- curs 11 C++Builder.doc
- curs 2.doc
- curs 3 postuniv.doc
- curs 4postuniv.doc
- curs 5 postuniv.doc
- curs 6 postuniv.doc
- curs 7 postuniv.doc
- curs 8 C++Builder.doc
- curs 9 C++Builder.doc