Upload
cristian-girlea
View
124
Download
0
Embed Size (px)
DESCRIPTION
Curs 01 - Introducere in POOMihai Gabroveanu
Citation preview
Introducere n Programarea Orientat Obiect (POO)
Mihai Gabroveanu
Introducere n Programarea Orientat Obiect 9
Bibliografie
n Liviu Negrescu, Limbajele C i C++ pentru ncepatori , Vol. II, (editia XI),Editura Albastra, Cluj-Napoca, 2005
n Bruce Eckel, Thinking in C++, 2nd Edition, Prentice Hall 2000http://www.mindview.net/Books/TICPP/ThinkingInCPP2e.html
Introducere n Programarea Orientat Obiect 10
Bibliografie
n Bjarne Stroustrup: The C++ Programming Language, Adisson-Wesley, 3nd edition, 1997
n M. Preda, A. Mirea, D. Preda, C.Teodorescu. Introducere in programarea orientata-obiect. Concepte fundamentale din perspectiva ingineriei software, Editura Polirom. 2010
Introducere n Programarea Orientat Obiect 11
Detalii Organizatorice
n Curs Prezentarea teoriei generale a Programrii Orientate Obiect
n Laborator Implementri practice ale teoriei prezentate la curs n C++ Mediul de dezvoltare: Visual Studio 2005, DevC++ Prezena este obligatorie
n Evaluare nota de laborator = NL
n Doua lucrarin Teme
examen scris = NE nota final: (NL+NE)/2
Introducere n Programarea Orientat Obiect 12
Ce este Programarea Orientat Obiect?
n Programarea Orientat Obiect (POO) este o metod de proiectare i implementare n care programele sunt reprezentate sub forma unor colecii de obiecte care interacioneaz ntre ele prin intermediul mesajelor.
n Limbaje de programare orientate obiect: C++ C# Java
Introducere n Programarea Orientat Obiect 13
Concepte de baz n POO
n Principalele concepte care stau la baza POOsunt:Abstractizarea ncapsulareaModularitatea Ierarhizarea
Introducere n Programarea Orientat Obiect 14
Abstractizarea
n Abstractizarea este procesul de grupare a datelor imetodelor de prelucrare specifice rezolvrii uneiprobleme.
n Abstraciunea: exprim toate caracteristicile eseniale ale unui obiect care
fac ca acesta s se disting de alte obiecte; ofer o definire precis a granielor conceptuale ale
obiectelor din perspectiva unui privitor extern.
Introducere n Programarea Orientat Obiect 15
Abstractizarea - Exemplu
n Tipul abstract de date "Student"typedef struct {
char nume[50];char facultatea[30];int anStudii;
} Student;n Instanierea tipului abstract "Student"
Student s={"Popescu Emil,"Informatica",1};
Introducere n Programarea Orientat Obiect 16
NCAPSULAREA
n Combinarea datelor i metodelor ntr-o singurstructur de date, definind totodat modul n care obiectul i restul programului pot referi datele din obiect.
n Concept care definete apartenena unor proprietii metode fa de un obiect.
n Const n separarea aspectelor externe ale unuiobiect care sunt accesibile altor obiecte de aspecteleinterne ale obiectului care sunt ascunse celorlalterobiecte
Introducere n Programarea Orientat Obiect 17
MODULARITATEA
n Modalitate de a grupa abstraciuni legate logic ntre ele.
Introducere n Programarea Orientat Obiect 18
IERARHIZAREA
n Reprezint o ordonare a abstraciunilor.n Principalele tipuri sunt: Motenirea (ierarhia de clase) relaie ntre clase n care o
clas mprtete structura i comportarea definit n unasau mai multe clase (semantic implic o relaie de tip is a).
Agregarea (ierarhia de obiecte) relaie ntre dou obiecten care unul dintre obiecte aparine celuilalt obiect. (semantic implic o relaie de tip part of)
Introducere n Programarea Orientat Obiect 19
Obiecte
n Un obiect este o reprezentare a unei entiti din lumea real asupra cruia se poate ntreprinde o aciune sau care poate ntreprine o aciune
n Un obiect este caracterizat de n numen atribute (date)
valorile atributelor la un moment dat definesc o stare
n metode (servicii, operatii)
Introducere n Programarea Orientat Obiect 20
Clasa
n O clas este o colecie de obiecte cu aceiai structur (caracteristici) i acelai comportament (metode sau operatii)
Obiecte - Bicilete Clasa Bicilet- atribute
tip cadrudimensiunea rotiinumar de viteze
- metodeacelerezafraneaza
Introducere n Programarea Orientat Obiect 21
Identificarea atributelor i metodelor
n n cadrul unei banci un cont bancar are un titular, sold, o rata a dobinzii, numar de cont i se pot efectua operatii de depunere, extragere, actualizaresold.
n Extragerea atributelor:n titular, sold, rata a dobinzii, numar de cont
n Extragerea metodelorn depunere, extragere, actualizare sold
Introducere n Programarea Orientat Obiect 22
Tipuri de date abstracte si obiecte
n A doua definitie pentru obiecte si clase:
O clasa este o implementare a unui tip de date abstract. Ea defineste atribute si metode care implementeazastructura de date respectiv operatiile tipului de date abstract.
Un obiect este o instanta a unei clase. El este unicdeterminat de numele sau si defineste o stare reprezentata de valorile atributelor sale la un anumitmoment particular.
Introducere n Programarea Orientat Obiect 23
Sintaxa definirii unei clase
n Definirea unei clase const din dou pri distincte: declararea clasei implementarea clasei respective
n Sintaxaclass IdNumeClasa{
declaratii de date membru;declaratii/definiii de functii membru;
};
Introducere n Programarea Orientat Obiect 24
Protecia datelor i funciilor membre
n Funciile i datele unei clase pot fi grupate din punct de vedere al dreptului de acces n: private conine date i funcii membre care pot fi folosite
doar de ctre celelalte funcii aparinnd clasei respective; protected similara cu private dar care ddrepturi de
acces i funciilor membre ale claselor derivate din clasarespectiv
public drept de acces tuturor.
Introducere n Programarea Orientat Obiect 25
Delararea/definirea unei metode
Declarareclass IdNumeClasa{
tip idNumeMetoda(tip1 p1, , tip pn);};
Definiretip IdNumeClasa:: tip idNumeMetoda(tip1 p1, , tip pn){
//instructiuni}
Introducere n Programarea Orientat Obiect 26
Exempluclass ContBancar{
private:char titular[100];char codIBAN[25];float sold;
public:void init(char _titular[], char _codIBAN[],
float _sold); void depune(float suma); void retrage(float suma); float getSold(); void afis();
};
Declararea clasei ContBancar
Introducere n Programarea Orientat Obiect 27
Exempluvoid ContBancar::init(char _titular[], char_codIBAN[], float _sold){
strcpy(titular,_titular);strcpy(codIBAN,_codIBAN);sold = _sold;
}
void ContBancar::depune(float suma){sold = sold + suma;
}
void ContBancar::retrage(float suma){sold = sold - suma;
}
Implementarea clasei ContBancar
Introducere n Programarea Orientat Obiect 28
ExempluImplementarea clasei ContBancar
float ContBancar::getSold(){return sold;
}
void ContBancar::afis(){printf("Titular: %s\n", titular);printf("Cod IBAN: %s\n", codIBAN);printf("Sold: %g\n", sold);
}
Introducere n Programarea Orientat Obiect 29
Sintaxa declararii unui obiect
IdNumeClasa{// .
} idOb1, , idObN;
sau
IdNumeClasa idOb1, , idObN;
Introducere n Programarea Orientat Obiect 30
Referirea la datele si metodele membru
idOb.idDataMembruidPointerOb ->idDataMembru
idOb.idMetodaMembru(lista de parametri);idPointerOb ->idMetodaMembru(lista de parametri);
Introducere n Programarea Orientat Obiect 31
Exempluint main(){
ContBancar c;c.init("Popescu",
"RO49RNCB0080005630320001", 100);c.afis();printf("Depun 10 RON\n");c.depune(10);c.afis();printf("Extrag 15 RON\n");c.depune(10);c.afis();
}