Documente Academic
Documente Profesional
Documente Cultură
TYPE CHECKING
CURS 2 PROGRAMARE II
CURS ANTERIOR
Tehnici de programare Programarea nestructurat Programarea procedural Programarea modular Abstractizarea datelor Programarea orientat obiect Programarea generic
CUPRINS
Tipuri de date ncapsularea Type checking Clase
TIPURI DE DATE
Ce sunt tipurile de date? Este o clasificare care identific diferite tipuri de date care specific
valorile specifice pentru acele tipuri operaiile care se pot efectua cu valorile acestor tipuri sensul datelor modul n care aceste date pot fi stocate
TIPURI DE DATE
Ce sunt tipurile de date? Sunt o clasificare care identific diferite tipuri de date care specific
valorile specifice pentru acele tipuri operaiile care se pot efectua cu valorile acestor tipuri sensul datelor modul n care aceste date pot fi stocate
ABSTRACTIZAREA
Abstractizare Problem Model Model Data Operaii Definiie Abstractizarea presupune structurarea unei probleme din realitate n entiti bine definite de ctre date i operaii n contextul OO presupune existena unui mecanism a unui limbaj care ofer posibilitatea de a defini structuri conceptuale care reprezint aspectele computaionale interesante pentru entitatea modelat
ABSTRACTIZAREA
Abstractizarea datelor Subliniaz operaiile care pot fi ataate datelor (ce aciuni se pot face asupra unei mulimi de date), nu pe implementarea operaiilor (cum se realizeaz) Dezvoltarea fiecrei structuri de date ct se poate de independent fa de soluie Abstractizarea metodelor Separarea scopului unui modul de implementarea sa Ex: servicii WEB, servicii REST
EXEMPLU
Modelarea noiunii de UNIVERSITATE Care ar fi proprietile (atributele) pentru o universitate?
EXEMPLU
Modelarea noiunii de UNIVERSITATE Care ar fi proprietile (atributele) pentru o universitate? Nume Adres Culoare cldire Lista de faculti CUI etc
EXEMPLU
Modelarea noiunii de UNIVERSITATE Care ar fi proprietile (atributele) pentru o universitate? Nume Adres Culoare cldire Lista de faculti CUI etc
EXEMPLU
Modelarea noiunii de UNIVERSITATE UNIVERSITATE Date
Operaii
ASCUNDERA INFORMAIILOR
Ascunderea informaiilor (Information Hiding) Se refer la scopul (vizibilitatea) a unor pri ale implementrii Ascunderea detaliilor ntr-un modul Limitarea accesului la module i date, astfel nct modulele s nu poat modifica direct datele Detaliile s nu fie accesibile din afara modulului Avantaje Programe mai sigure i mai fiabile Elibereaz clasele utilizator de grija manevrrii datelor
NCAPSULARE
ncapsulare (Encapsulation) Definete modalitatea n care diverse obiecte i restul programului se pot referi la datele specifice obiectelor
Avantaje
Previne apariia erorilor prin limitarea accesului la date Asigur portabilitatea programelor Faciliteaz utilizarea excepiilor
EXEMPLE
class FarncapsulareSauAscundereaInformai ei { public const int STATUS_ACTIVE = 0; public const int STATUS_HALTED = 1; public int status = STATUS_ACTIVE; }; class ncapsulareFarAscundereaInformaiei { public const int STATUS_ACTIVE = 0; public const int STATUS_HALTED = 1; private int status = STATUS_ACTIVE; public int getStatus() { return status; } };
class ncapsulareiAscundereaInformaiei { private const int STATUS_ACTIVE = 0; private const int STATUS_HALTED = 1; private int status = STATUS_ACTIVE; private int getStatus() { return status; } public boolean isActive() { return getStatus() == STATUS_ACTIVE; } };
Integer
valori: valorii ntregi ntre limitele MIN i MAX Operaii: adunare, scdere, nmulire, mprire, etc
Arrays
Valori: elemente heterogene Operaii: iniializare, stocare, accesare, copiere, etc
TDA REPREZENTARE
UNIVERSITATE Date
Nume Adres Lista de faculti CUI
Operaii
creare/distrugerea Modificarea datelor existente (nume, adresa, CUI) Adugarea unei noi facultii Accesarea datelor (nume, adres, etc)
VERIFICAREA TIPURILOR
Verificare tipurilor (Type checking) Definiie
Definete modul n care limbajele de programare clasific valorile i tipurile expresiilor, cum manipuleaz tipurile i cum interacioneaz Procesul de verificare i impunere de condiii definite de tipurile sistemului
Clasificare
Limbaje statice (static typing): la compilare (ex. C++, Java) Limbaje dinamice (dynamic typing): la execuie (ex. LISP, Python, JS)
Suprancrcarea funciilor
Funcii inline Operatorii new, delete Operatorul de rezoluie
VARIABILE REFERIN
Referinele, ca i pointerii, sunt variabile care conin adresa unei zone de memorie Semantic, ele reprezint aliasuri ale unor variabile existente Proprietile cele mai importante ale referinelor sunt: referinele trebuie sa fie iniializate la declaraie (spre deosebire de pointeri care pot fi iniializai in orice moment); dup iniializare, referina nu poate fi modificata pentru a referi o alt zon de memorie (pointerii pot fi modificai pentru a referi alt zon) ntr-un program C++ valid nu exist referine nule
void f() { int i = 1; int& r = i; // r si I se refera la aceelasi int int& r2; // EROARE: ???? int x = r; // x = 1 r = 2; // de fapt, i = 2 int* p = &r; // p pointeaza la i }
Exemplu funcia care calculeaz distana dintre dou puncte. Se consider c folosirea parametrilor implicii permite calculul distanei dintre un punct i originea sistemului.
double dist (double x1, double y1, double x2=0, double y2=0) { double x = x1-x2; double y = y1-y2; return sqrt(x*x + y*y); }
SUPRANCRCAREA FUNCIILOR
Suprancrcarea (redefinire) funciilor Posibilitatea de a atribui unui simbol mai multe semnificaii care pot fi distinse n context Selectarea funciei se face n urma comparrii tipurilor parametrilor efectivi cu tipurile parametrilor formali din diferitele declaraii ale funciilor cu acelai nume
double adunare(double x1, double y1) { return x+y; } char* adunare(char* s1, char*s2) { char * rez = new char[strlen(s1)+strlen(s2)+1]; strcpy(rez,s1); strcat(rez,s2); return rez; }
void fct() { cout << adunare(3.5, 8.6); cout << adunare(curs, C++); }
FUNCII INLINE
Cuvntul cheie inline pus n faa unei funcii indic compilatorului s expandeze acea funcie n momentul compilrii, astfel nct codul obiect generat nu va conine un apel de funcie, ci va conine codul obiect corespunztor acelei funcii. inline este doar o indicaie, a crei implementare difer de la compilator la compilator
pointer = new tip(initializare) pointer = new tip [nr_elemente] delete pointer delete [] pointer
OPERATORUL REZOLUIE
operatorul de rezoluie (::) - operator de acces (deomeniu, scop) permite accesul la un identificator cu domeniul fiier dintrun bloc n care acesta nu este vizibil datorit unei alte declaraii.
char str[20]= "Sir global"; void fct(){ char *str; str = "Sir local"; std::cout << ::str << std::endl; std::cout << str << std::endl; }
PROGRAM
Programare structurat
CLASE
Definiie O clasa este o implementare a unui tip de date (concret, abstract sau generic). Definete atribute i funcii care descriu structura de date i operaiile care se pot efectua cu acest tip de date Exemple: Universitate Student Profesor Amfiteatru Sal etc
CLASE
Clasele n C++ pot fi definite folosind cuvintele cheie struct sau class Sintax
class X { // variabile membru // functii membru }; struct X { // variabile membru // functii membru };
Exemplu
struct Universitate{ char *nume, *adresa; void init (char *nume, char* adresa); };
Accesul la date
Structuri public Clase privat
OBIECTE
Obiectele sunt create prin declararea de variabile Sintax
X numeVariabila;
Exemplu
Universitate ubb; Universitate *uvt = new Universitate;
EXERCIIU
BIBLIOTEC Identificare obiectelor dintr-o bibliotec Interaciunile dintre ele Proprietile comune Ce clase se pot defini?
CURS URMATOR
CLASE SPECIFICATORI DE ACCES DATE FUNCII CONSTRUCTORI DESTRUCTORI CONSTRUCTORI DE COPIERE