Sunteți pe pagina 1din 7

Bibliografie

 Bjarne Stroustrup: The C++ Programming


Introducere în Language, Adisson-Wesley, 3nd edition, 1997

Programarea Orientată  Grady Booch, Object-Oriented Analysis and


Design with Applications (Second Edition),
Obiect (POO) Adisson-Wesley, 1994

 Jamsa K., Klander L., Totul despre C și C++.


Manual fundamental de programare în C și C++,
Editura Teora, București, 2000

Introducere în Programarea Orientată Obiect


3

Bibliografie Detalii Organizatorice


 Mirel Coşulschi, Octavian Mustafa, Programare
 Curs
în C++. Concepte moderne şi aplicaţii, Editura
 Prezentarea teoriei generale a Programării Orientate Obiect
Universitaria, 2015
 Seminar
 Liviu Negrescu, Limbajele C și C++ pentru
începatori, Vol. II, (editia XI),Editura Albastra,
 Probleme practice ale teoriei prezentate la curs
Cluj-Napoca, 2005
 Laborator
 Bruce Eckel, „Thinking in C++, 2nd Edition”,  Implementări practice ale teoriei prezentate la curs
Prentice Hall 2000  Mediul de dezvoltare: Code::Blocks, DevC++, Microsoft Visual Studio
http://www.mindview.net/Books/TICPP/ThinkingInCPP2e.html
Prezența este obligatorie!

Introducere în Programarea Orientată Obiect 2 Introducere în Programarea Orientată Obiect 4


Ce este Programarea Orientată Obiect? Abstractizarea

 Programarea Orientată Obiect (POO) este o metodă de  Abstractizarea este procesul de grupare a datelor şi
proiectare și implementare în care programele sunt metodelor de prelucrare specifice rezolvării unei
reprezentate sub forma unor colecții de obiecte (clase) care
probleme.
interacționează între ele prin intermediul mesajelor.
 Limbaje de programare orientate obiect:  Abstractizarea:
 C++  exprimă toate caracteristicile esențiale ale unui obiect care
 C# fac ca acesta să se distingă de alte obiecte;
 Java  oferă o definire precisă a granițelor conceptuale ale
 … obiectelor din perspectiva unui privitor extern.

Introducere în Programarea Orientată Obiect 5 Introducere în Programarea Orientată Obiect 7

Concepte de bază în POO


Abstractizarea
 Principalele concepte care stau la baza POO
 Abstractizarea se
sunt:
concentrează asupra
 Abstractizarea
caracteristicilor
 Încapsularea
esențiale ale unui
 Modularizarea obiect, în raport cu
 Ierarhizarea perspectiva unui
observator.

Introducere în Programarea Orientată Obiect Source: Grady Booch, Object-Oriented Analysis and Design with Applications (Second Edition)
6 Introducere în Programarea Orientată Obiect 8
Abstractizarea - Exemplu Încapsularea
 Tipul abstract de date "Student"  Încapsularea
typedef struct { ascunde detaliile
char nume[50]; implementării unui
char facultatea[30];
obiect
int anStudii;
} Student;
 Instanțierea tipului abstract "Student"
Student s={"Popescu Emil","Informatica",1};
Source: Grady Booch, Object-Oriented Analysis and Design with Applications (Second Edition)

Introducere în Programarea Orientată Obiect 9 Introducere în Programarea Orientată Obiect 11

Încapsularea Modularizarea

 Gruparea datelor și metodelor aplicabile acestora într-  Modalitatea prin care un


o singură structură de date, definind totodată modul în program este divizat în
care obiectul și restul programului pot referi datele din
obiect. subunități (module) ce
 Concept care definește apartenența unor proprietăți pot fi compilate separat
și metode față de un obiect.  Un modul grupează
 Constă în separarea aspectelor externe ale unui abstracțiuni (clase)
obiect care sunt accesibile altor obiecte de aspectele legate logic între ele
interne ale obiectului care sunt ascunse celorlalte
obiecte
Source: Grady Booch, Object-Oriented Analysis and Design with Applications (Second Edition)

Introducere în Programarea Orientată Obiect 10 Introducere în Programarea Orientată Obiect 12


Ierarhizarea Clasa
 Reprezintă o ordonare a abstracțiunilor.  O clasă este o colecție de obiecte cu aceiași structură
(caracteristici) și același comportament (metode sau operații)
 Principalele tipuri sunt:
 Moștenirea (ierarhia de clase) relație între clase în care o Obiecte - Bicilete Clasa Biciletă
clasă preia structura și comportamentul definit în una sau - atribute
mai multe clase (semantic implică o relație de tip “este tip cadru
un/o”, eng. “is a”). dimensiunea rotii
numar de viteze
 Agregarea (ierarhia de obiecte) relaţie între două obiecte - metode
în care unul dintre obiecte aparține celuilalt obiect. accelerează
frânează
(semantic implică o relaţie de tip “parte din”, eng. “part of”)

