Documente Academic
Documente Profesional
Documente Cultură
Structura cursului
Modul de evaluare
100% proiect cu predare n ultima sptmn sau 50% aplicaie practic la examenul final
50% examen final (scris) - gril
+ bonusuri (de pn la + 1 punct la nota final) prezen/activitate laborator mini-proiecte complexe, etc. Bibliografie Cursuri i laboratoare postate pe grup Robin A. Reynolds-Haertle, POO cu MS Visual Basic.NET i MS Visual C#.NET, Ed. Teora
Structura cursului
Continut curs Programare Orientata spre Obiecte (in C++) 1. Introducere in abordarea orientata spre obiecte (OO)
Structura cursului
Cum ar putea arata o portiune de program scris in limbajul de nivel inalt C care sa realizeze sarcina specificata?
s = v1 + v2;
if (s<0) s = -s;
[s < 0]
else
s = -s
Ce sunt s, v1 si v2?
Cum ar putea arata o portiune de program scris in limbajul de asamblare care sa realizeze sarcina specificata?
7
tipar, sablon, tip = obiect determinat dup care se reproduc obiecte similare
mostr, exemplu = obiect ntrunind nsuirile tipice ale unei categorii, destinat pentru a fi reprodus
10
usureaza astfel accesul la esenta (pt. analiza, exploatare, etc.) printr-o forma de acces indirect la procesul/sistemul complex
acces indirect
Model (esenta)
Simplificare si analogie
11
a realitatii
in detrimentul celorlalte
12
metod care consta n reproducerea / reprezentarea simplificat a unui proces / sistem complex
sub forma unui proces/sistem similar sau analog care ofera accesul la esenta procesului/sistemului ceea ce insemna accesul indirect la proces/sistem
13
Esenial
(elemente importante, pastrate)
Detalii considerate nesemnificative (ignorate)
14
Teritoriul
Cum ar putea fi abstractizat teritoriul Portiune din realitate, imposibil de atins in totalitate, de cuprins
CONCRET
15
ABSTRACT (simplificat)
17
abstractizare
18
Abstractizare (simplificare)
Concentrare pe esential
19
20
concentrare pe ce e comun
21
perspective BMW M5
simplificate
Cod motor: S38B38 Cilindree: 3795 cm Accelerare de la 0 la 100 km/h: 5,9 sec. Viteza maxim: 250 km/h (limitat)
22
aceeasi entitate
23
CONCRET
25
CONCRET
26
CONCRET
Ierarhie de abstractizari
ABSTRACT
27
Entitate abstractizata
Masina de calcul condusa de coduri masina + Limbajul masina (limbajul masinii de calcul)
Model abstract
Masina de calcul programata la nivel de asamblare + Limbajul de asamblare (echivalent uman al limbajului masinii)
Model si mai abstract Masina de calcul programata la nivel inalt + Un limbaj de nivel inalt
CONCRET
Ierarhie de abstractizari
ABSTRACT
28
NIVEL INALT
Modelare si abstractizare
Abstractizarile formeaza ierarhii Ierarhiile de abstractizari grupeaza abstractizarile in niveluri de abstractizare (complexitate)
Ierarhie de abstractizari
31
32
Model abstract
Specificatie in pseudocod Pseudocod
Model abstract
Specificatie in pseudocod Pseudocod (forma intuitiva din punct de vedere uman)
CONCRET
Ierarhie de abstractizari
35
ABSTRACT
Folositin
Cat de abstract este Pentru masina Pentru om Extrem de mult Foarte mult
numeric Salturi conditionate, binar Iteratii catre etichete Salturi conditionate, alfaIteratii simple catre numeric etichete decizii alfa(simple+multiple), numeric Iteratii complexe (mai multe tipuri) textual, informal decizii (simple+multiple), iteratii
procedural (nivelinalt)
mult
mult
pseudocod
proiectarea programelor
Foarte mult
Destul de putin
36
37
38
regruparea
gruparea unor elemente intre care exista legaturi intr-o singura entitate noua care poate astfel Interfata sa fie referita printr-un singur nume
39
40
se vad doar intrarile, iesirile, si efectele colaterale (serviciile furnizate, interfetele oferite si necesare)
42
se vad doar intrarile, iesirile, si efectele colaterale (serviciile furnizate, interfetele oferite si necesare)
43
1. Permite imbunatatirea mecanismelor interne ale unei componente fara impact asupra lumii exterioare interiorul cutiei negre (BB) nefiind cunoscut in afara, poate fi inlocuit fara a conta pentru lumea exterioara (cat timp BB se comporta la fel) 2. Permite inlocuirea cutiei cu o alta care ofera aceeasi interfata publica, fara impact asupra lumii exterioare mai mult, intreaga cutie neagra poate fi inlocuita fara a conta pentru lumea exterioara (cat timp noua BB se comporta la fel)
44
impiedicand lumea exterioara sa aiba acces la interiorul cutiei, nu ii lasa pe utilizatori sa duca interiorul cutiei in stari invalide sau inconsistente
4. Reduce complexitatea perceputa de utilizatorii cutiei (programatorii care apeleaza la cutie doar prin intermediul interfetei) utilizatorii (programatorii) sunt eliberati de necesitatea cunoasterii detaliilor interne cutiei protejeaza utilizatorii de continutul cutiei
47
(int)
prenume:
...
(char) (char) (char) ... (char) (char) (char)
...
nume:
(char *)
...
(char *) ...
... (float)
49
14378
prenume:
(int)
...
'I' 'C' 's'
(char *)
...
...
sold:
(char *)
3300.00 (float)
...
50
char *prenume;
char *nume; float sold; }; struct Cont cn;
Doar regrupare!
51
char *nume;
float sold; }; struct Cont cn; struct Cont cn1;
(int)
struct Cont { int numarCont; char *prenume; char *nume; float sold; }; struct Cont cn;
...
nume:
(char *)
...
sold:
(Cont)
(float)
... ...
INCAPSULARE A INFORMATIILOR
53
14378
prenume:
(int)
...
'I' 'C' 's'
struct Cont { int numarCont; char *prenume; char *nume; float sold; }; struct Cont cn;
...
nume:
(char *)
...
...
sold:
(char *)
(Cont)
3300.00 (float)
...
54
int numarCont;
char *prenume; char *nume;
float sold;
} Cont;
Cont cn;
55
de implementarea ei
se regaseste implicit in incapsularea comportamentului in module
56
57
... {
INCAPSULARE A COMPORTAMENTULUI
// ... s = modululSumei(); // apel functie (delegare functionala) } Cum ar arata intreg programul rescris (refactored) in acest caz?
58
s = modululSumei();
// fara argumente
// fara parametri
// variabila locala
// declaratie functie incapsulare comportament int modululSumei(int a, int b) { // declaratii parametri (variabile) int s; // implementare ascunsa s = a + b; // acces la parametri
if (s<0) s = -s; return s; }
... { // ...
s = modululSumei(v1, v2); // pasare argumente (valori) } Cum ar arata programul rescris (refactored) in acest caz?
60
// 2 argumente
}
int modululSumei(int a, int b) { // 2 parametri int s; s = a + b; if (s<0) s = -s; return s; } // variabila locala
s = modululSumei(v1, v2);
v1 = 7;
cout<<modulul sumei <<v1<< cu <<v2<< este <<s<<endl; return 0; } int modululSumei(int a, int b) { // 2 parametri
int s; s = a + b; if (s<0) s = -s
return s; }
// variabila locala
s = modululSumei(v1, v2);
v1 = 7;
// al doilea acces la v1
cout<<modulul sumei <<v1<< cu <<v2<< este <<s<<endl; return 0; } int modululSumei(int a, int b) { // 2 parametri
int s; s = a + b;
if (s<0) s = -s return s; }
// variabila locala
// primul acces la v1
// Programul afiseaza: // modulul sumei lui 7 cu 5 este 8
63
65
66
{ int
variabila locala ascunsa
int s;
comportament ascuns
MODULARIZARE A COMPORTAMENTULUI
}
int modululSumei(int a, int b) { int s; s = a + b; if (s<0) s = -s; return s; }
67
cout<<
v1 v2 s
citiri
citiri
int v1 = 3, v2 = 5; int main() { int s; s = modululSumei(v1, v2); cout<<(|<<v1<<+<<v2<<|=<<s; return 0; } int modululSumei(int a, int b) { int s; s = a + b; if (s<0) s = -s; return s; }
68
cout<<
v1 v2 s
scriere (modificare) citiri
v1
v2
70
71
// BEGIN in Pascal
.. // aici v NU exista // declaratie tip
int v;
..
// aici v exista
}
..
// END in Pascal
// aici v NU exista
72
73
74
75
for
do
while
while
76
Programarea procedurala
Ce inseamna programarea procedurala? Ce denumiri alternative ale procedurilor exista?
77
Cum s-ar putea modulariza calculul modulului? Cum ar arata programul rescris (refactored) in acest caz?
80
81
{ int
comportament ascuns
MODUL PROCEDURAL
(int x)
parametru (intrare a black box)
82
Construcie a componentelor
Compunere (integrare)
83
Sub-funcie A1
Sub-funcie A2
Sub-funcie B1
Sub-funcie B2
84
Datele globale insa nu sunt protejate si pot deveni usor eronate sau incoerente modificari in datele globale se propaga in toate functiile care le folosesc modificari in functii care utilizeaza date globale se pot propaga in acele date
86
cout<<
v1 v2 s
scriere (modificare) citiri
v1
v2
88
(subdomeniu al realitatii)
si a fi apoi transformat intr-un element al unui program de calcul exemple: coada, lista, stiva, arbore, graf, etc. poate fi definit si ca entitate care consta dintr-o multime de valori si dintr-o colectie de operatii care prelucreaza acele valori
89
3245 0
10 7 -100 Integer
*
> etc.
90
push pop
peak etc. structura de stocare a valorilor
Stack
91
93
semnaturi operatii
Interfata (setul de semnaturi ale operatiilor) ideal este publica, vizibila, accesibila
Implementarea (setul de structuri de date interne si setul de implementari ale operatiilor) ideal este privata, ascunsa, inaccesibila
94
95
AE
96
o persoana numita Xulescu Ygrec AE informatii despre persoana numita Xulescu Ygrec AE o poza a lui Xulescu Ygrec
97
de exemplu
pornind de la perspectiva student a persoanei Xulescu Ygrec studentul Xulescu Ygrec AE AE inregistrari intr-o baza de date despre studentul Xulescu Ygrec
altele
98
99
obiectul software pXY Abstractizari orientate spre obiecte (AOO) AM Clasa Student pWZ
Perspectiva simplificata
AE (perspectiva asupra persoanelor) studentul Xulescu Ygrec studentul Wescu Zet studentul Abstractizare a tuturor persoanelor care sunt studenti (descriere a ceea ce este comun tuturor studentilor)
102
AE
AE
perspectiva
AE
vedere de ansamblu
AM Clasa Student
103
obiectul pXY AM
(AOO)
Multime de elemente
Clasa Student
Clasa Profesor
AM (AOO)
Multime de multimi
Superclasa Persoana
104
AE
AM
(AOO)
Conceptul de Student AM
Multime de elemente
Clasa Profesor
AE AM (AOO)
Multime de multimi
Superclasa Persoana
105
Entitate abstractizata
Masina de calcul condusa de coduri masina + Limbajul masina (limbajul masinii de calcul)
Model abstract
Masina de calcul programata la nivel de asamblare + Limbajul de asamblare (echivalent uman al limbajului masinii)
Ce putem pune
aici
CONCRET
Ierarhie de abstractizari
ABSTRACT
106
Entitate abstractizata
Masina de calcul condusa de coduri masina + Limbajul masina (limbajul masinii de calcul)
Model abstract
Masina de calcul programata la nivel de asamblare + Limbajul de asamblare (echivalent uman al limbajului masinii)
Model si mai abstract Masina de calcul programata la nivel inalt + Un limbaj de nivel inalt
CONCRET
Ierarhie de abstractizari
ABSTRACT
107
Entitate abstractizata
Entitate din lumea reala
CONCRET
108
CONCRET
109
Model abstract
Obiect software
Un limbaj orientat spre obiecte (forma intuitiva din punct de vedere uman)
CONCRET
Ierarhie de abstractizari
110
ABSTRACT
cod masina
asamblare
numeric Salturi conditionate, binar Iteratii catre etichete Salturi conditionate, alfaIteratii simple catre numeric etichete decizii alfa(simple+multiple), numeric Iteratii (mai multe tipuri) colaborarea alfaobiectelor plus decizii numeric si iteratii
Extrem de mult
Foarte mult
mult
mult
programarea OO
Foarte mult
Destul de putin
111