Documente Academic
Documente Profesional
Documente Cultură
Curs 1
Noiuni introductive despre programarea orientat pe obiecte
03.10.2012
1. Clase 1.1. Programare procedural Programare orientat pe obiecte 1.2. Declararea claselor
03.10.2012
Limbajul C++, ca i Pascal, utilizeaz modelul programrii structurate procedurale, care const n descompunerea programului n proceduri (funcii), apelate n ordinea n care se desfoar algoritmul. Datele sunt separate de funciile care le manipuleaz.
Programare orientat pe obiecte (C++/Java)
03.10.2012
acordat o atenie sporit organizrii datelor funciile, mpreun cu datele pe care le manevreaz sunt organizate ca un modul.
03.10.2012
identificarea unor obiecte, cu operaii (metode) specifice asociate i realizarea comunicrii ntre aceste obiecte prin intermediul unor mesaje.
a unei clase (tip de dat definit de utilizator). Clasele sunt membre ale unei ierarhii i sunt corelate ntre ele prin relaii de motenire.
03.10.2012
utilizatorilor un numr de tipuri primitive (sau predefinite). Astfel n C++ avem ca tipuri primitive char, int, float, double si void. Un tip de date este precizat:
printr-o mulime finit de valori T (constantele tipului) i o mulime de operatori (aplicaii T T sau T T T)
03.10.2012
finit de ntregi (-32768, 32767) i operatorii binari +, -, *, / i % ilustreaz conceptul de numr ntreg
Programare orientat pe obiecte (C++/Java)
03.10.2012
Modelele matematice care nu au reprezentare direct prin tipuri predefinite se pot reprezenta prin tipuri definite de utilizator (numite i tipuri de date abstracte TDA).
03.10.2012
1. Clase 1.1. Programare procedural Programare orientat pe obiecte 1.2. Declararea claselor
03.10.2012
asemntoare declarrii structurilor i conine att date ct i funcii (metode) Dupa declararea unei clase putem declara variabile avand acest tip nou.
03.10.2012
Un
urmtoarea analogie: obiect este echivalent cu o variabil clasa este echivalent cu un tip definit de utilizator
Programare orientat pe obiecte (C++/Java)
03.10.2012
03.10.2012
obiecte are la baz unificarea a dou concepte i anume datele aplicaiei i codul necesar prelucrrii lor. utilizatorului cteva faciliti care permit definirea unor tipuri de date proprii i a unor operatori care s utilizeze aceste tipuri de date.
03.10.2012
03.10.2012
tipurile de date:
matrice complex
03.10.2012
operaii:
Tipurile de date complex i matrice se numesc CLASE 2. Variabilele a, b, c, p, q, r se numesc OBIECTE (sau instanieri ale claselor complex i matrice), 3. Operatorii + i * se numesc METODE ale acelorai clase.
1.
Programare orientat pe obiecte (C++/Java)
03.10.2012
Din punct de vedere istoric, primele limbaje care au folosit noiunea de CLASA, au fost: - SIMULA (1965) - SIMULA-2 (1967) - SMALLTALK (1970) Ele nu s-au putut impune pe piaa limbajelor de programare deoarece erau limbaje de sine stttoare i muli dintre programatori nu erau dornici s nvee un nou limbaj, n defavoarea limbajelor din acel moment.
Programare orientat pe obiecte (C++/Java)
03.10.2012
Astfel de abia n anul 1980, cnd deja limbajul C era acceptat, un colectiv de programatori condus de Bjarne Stroustrup aduce conceptul de CLASA ntr-un dialect al limbajului C, numit C with Classes, iar in 1983 ia natere un nou limbaj numit C++.
Programare orientat pe obiecte (C++/Java)
03.10.2012
Aplicaii construite cu ajutorul limbajului C++: grafic interactiv proiectarea interfeelor utilizator exploatarea reelelor de calculatoare tehnicile de proiectare a compilatoarelor Limbajul C++ are un impact foarte mare i se impune pe piaa limbajelor de programare obiectuale.
Programare orientat pe obiecte (C++/Java)
03.10.2012
Tipuri de metode
Metodele pot avea acces la starea obiectului i de aceea se comport diferit, n funcie de aciunea acestora asupra strii obiectului.
Programare orientat pe obiecte (C++/Java)
03.10.2012
ale clasei (adic noi obiecte). Spunem c s-a nscut un nou obiect atunci cnd este folosit constructorul unei clase. Este posibil s creem obiecte n mai multe moduri, deoarece unei clase i pot corespunde mai muli constructori. 2. Destructori metode care elimin obiecte din memorie. 3. Selectori metode care nu modific starea obiectului, asemntoare cu accesul read-only. Selectori pot invoca obiecte din mai multe clase. 4. Modificatori metode care modific starea obiectului, efectund operaii de scriere la nivelul datelor obiectului.
Programare orientat pe obiecte (C++/Java)
03.10.2012
Clase Clasele sunt de fapt implementarea unor tipuri abstracte de date ( TDA sau Abstract Data Type - ADT). O caracteristic important a unui limbaj de programare este aceea de a oferi programatorului posibilitatea de a-i construi tipuri de date ca cele standard, acestea numindu-se tipuri definite de utilizator (user defined). 03.10.2012
Programare orientat pe obiecte (C++/Java)
n limbajul C se poate folosi cuvntul cheie typedef prin intermediul cruia se poate defini orice tip de date utilizator. Se mai poate folosi mpreun cu tipul structur (struct) obinndu-se astfel noi tipuri de date. Cu toate acestea, operaiile care se pot utiliza asupra acestor noi tipuri de date rmn tot cele standard, acestea acionnd numai asupra tipurilor standard.
Programare orientat pe obiecte (C++/Java)
03.10.2012
suprancrcarea operatorilor (overloading operators). Introducerea tipurilor abstracte de date ofer o anumit structur i unitate prin punerea laolalt a celor dou elemente, i anume, datele i operaiile.
03.10.2012
aceluiai tip de dat. n plus, exist posibilitatea protejrii elementelor componente, att date ct i funcii membre, protejarea nu mpotriva necunoaterii lor de ctre utilizator ci mai ales mpotriva distrugerii lor accidentale.
Acest proprietate se numete ncapsulare.
Concluzie:
03.10.2012
faptul c permite controlul accesului att la datele membre (ncapsulare selectiv a datelor), ct i la funciile membre ale unei clase. n acest scop, se pot utiliza specificatorii de control:
1.
2. 3.
03.10.2012
Pentru domeniul n care este valabil declaraia obiectului, efectul specificatorilor asupra accesului la un membru este: 1. public membrul poate fi accesat de orice funcie din domeniul declaraiei clasei 2. private membrul este accesibil numai funciilor membre i prietene ale clasei (funciile prietene ale unei clase vor fi prezentate ulterior) 3. protected similar cu private, dar accesul se extinde pentru functiile membre i prietene ale claselor derivate din clasa respectiv (clasele derivate vor fi tratate ulterior)
Programare orientat pe obiecte (C++/Java)
03.10.2012
O clas poate fi declarat, asemntor cu tipul struct sau union, folosind cuvntul cheie class, astfel: class <nume_clasa> : <lista_clase> { <lista_membri>
}<lista_variabile>;
Programare orientat pe obiecte (C++/Java)
03.10.2012
Unde: nume_clas este numele tipului clasa ales de ctre utilizator i care trebuie s fie unic lista_clase este lista claselor din care este derivat clasa respectiv (dac este cazul) lista_membri reprezint secvena de declaraii ale membrilor clasei. Lista conine declaraii de date membre i declaraii de funcii membre. Datele membre pot fi de orice tip, mai puin tipul clasa derivat (se admit ns pointeri la tipul clasa derivat). lista_variabile este lista numelor de variabile alese pentru clasa respectiv
Programare orientat pe obiecte (C++/Java)
03.10.2012
opionale, ca i n cazul tipurilor din limbajul C, struct i union, cel puin una din specificaii trebuie s existe. De regul nume_clasa nu se omite, pentru a putea declara ulterior obiecte de acest tip. La declararea obiectelor este suficient s se specifice numele clasei fr cuvntul cheie class.
Programare orientat pe obiecte (C++/Java)
03.10.2012
Exemplu: // definirea clasei matrice class matrice { <lista_membrii> }; //declararea variabilelor de tip matrice matrice a,b,c;
03.10.2012
Observaie: Membrii unei clase au implicit atributul de acces private. Metodele asociate datelor trebuie s fie ns accesibile utilizatorului clasei, astfel nct trebuie s fie declarate public. Se admite c n definiia clasei s apar doar prototipurile funciilor membre. Definiiile efective ale funciilor se pot face ulterior, n orice alt loc n cadrul programului.
Programare orientat pe obiecte (C++/Java)
03.10.2012
Observaie: Definiia unei clase const din dou pri: declaraia i implementarea sa. 1. Declaraia este o niruire a elementelor componente ale unei clase (date i funcii) 2. Implementarea const n acea seciune n care se implementeaz funciile declarate ca aparinnd clasei. Fiind membre ale unui tip de date, accesul la aceste elemente se realizeaz prin intermediul operatorului de apartenen ..
Programare orientat pe obiecte (C++/Java)
03.10.2012
indic gradul de libertate la acces la elementele componente ale clasei. Prin public, toate elementele sunt disponibile n exteriorul clasei, o astfel de clas fiind asemntoare cu tipul de date struct, ns asemnrile se opresc aici.
03.10.2012
n schimb utiliznd cuvintele cheie private sau protected, elementele crora li s-a ataat aceste cuvinte cheie pot fi accesate numai prin intermediul funciilor membre sau prietene.
03.10.2012
37
ntrebri?
03.10.2012