Introducere în Programarea Orientată Obiect 13 Introducere în Programarea Orientată Obiect 15

Obiecte Identificarea atributelor și metodelor

 Un obiect este o reprezentare a unei entități din  În cadrul unei bănci un cont bancar are un titular,
lumea reală asupra căruia se poate întreprinde o sold, o rata a dobânzii, numar de cont și se potefectua
acțiune sau care poate întreprinde o acțiune operații de depunere, extragere, interogare sold.
 Un obiect este caracterizat de:  Extragerea atributelor:
 titular, sold, rata a dobânzii, numar de cont
 nume
 Extragerea metodelor:
 atribute (date)
 depunere, extragere, interogare sold
 valorile atributelor la un moment dat definesc o stare
 metode (servicii, operatii)

Introducere în Programarea Orientată Obiect 16

Introducere în Programarea Orientată Obiect 14


Tipuri de date abstracte şi obiecte Protecția datelor și funcțiilor membre

 A doua definiție pentru obiecte şi clase:  Funcţiile şi datele unei clase pot fi grupate din
punct de vedere al dreptului de acces în:
O clasa este o implementare a unui tip de date abstract.  private – date şi funcţii membre care pot fi folosite doar de
Ea defineşte atributele şi metodele care implementează
structura de date respectiv operaţiile tipului de date către funcţiile aparţinând clasei respective;
abstract.  protected – similară cu private dar care dă drepturi de accesşi
funcţiilor membre ale claselor ce moştenesc clasa
 Un obiect este o instanţă a unei clase. El este unic respectivă
determinat de numele său şi are o stare reprezentată de  public – drept de acces tuturor.
valorile atributelor sale la un anumit moment particular.

Introducere în Programarea Orientată Obiect 17 Introducere în Programarea Orientată Obiect 19

Sintaxa definirii unei clase Declararea/definirea unei metode


 Definirea unei clase constă din două părţi distincte: Declarare
 declararea clasei class IdNumeClasa{
 implementarea clasei respective tip idNumeMetoda(tip1 p1, …, tip pn);
};
 Sintaxa
class IdNumeClasa{ Definire (în afara clasei)
tip IdNumeClasa::idNumeMetoda(tip1 p1, …, tip pn){
declaratii de date membru;
//instructiuni
declaratii/definiții de functii membru; }
};

Introducere în Programarea Orientată Obiect 18 Introducere în Programarea Orientată Obiect 20


Definirea unei metode inline Exemplu
Implementarea clasei ContBancar
void ContBancar::init(char _titular[], char
 O metodă definită în interiorul clasei se numeste metoda definita _codIBAN[], float _sold){
inline strcpy(titular,_titular);
class IdNumeClasa{ strcpy(codIBAN,_codIBAN);
tip idNumeMetoda(tip1 p1, …, tip pn) ){
sold = _sold;
//instructiuni
}
}
};
void ContBancar::depune(float suma){
 Se recomandă ca o astfel de metodă să conţină un număr redus de
intrucţiuni, iar acestea sa nu fie instrucţiuni de ciclare sold = sold + suma;

 Functiile declarate ca inline vor fi expandate la compilare, }


compilatorul generând codul corespunzator functiei în pozitia
apelului, în loc să genereze secvenţa de apel. void ContBancar::retrage(float suma){
sold = sold - suma;
}

Introducere în Programarea Orientată Obiect 21 Introducere în Programarea Orientată Obiect 23

Exemplu Exemplu
Declararea clasei ContBancar Implementarea clasei ContBancar
class ContBancar{
private: float ContBancar::interogareSold(){

char titular[100]; return sold;

char codIBAN[25]; }

float sold;
public: void ContBancar::afisare(){

void init(char _titular[], char _codIBAN[], float _sold); printf("Titular: %s\n", titular);
void depune(float suma); printf("Cod IBAN: %s\n", codIBAN);

void retrage(float suma); printf("Sold: %g\n", sold);

float interogareSold(); }
void afisare();

};

Introducere în Programarea Orientată Obiect 22 Introducere în Programarea Orientată Obiect 24


Sintaxa declarării unui obiect Exemplu
int main(){
class IdNumeClasa{ ContBancar c;

// …. c.init("Popescu", "RO49RNCB0080005630320001", 100);


c.afisare();
} idOb1, …, idObN; printf("Depun 10 RON\n");
c.depune(10);
c.afisare();

sau printf("Retrag 15 RON\n");


c.retrage(15);
c.afisare();

IdNumeClasa idOb1, …, idObN; }

Introducere în Programarea Orientată Obiect 25 Introducere în Programarea Orientată Obiect 27

Referirea la datele şi metodele membru

idOb.idDataMembru
idPointerOb ->idDataMembru

idOb.idMetodaMembru(lista de parametri);
idPointerOb ->idMetodaMembru(lista de parametri);

Introducere în Programarea Orientată Obiect 26

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