Sunteți pe pagina 1din 33

TIPURI DE DATE. TIPURI DE DATE CONCRETE, ABSTRACTE, GENERICE. NCAPSULAREA.

TYPE CHECKING

CURS 2 PROGRAMARE II

CURS ANTERIOR
Tehnici de programare Programarea nestructurat Programarea procedural Programarea modular Abstractizarea datelor Programarea orientat obiect Programarea generic

Programarea orientat obiect Abstractizare Motenirea Polimorfism la execuie Istoric C++

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

Exemple Valori reale, ntregi, boolean

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

Exemple Valori reale, ntregi, boolean

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

Nume Adres Lista de faculti CUI


creare/distrugerea Modificarea datelor existente (nume, adresa, CUI) Adugarea unei noi facultii Accesarea datelor (nume, adres, etc)

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

Previne apariia erorilor

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; } };

TIPURI DE DATE ABSTRACTE


Tipuri de date abstracte (Abstract Data Types - ADT) O mulime de date care au aceeai reprezentare pentru care este definit o mulime de operaii care se pot realiza asupra datelor Dac se cunosc specificaiile operaiilor care se pot efectua supra datelor, operaiile ADT se pot folosi fr a cunoate implementarea operailor sau modul cum sunt stocate datele ADT suport abstractizarea, ncapsularea i ascunderea de informaii Exemple Tipuri de date implicite: boolean,ntreg, real, array Tipuri de date definite de utilizator: stive, liste, arbori,

EXEMPLE DE ADT DEFAULT


Boolean Valori: true sau false Operaii: and, or, not, etc

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 DEFINITE DE UTILIZATOR


Stiva Valori: elementele stivei (ex. Stiva de tip X) Operaii: create, push, pop, esteGoala, etc Coad Valori: elementele cozii (ex. Coada de tip X) Operaii:create, estePlina, esteGoala, etc Arbore Valori: elementele arborelui (ex. Arborele de tip X) Operaii: adugare, tergere, cutare, dimensiune, traversare, etc

TIPURI DE DATE ABSTRACTE


Introduse de Goguen 1978 i Guttag 1977 Reprezentare Folosind mecanisme oferite de limbaje (ex. clase din C++ i Java) Folosind reprezentarea grafic oferit de modelarea grafic (ex. UML) Folosind o descriere textual non standard (ex. de mai sus)

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)

MBUNTIRI ADUSE DE LIMBAJUL C++


Variabile referin Funcii cu parametrii implicii

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 }

void increment(int& i) { i++; }


void f() { int a = 5; increment(a); // a=6 }

FUNCII CU PARAMETRI IMPLICII


La apelarea unor astfel de funcii, se poate omite specificarea parametrilor efectivi pentru acei parametri formali care au declarate valori implicite, transferndu-se automat valorile respective

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); }

void fct(){ dist(3,4, 6,7);//p1(3,4),p2(6,7) dist(5,6);//p1(5,6),p2(0,0) }

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

inline int add(int i, int j) { return i + j; }

OPERATORII NEW I DELETE


Alocarea dinamic a memoriei n C++ se face utiliznd operatorii new i delete

Alocare element Alocare tablou Dealocare element Dealocare tablou

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; }

Efectul apelului funciei fct() Sir global Sir local

PROGRAM
Programare structurat

Structuri de date + Algoritmi = Program Programare orientat obiect

Date + Metode = Obiect

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

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

  • Curs 09
    Curs 09
    Document17 pagini
    Curs 09
    _SirGod_
    Încă nu există evaluări
  • Curs 13
    Curs 13
    Document22 pagini
    Curs 13
    _SirGod_
    Încă nu există evaluări
  • Curs 11
    Curs 11
    Document35 pagini
    Curs 11
    _SirGod_
    Încă nu există evaluări
  • Curs 12
    Curs 12
    Document25 pagini
    Curs 12
    _SirGod_
    Încă nu există evaluări
  • Curs 08
    Curs 08
    Document32 pagini
    Curs 08
    _SirGod_
    Încă nu există evaluări
  • Curs 10
    Curs 10
    Document23 pagini
    Curs 10
    _SirGod_
    Încă nu există evaluări
  • Top Down
    Top Down
    Document4 pagini
    Top Down
    c1872524
    Încă nu există evaluări
  • Curs 04
    Curs 04
    Document27 pagini
    Curs 04
    _SirGod_
    Încă nu există evaluări
  • Curs 06
    Curs 06
    Document27 pagini
    Curs 06
    _SirGod_
    Încă nu există evaluări
  • Curs 03
    Curs 03
    Document32 pagini
    Curs 03
    _SirGod_
    Încă nu există evaluări
  • Curs 05
    Curs 05
    Document29 pagini
    Curs 05
    _SirGod_
    Încă nu există evaluări
  • Arhitectura Calculatoarelor Bibliografie
    Arhitectura Calculatoarelor Bibliografie
    Document3 pagini
    Arhitectura Calculatoarelor Bibliografie
    _SirGod_
    Încă nu există evaluări
  • Limbaje Formale
    Limbaje Formale
    Document110 pagini
    Limbaje Formale
    Andrei Manescu
    Încă nu există evaluări
  • pII Curs1
    pII Curs1
    Document34 pagini
    pII Curs1
    Nanu
    Încă nu există evaluări
  • Capitolul Nr7
    Capitolul Nr7
    Document22 pagini
    Capitolul Nr7
    _SirGod_
    Încă nu există evaluări
  • Capitolul Nr11
    Capitolul Nr11
    Document23 pagini
    Capitolul Nr11
    _SirGod_
    Încă nu există evaluări
  • Curs de Geometrie
    Curs de Geometrie
    Document99 pagini
    Curs de Geometrie
    mary
    100% (3)
  • Capitolul Nr8
    Capitolul Nr8
    Document8 pagini
    Capitolul Nr8
    _SirGod_
    Încă nu există evaluări
  • Capitolul Nr9
    Capitolul Nr9
    Document13 pagini
    Capitolul Nr9
    _SirGod_
    Încă nu există evaluări
  • Capitolul Nr10
    Capitolul Nr10
    Document24 pagini
    Capitolul Nr10
    _SirGod_
    Încă nu există evaluări
  • Capitolul Nr5
    Capitolul Nr5
    Document18 pagini
    Capitolul Nr5
    _SirGod_
    Încă nu există evaluări
  • Suport de Curs - Comunicare
    Suport de Curs - Comunicare
    Document9 pagini
    Suport de Curs - Comunicare
    f1784748
    Încă nu există evaluări
  • Capitolul Nr6
    Capitolul Nr6
    Document19 pagini
    Capitolul Nr6
    _SirGod_
    Încă nu există evaluări