Sunteți pe pagina 1din 14

Bibliografie

Introducere în n Bjarne Stroustrup: The C++ Programming


Language, Adisson-Wesley, 3nd edition, 1997
Programarea Orientat ă
Grady Booch, Object-Oriented Analysis and
Obiect (POO)
n
Design with Applications (Second Edition),
Adisson-Wesley, 1994

n 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
n Mirel Coşulschi, Octavian Mustafa, Programare
în C++. Concepte moderne şi aplicaţii, Editura Detalii Organizatorice
Universitaria, 2015

n Liviu Negrescu, Limbajele C și C++ pentru n Curs


începatori, Vol. II,(editia XI),Editura Albastra, ¤ Prezentarea teoriei generale a Programării Orientate Obiect
Cluj-Napoca, 2005 n Laborator
¤ Implementări practice ale teoriei prezentate la curs în C++
¤ Mediul de dezvoltare: Microsoft Visual Studio, Code::Blocks, DevC++ ¤ Prezența este
n Bruce Eckel, „Thinking in C++, 2nd Edition”, obligatorie! n Evaluare
Prentice Hall 2000 ¤ nota de laborator = NL
http://www.mindview.net/Books/TICPP/ThinkingInCPP2e.htm l n Doua lucrări n Teme
¤ examen scris = NE
¤ nota finală: (NL+NE)/2

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


Ce este Programarea Orientată Obiect? Abstractizarea

n Programarea Orientată Obiect (POO) este o metodă de n 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.
n Limbaje de programare orientate obiect: n Abstractizarea:
¤ C++ ¤ exprimă toate caracteristicile esenţiale ale unui obiect care fac
¤ C# 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


Abstractizarea
Concepte de bază în POO n Abstractizarea se
concentrează asupra
n Principalele concepte care stau la baza POO caracteristicilor esențiale
sunt: ale unui obiect, în raport
¤Abstractizarea cu perspectiva unui
¤Încapsularea observator.
¤Modularizarea
¤Ierarhizarea Source: Grady Booch, Object-Oriented Analysis and Design with Applications (Second Edition)
Introducere în Programarea Orientată Obiect 8

Introducere în Programarea Orientată Obiect 6


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

Introducere în Programarea Orientată Obiect 9


Modularizarea
Încapsularea
n Modalitatea prin care un
n Gruparea datelor şi metodelor aplicabile acestora într- program este divizat în
o singură structură de date, definind totodată modul în subunitati (module) ce
care obiectul şi restul programului pot referi datele din pot fi compilate separat
obiect.
n Concept care defineşte apartenenţa unor proprietăţi şi n Un modul grupează
metode faţă de un obiect. abstracţiuni (clase)
n Constă în separarea aspectelor externe ale unui legate logic între ele
obiect care sunt accesibile altor obiecte de aspectele
interne ale obiectului care sunt ascunse celorlalte Source: Grady Booch, Object-Oriented Analysis and Design with Applications (Second Edition)
obiecte
Introducere în Programarea Orientată Obiect 12

Introducere în Programarea Orientată Obiect 10


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

(semantic implică o relaţie de tip “parte din”, eng. “part of”)

Introducere în Programarea Orientată Obiect 13


Obiecte Identificarea atributelor și metodelor

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

Introducere în Programarea Orientată Obiect 14 Introducere în Programarea Orientată Obiect 16


Tipuri de date abstracte şi obiecte
Protecția datelor și funcțiilor membre
n A doua definiţie pentru obiecte şi clase:
n Funcţiile şi datele unei clase pot fi grupate din punct
¤O clasa este o implementare a unui tip de date abstract.
Ea defineşte atributele şi metodele care implementează de vedere al dreptului de acces în:
structura de date respectiv operaţiile tipului de date ¤ private– date şi funcţii membre care pot fi folosite doar de
abstract. către funcţiile aparţinând clasei respective;
¤ protected– similară cu privatedar care dă drepturi de acces şi
¤Un obiect este o instanţă a unei clase. El este unic funcţiilor membre ale claselor ce moştenesc clasa 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


Declararea/definirea unei metode
Sintaxa definirii unei clase
Declarare
n Definirea unei clase constă din două părţi distincte: classIdNumeClasa{ tip
idNumeMetoda(tip1 p1, …, tip
¤ declararea clasei
pn);
¤ implementarea clasei respective n };
Sintaxa
Definire (în afara clasei)
classIdNumeClasa{ 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 inline _codIBAN[], float _sold)
classIdNumeClasa{ { strcpy(titular,_titular);
tip idNumeMetoda(tip1 p1, …, tip pn) ){ strcpy(codIBAN,_codIBAN); sold = _sold;
//instructiuni
}
}
};
void ContBancar::depune(float suma)
n 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;
}
n 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
Implementarea clasei ContBancar

Exemplu float ContBancar::interogareSold(){


return sold;
Declararea clasei ContBancar
class ContBancar{ }

private:
char titular[100]; void ContBancar::afisare()

char codIBAN[25]; { printf("Titular: %s\n",

float sold; titular); printf("Cod IBAN: %s\n",

public: codIBAN); printf("Sold: %g\n",

void init(char _titular[], char _codIBAN[], float _sold); sold);

void depune(float suma); void retrage(float suma); float }


interogareSold(); void afisare();

};

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


Sintaxa declarării unui obiect
class
IdNumeClasa{ / Exemplu
/ …. int main(){ ContBancar c;
c.init("Popescu", "RO49RNCB0080005630320001", 100);
} idOb1, …, idObN; c.afisare(); printf("Depun 10
RON\n"); c.depune(10);
c.afisare(); printf("Retrag 15
sau 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