Documente Academic
Documente Profesional
Documente Cultură
CURS 2 PROGRAMARE II
CURS ANTERIOR
Tehnici de programare
Programarea nestructurat
Programarea procedural
Programarea modular
Abstractizarea datelor
Programarea orientat obiect
Programarea generic
Istoric C++
TEST CURS ANTERIOR
Propunei o abstractizare pentru noiunea de Facultate
Rezolvare
Atribute
Nume facultate (ex. Facultatea de Matematic i Informatic)
Lista de specializri (ex. Informatic, Informatic Englez,
Matematic, Matematic - Informatic)
Numr locuri fr tax
Numr locuri cu tax
Comportament
Situaia studenilor dup sesiunea de iarn
Adugarea / Modificarea / tergerea unui student
CUPRINS
Modelarea problemelor
Tipuri de date
Clase
ABSTRACTIZAREA
Abstractizare
Problem Model
Model
Date
Operaii
Definiie
Abstractizarea presupune structurarea unei probleme din realitate n
entiti bine definite de ctre date i operaii
Este util?
Pentru a nelege i controla lumea nconjurtoare
Exemple
Modelul matematic al sistemului solar
Modelul matematic de previziune a vremii
Modele tehnice pentru proiectarea circuite
MODEL
Simplificare
Modelul unui sistem este mai puin complex dect codul =>
mai accesibil
Modelul permite revizuirea din punct de vedere al calitii,
claritii i consistenei
Notaie comuna
Permite dezvoltatorilor s se focuseze pe soluie
NOTAIE COMUN
Unified Modeling Language - UML
Un limbaj conceput pentru a specifica, vizualiza, construi i
documenta sisteme software
Exemplu
Cum este vzut un calculator?
Copil un aparat la care se poate juca jocuri
Electronist un ansamblu de circuite i tranzistori
Programatorii un mediu de dezvoltare de aplicaii
ABSTRACTIZARE
EXEMPLU
Modelarea noiunii de UNIVERSITATE
UNIVERSITATE
Date
Nume
Adres
Lista de faculti
CUI
Operaii
Modificarea datelor existente (nume, adresa, CUI)
Adugarea unei noi facultii
Accesarea datelor (nume, adres, etc)
Statistici (rata de promovabilitate, lucrri tinifice)
ABSTARCTIZAREA
Utilitate
O abstractizare bun scoate n eviden caracteristicile i
comportamentul relevant pentru un lucru care este prea
greu de neles n toat complexitatea sa
Abstractizarea metodelor
Separarea scopului unui modul de implementarea sa
Ex: servicii WEB, servicii REST
NCAPSULAREA
n terminologia POO presupune ascunderea datelor i
comportamentului obiectelor
class FarncapsulareSauAscundereaInformaiei {
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;
}
};
OBIECT
Este un element finit i particular al uni model
Un obiect poate fi
Un lucru concret (ex. main)
Poate fi invizibil (ex. un bancar ntr-un sistem bancar)
Poate avea o durat de via scurt (ex. o tranzacie ntr-
un sistem bancar)
Noiune Descriere Exemplu
Abstractizare Obiecte similare din Mainile din inventarul unui
sistem o partajeaz dealer de maini pot include
model, fabricant, an, culoare
Obiect Un lucru concret Sandero, Dacia, 2010, alb
OBIECT
Au
Stare
Descrie caracteristicile i condiia curent
Comportament
Aciunile pe care un obiect le poate face
Reprezentare UML
Un dreptunghi cu numele subliniat
masinaMea;
CLASE
Clasa este un grup de obiecte care au caracteristici
comune
O clas descrie o abstractizare i ofer un template pentru
crearea obiectelor
Toate obiectele unei clase sunt identice n urmtorul mod
Tipul datelor coninute
Culoarea, modelul unei maini pot fi stocate ca iruri de
caractere
Tipul i numrul de obiecte despre care tie
La o main se poate cunoate proprietarul curent dar i
lista de proprietari anteriori
Logica pentru comportamentul obiectului
Valorile actuale ale datelor aparin obiectelor
CLASE
Notaia UML
Un dreptunghi care conine numele clasei n prima parte,
datele n urmtoarea parte i comportamentul n ultima
parte
ContBancar
- suma: double
- Tip : boolean
- IBAN : string
+ retragere()
+ depunere()
EXEMPLU ASTRACTIZAREA
A NOIUNI DE FA
Cum descriem fa unei persoane?
EXEMPLU ASTRACTIZAREA A
NOIUNI DE FA
Cum descriem fa unei persoane?
Forma feei
Ochi
Nas
Buze
Urechi
Sprncene
Pr
EXEMPLU ASTRACTIZAREA
A NOIUNI DE FA
Cum ar arta un program care ar permite desenarea de
fee?
EXEMPLU ASTRACTIZAREA
A NOIUNI DE FA
Cum ar arta un program care ar permite desenarea de fee?
Forma feei
Ochi
Nas
Buze
Urechi
Sprncene
Pr
EXEMPLU ASTRACTIZAREA A
NOIUNI DE FA
ATRBIBUTE,
Definirea clasei fa DOMENIU DE VALORI ATRIBUTE
COMPORTAMENT
Forma feei
Ochi
Nas
Buze
Urechi
Sprncene
Pr
EXEMPLU ASTRACTIZAREA A
NOIUNI DE FA
OBIECTE
Obiect 2
Vasilescu Vasile
Obiect 3
Marinescu Maria
Obiect 1
Niculescu Nicu
RELAII NTRE
OBIECTE
Sistemele POO conin multe obiecte diferite care coopereaz pentru
a realiza diferite taskuri
Asociere
Agregare
Compoziie
Polimorfism
RELAII NTRE
OBIECTE
Relaia de Dependin
Un obiect depinde de alt obiect dac are o relaie de scurt
durat cu acel obiect
Tipuri de date
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
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
Exemple
Tipuri de date implicite: boolean,ntreg, real, array
Tipuri de date definite de utilizator: stive, liste, arbori,
EXEMPLE DE ADT
IMPLICITE
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)
Clasificare
Limbaje statice (static typing): la compilare (ex. C++, Java)
Limbaje dinamice (dynamic typing): la execuie (ex. LISP,
Python, JS)
CUPRINS
Modelarea problemelor
Tipuri de date
Clase
MBUNTIRI ADUSE
DE LIMBAJUL C++
Variabile referin
Suprancrcarea funciilor
Funcii inline
Operatorul de rezoluie
VARIABILE
REFERIN
Referinele, ca i pointerii, sunt variabile care conin adresa unei zone
de memorie
NU este o mbuntire dar introducem aici ideea deoarece o vom folosi mai trziu.
ALOCAREA DE SPATIU
DE MEMORARE IN C
Care sunt funciile care permit alocarea i dealocarea de
spaiu de memorie n C?
malloc()
free()
Tipuri de date
Clase
PROGRAM
Programare structurat
Exemple:
Universitate
Student
Profesor
Amfiteatru
Sal
etc
CLASE
Clasele n C++ pot fi definite folosind cuvintele cheie struct
sau class
Sintax Exemplu
Sintax Exemplu
Universitate ubb;
TDA numeVariabila;
Universitate *uvt = new Universitate;
EXERCIIU
BIBLIOTEC
Proprietile comune
SPECIFICATORI DE ACCES
DATE
FUNCII
CONSTRUCTORI
DESTRUCTORI
CONSTRUCTORI DE COPIERE