Post on 11-Sep-2019
Programare Orientata spre Obiecte
(Object-Oriented Programming)
a.k.a. Programare Obiect-Orientata
2011 - 2012
UPB - Facultatea ETTI - Curs POO - an II - seria E
Titular curs: Eduard-Cristian Popovici
Suport curs: http://discipline.elcom.pub.ro/POO-Java/
UPB - ETTI - Curs POO - an II - seria E 12.10.2011 1
1. Introducere in abordarea orientata spre obiecte (OO)
1.2. Evolutia catre abordarea OO
Structura cursului
UPB - ETTI - Curs POO - an II - seria E 2
UPB - ETTI - Curs POO - an II - seria E 3
Orientarea spre Obiecte (OO)
Evolutia catre OO
Masina programabila si codul masina
– curs CID si AMP (sem II)
1.2. Evolutia catre abordarea OO
– Care sunt subsistemele principale ale unui calculator?
– Ce este codul masina?
– Cui se adreseaza codul masina?
– Cum arata codul masina?
– Ce sarcini sunt tipice pentru codul masina?
– Care este complexitatea programarii in cod masina?
UPB - ETTI - Curs POO - an II - seria E 4
Masina programabila si codul masina
Arhitectura masinilor de calcul
– deriva din cea creata de matematicianul von Neumann (1903 – 1957)
– este un model de proiectare pentru
– masini de calcul digital cu programe stocate in memorie
CPU
PM
I/O
Procesor
Memorie principala
Porturi de intrare/iesire
1.2. Evolutia catre abordarea OO
stocare
prelucrare
intrari/iesiri
UPB - ETTI - Curs POO - an II - seria E 5
Arhitectura masinilor de calcul cuprinde
– procesor – CPU (central processing unit)
– care interpreteaza/executa instructiuni in cod binar (cod masina)
– memorie principala – PM (primary memory) sau MM (main memory)
– structura de stocare separata atat pentru instructiuni cat si pentru date
1.2. Evolutia catre abordarea OO
Masina programabila si codul masina
CPU
PM
I/O
Procesor
Memorie principala
Porturi de intrare/iesire
stocare
calcule
interfatare
control (Controller)
(View)
(Model data)
(Model logic or
Model algorithms)
UPB - ETTI - Curs POO - an II - seria E 6
Programele de calcul
specificatii ale comportamentelor
calculatoarelor
descriu raspunsurile la cereri din
exterior
sub forma de instructiuni intr-un
“limbaj” pe care “il poate intelege”
calculatorul
codul masina binar
direct executabil de catre
masina programabila sau
obtinute eventual prin conversie
din instructiuni scrise intr-un
limbaj pe care il poate intelege
mai bine programatorul
1.2. Evolutia catre abordarea OO
Masina programabila si codul masina
UPB - ETTI - Curs POO - an II - seria E 7
Codul (limbajul) masina
– folosit in masinile programabile pentru a
– specifica pasii (instructiuni, actiuni) realizati de masina de calcul
– este initial stocat in memoria principala (PM)
– este apoi incarcat (fetch), decodat si executat in unitatea de control a
procesorului (CPU), care este un fel de “creier” al intregii masini programabile
– CPU in acest caz este “capul” masinii programabile
– are format numeric digital (binar), in general multiplu de 8 biti (octeti =
Bytes) care face parte din specificatiile tehnice ale procesorului
– distinct pentru fiecare procesor si
– distinct pentru fiecare familie de procesoare
1.2. Evolutia catre abordarea OO
Masina programabila si codul masina
UPB - ETTI - Curs POO - an II - seria E 8
Modul de reprezentare a informatiilor digitale (binare) in masinile programabile
1.2. Evolutia catre abordarea OO
FA200:
Masina programabila si codul masina
Adresa numerica
(echivalenta cu 1111 1010 0010 0000 0000)
1001 1110
Locatie memorie
(spatiu alocat)
00000:
FFFFF:
8b = 1B (octet)
Dimensiunea
spatiului alocat
(4B = 32b)
1011 1010
1101 0110
0101 0010
5 cifre hexazecimal =
5 x 4 cifre binare =
20 biti
Valoare stocata
(continut locatie)
– in acest caz 9E BA D6 52
Toate informatiile
sunt reprezentate
complet numeric! ...
...
PM
UPB - ETTI - Curs POO - an II - seria E 9
Codul (limbajul) masina este in general format din actiuni cum ar fi
– copierea din memorie (PM) in registru intern
= citire din PM
– copierea din registru intern in memorie (PM)
= scriere in PM
– salturi conditionate la eticheta
– cod distinct pentru fiecare conditie
– iteratii la eticheta
– salturi la eticheta cu incrementarea / decrementarea unui contor
– operatii aritmetice sau logice
– realizate de unitatea aritmetica/logica (ALU)
asupra valorilor din registre interne ale CPU si/sau memorie (PM)
1.2. Evolutia catre abordarea OO
Masina programabila si codul masina
UPB - ETTI - Curs POO - an II - seria E 10
Orientarea spre Obiecte (OO)
Evolutia catre OO
Limbajele de asamblare
– curs CID si AMP (sem II)
1.2. Evolutia catre abordarea OO
– Ce este limbajul de asamblare?
– Cui se adreseaza limbajul de asamblare?
– Cum arata limbajul de asamblare?
– Ce sarcini sunt tipice pentru limbajul de asamblare?
– Care este complexitatea programarii in limbaj de asamblare?
– Cum se programeaza in limbaj de asamblare?
UPB - ETTI - Curs POO - an II - seria E 11
Limbajele de asamblare
1.2. Evolutia catre abordarea OO
Limbajul de asamblare
– folosit de programatorii masinilor de
calcul
– are format alfa-numeric
– fiecare instructiune in limbaj de
asamblare
– echivalenta ”unu-la-unu” cu o
instructiune cod masina binara
– ofera modalitati de structurare slaba
a programelor, bazate pe etichete
– salturi catre instructiuni
etichetate
– operatii aritmetice/logice intre
registre CPU si/sau locatii MP
UPB - ETTI - Curs POO - an II - seria E 12
Modul de reprezentare a informatiilor digitale (binare) la nivel de asamblare
1.2. Evolutia catre abordarea OO
v1: Nume variabila 1001 1110
Variabila
(locatie memorie)
00000: 8b = 1B (octet)
Dimensiunea
spatiului alocat
(4B = 32b)
1011 1010
1101 0110
0101 0010
Valoare stocata
(continut variabila) 9E BA D6 52
(in zecimal: 2663044690)
O parte dintre
informatii capata
nume / mnemonici
(abstracte pt. masina)
Limbajele de asamblare
(FA200)
Adresa numerica
corespunzatoare (echivalenta cu 1111 1010 0010 0000 0000)
1111 1010 0000 0000
0000 0010 0000 0000
Reg. DS
Reg. SI
Accesibila, de exemplu, prin perechi
de registre din procesor (I8086):
0000 +
...
...
FA000+
0200
abstractizare
UPB - ETTI - Curs POO - an II - seria E 13
Limbajul de asamblare este in general format din actiuni cum ar fi
– copierea din memorie (PM) in registru intern = citire din PM
instr1: MOV AX, pi ; copierea variabilei pi in registrul AX
– copierea din registru intern in memorie (PM) = scriere in PM
MOV suma, AX ; copierea registrului AX in variabila suma
– operatii realizate de unitatea aritmetica/logica (ALU) asupra valorilor din
registre interne si/sau memorie (PM)
ADD suma, CX ; adunarea la variabila suma a registrului AX
– salturi conditionate (cod distinct pentru fiecare conditie) la eticheta
JNC instr1 ; salt conditionat de CF==0 la eticheta instr1
1.2. Evolutia catre abordarea OO
Limbajele de asamblare
UPB - ETTI - Curs POO - an II - seria E 14
Orientarea spre Obiecte (OO)
Evolutia catre OO
Limbajele de nivel inalt (pre-OO)
– curs PC si SDA (anul 1)
1.2. Evolutia catre abordarea OO
– Ce este limbajul de nivel inalt?
– Cui se adreseaza limbajul de nivel inalt?
– Cum arata limbajul de nivel inalt?
– Ce sarcini sunt tipice pentru limbajul de nivel inalt?
– Care este complexitatea programarii in limbaj de nivel inalt?
– Cum se programeaza in limbaj de nivel inalt?
Curs 1 – sapt.1 /
Curs 2 – sapt.2
UPB - ETTI - Curs POO - an II - seria E 15
Limbajele de nivel inalt (pre-OO)
1.2. Evolutia catre abordarea OO
Limbajul de nivel inalt
– folosit de programatorii masinilor de
calcul
– are format alfa-numeric, iar fiecare
instructiune la nivel inalt
– este in general echivalenta cu o
secventa de instructiuni in limbaj de
asamblare (sau de cod masina binar)
– ofera o abstractizare puternica a
detaliilor masinii programabile
– spre deosebire de limbajele de
asamblare (de nivel redus)
– ceea ce le face mai usor de folosit
UPB - ETTI - Curs POO - an II - seria E 16
Modul de reprezentare a informatiilor digitale (binare) la nivel inalt
1.2. Evolutia catre abordarea OO
v1: Nume variabila 1001 1110 Dimensiunea
spatiului alocat
(4B = 32b)
1011 1010
1101 0110
0101 0010
Apar abstractizari
de nivel inalt
cum sunt pointerii
(FA200)
Adresa numerica
corespunzatoare
Accesibila prin
variabile pointer
...
...
0000 0000
1111 1010
...
...
Limbajele de nivel inalt (pre-OO)
p1:
Variabila (locatie)
Valoare (continut)
Variabila pointer (catre variabila v1)
Valoare stocata FA 00, 02 00
asamblare
si nivel inalt
doar
nivel
inalt
UPB - ETTI - Curs POO - an II - seria E 17
Modul de reprezentare a informatiilor digitale (binare) la nivel inalt
Ce inseamna in C: int v1;
v1 = 2663044690;
int *p1;
p1 = &v1; ?
1.2. Evolutia catre abordarea OO
v1: Nume variabila 1001 1110 Dimensiunea
spatiului alocat
(4B = 32b)
1011 1010
1101 0110
0101 0010
(FA200)
Adresa numerica
corespunzatoare
Accesibila prin
variabile pointer
...
...
0000 0000
1111 1010
...
...
Limbajele de nivel inalt (pre-OO)
p1:
Variabila (locatie)
Valoare (continut)
Variabila pointer (catre variabila v1)
Valoare stocata FA 00, 02 00
UPB - ETTI - Curs POO - an II - seria E 18
Modul de reprezentare a informatiilor digitale (binare) la nivel inalt
Tipul de date
– descriere a unei multimi de entitati de date asemanatoare numite variabile
– specifica structura variabilelor (dimensiunea si forma spatiului alocat)
– domeniul de definitie al valorilor lor (gama valorilor, formatul lor literal)
– conversiile catre alte tipuri, operatorii asociati / permisi
1.2. Evolutia catre abordarea OO
v1: Nume variabila
Variabila (locatie)
(FA200)
Adresa numerica
corespunzatoare
...
...
Limbajele de nivel inalt (pre-OO)
int v1; // declara variabila v1 de tip “int”
Dimensiunea
spatiului alocat
(4B = 32b)
Abstractizari
de nivel
inalt noi ca
tipul de date
UPB - ETTI - Curs POO - an II - seria E 19
Modul de reprezentare a informatiilor digitale (binare) la nivel inalt
1.2. Evolutia catre abordarea OO
v1: Nume variabila 1001 1110
Variabila (locatie)
Dimensiunea
spatiului alocat 1011 1010
1101 0110
0101 0010
Valoare (continut)
(FA200)
Adresa numerica
corespunzatoare
...
...
Limbajele de nivel inalt (pre-OO)
int v1; // declara variabila v1 de tip “int”
v1 = 2663044690; // atribuie o valoare variabilei v1
UPB - ETTI - Curs POO - an II - seria E 20
Modul de reprezentare a informatiilor digitale (binare) la nivel inalt
1.2. Evolutia catre abordarea OO
v1: Nume variabila 1001 1110
Variabila (locatie)
Dimensiunea
spatiului alocat 1011 1010
1101 0110
0101 0010
Valoare (continut)
(FA200)
Adresa numerica
corespunzatoare
...
...
...
...
Limbajele de nivel inalt (pre-OO)
p1:
Variabila pointer
catre variabile de
tipul lui v1 int v1;
v1 = 2663044690;
int *p1; // declara p1 de tip “pointer catre”
// variabile de tip “int”
UPB - ETTI - Curs POO - an II - seria E 21
Modul de reprezentare a informatiilor digitale (binare) la nivel inalt
1.2. Evolutia catre abordarea OO
v1: Nume variabila 1001 1110
Variabila (locatie)
Dimensiunea
spatiului alocat 1011 1010
1101 0110
0101 0010
Valoare (continut)
(FA200)
Adresa numerica
corespunzatoare
Accesibila prin
variabile pointer
...
...
0000 0000
1111 1010
...
...
Limbajele de nivel inalt (pre-OO)
int v1;
v1 = 2663044690;
int *p1; // “pointer catre” variabile tip “int”
p1 = &v1; // atribuie variabilei p1 valoarea adresei v1
Variabila pointer (catre variabila v1)
Valoare stocata FA 00, 02 00
p1:
UPB - ETTI - Curs POO - an II - seria E 22
Limbajele de nivel inalt (pre-OO)
Modul de prelucrare a informatiilor digitale (binare) la nivel inalt
Exemplu de specificatie pseudocod pentru “calculul modulului sumei a doua
valori”
calculul sumei a doua valori
daca [suma este negativa]
negarea sumei
Cum ar putea arata o portiune de program scris in limbajul de nivel inalt C care
sa realizeze sarcina specificata?
1.2. Evolutia catre abordarea OO
s = v1 + v2
s = -s
[s < 0] else
Diagrama UML
de activitati
(diagrama
de flux al
programului)
echivalenta
UPB - ETTI - Curs POO - an II - seria E 23
Limbajele de nivel inalt (pre-OO)
Posibila portiune de program C pentru “calculul modulului sumei a doua
valori”
// in C++ sau Java
// codul e identic!
s = v1 + v2;
if (s<0)
s = -s;
Ce sunt s, v1 si v2?
Ce lipseste din program in ceea ce le priveste?
Cum ar putea arata un program C complet?
1.2. Evolutia catre abordarea OO
s = v1 + v2
s = -s
[s < 0] else
UPB - ETTI - Curs POO - an II - seria E 24
Limbajele de nivel inalt (pre-OO)
Posibil program C complet pentru “calculul modulului sumei a doua valori”
#include <stdio.h>
int v1 = 3; // variabile globale
int v2 = 5;
int main(void) { // functie principala, punct intrare progam
int s; // variabila locala
s = v1 + v2;
if (s<0)
s = -s;
printf(“modulul sumei %d cu %d este %d\n", v1, v2, s);
return 0;
}
Cum ar putea arata o portiune de program scris in limbajul de asamblare
care sa realizeze sarcina specificata?
1.2. Evolutia catre abordarea OO
UPB - ETTI - Curs POO - an II - seria E 25
Limbajele de nivel inalt (pre-OO)
Posibila portiune de program scris in limbajul de asamblare al procesorului
Intel8086 pentru “calculul modulului sumei a doua valori”
MOV AX, v1 ; copiere din memorie in registru
ADD AX, v2 ; adunare la valoarea din registru
JGE eticheta1 ; salt conditionat de [AX >= 0]
NEG AX ; negare aritmetica (schimbare semn)
eticheta1: MOV s, AX ; copiere din registru in memorie
Cat de usor sunt de inteles intuitiv mnemonicele instructiunilor?
Ce stiti despre salturile la etichete (instructiunile de tip “go to”)?
1.2. Evolutia catre abordarea OO
UPB - ETTI - Curs POO - an II - seria E 26
Orientarea spre Obiecte (OO)
Evolutia catre OO
Modelare si abstractizare (I)
1.2. Evolutia catre abordarea OO
– Ce inseamna model, modelare, abstractizare?
– Unde pot fi intalnite modelele, modelarea, abstractizarea?
– Ce roluri pot avea modelele, modelarea, abstractizarea?
– Abstractizarea unui teritoriu
– Abstractizarea unui calculator
– Abstractizarea informatica a realitatii
UPB - ETTI - Curs POO - an II - seria E 27
Model (definitii)
♦ machetă = obiect cu
dimensiuni reduse care
reprezintă un obiect real
♦ tipar, sablon, tip = obiect
determinat după care se
reproduc obiecte similare
♦ mostră, exemplu = obiect
întrunind însușirile tipice ale
unei categorii, destinat pentru a
fi reprodus
1.2. Evolutia catre abordarea OO
Modelare si abstractizare
UPB - ETTI - Curs POO - an II - seria E 28
Model (sensul informatic)
♦ reprezentare simplificată a unui proces sau a unui sistem complex, care
♦ ofera o analogie cu procesul/sistemul complex
♦ cuprinde elementele esentiale ale procesului/sistemului complex
♦ usureaza astfel accesul la esenta (pt. analiza, exploatare, etc.)
♦ printr-o forma de acces indirect la procesul/sistemul complex
1.2. Evolutia catre abordarea OO
Modelare si abstractizare
Proces / Sistem complex
Model (esenta)
acces indirect Simplificare
si analogie
UPB - ETTI - Curs POO - an II - seria E 29
Modelul
1.2. Evolutia catre abordarea OO
Modelare si abstractizare
Un model expandeaza o portiune
a
realitatii
in detrimentul celorlalte
UPB - ETTI - Curs POO - an II - seria E 30
Modelarea
– construire de modele
– 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
1.2. Evolutia catre abordarea OO
Modelare si abstractizare
De ce constructia unui model este ilustrata ca “abstractizare”?
UPB - ETTI - Curs POO - an II - seria E 31
Abstractizarea (abstracția)
– operație a gândirii prin care
– se desprind și se rețin unele elemente
(caracteristici și relații) considerate esențiale
(fundamentale, generale)
– ale unei entitati analizate
– sau comune unei multimi de entitati
– si se ignora (vremelnic) elementele considerate
neesențiale
– elementele considerate esentiale
– diferentiaza entitatea sau multimea analizata de
alte entitati sau multimi de entitati
1.2. Evolutia catre abordarea OO
Modelare si abstractizare
Esențial (elemente
importante,
pastrate)
Detalii considerate
nesemnificative
(ignorate)
UPB - ETTI - Curs POO - an II - seria E 32
Exemplu de abstractizare
1.2. Evolutia catre abordarea OO
Modelare si abstractizare
Entitate modelata
Teritoriul
Portiune din realitate,
imposibil de atins in
totalitate, de cuprins
CONCRET
Cum ar putea fi
abstractizat
teritoriul?
UPB - ETTI - Curs POO - an II - seria E 33
Exemplu de abstractizare (teritoriul si harta)
1.2. Evolutia catre abordarea OO
Modelare si abstractizare
Entitate modelata
Teritoriul O harta detaliata a
teritoriului
Portiune din realitate,
imposibil de atins in
totalitate, de cuprins
Model abstract
Simplificare, reducere
a realitatii (mai usor de
gestionat si modificat)
ABSTRACT CONCRET
(complex) (simplificat)
Cum ar putea fi
abstractizata
harta?
UPB - ETTI - Curs POO - an II - seria E 34
Exemplu de abstractizare (teritoriul si harta)
1.2. Evolutia catre abordarea OO
Modelare si abstractizare
Entitate modelata
Teritoriul O harta detaliata a
teritoriului
Portiune din realitate,
imposibil de atins in
totalitate, de cuprins
O harta a teritoriului
mai putin detaliata
Model abstract
Simplificare, reducere
a realitatii (mai usor de
gestionat si modificat)
Model si mai abstract
Simplificare, reducere
suplimentara
Ierarhie de abstractizari ABSTRACT CONCRET
(complex) (simplificat)
UPB - ETTI - Curs POO - an II - seria E 35
Abstractizarea (abstractia)
– importanta in rezolvarea problemelor (problem solving) deoarece
– inseamna concentrarea pe detaliile esentiale in rezolvarea problemelor
– in timp ce sunt ignorate celelalte, avand ca efecte
– simplificarea problemei si
– concentrarea atentiei pe aspectele problemei implicate in solutie
1.2. Evolutia catre abordarea OO
Modelare si abstractizare
y2 = 1 - x
Problema abstractizata
Analiza (conceptualizare)
abstractizare
daca patratul unui numar este egal cu diferenta dintre 1 si un al doilea numar, sa se afle cum depinde primul numar de al doilea
Problema reala
Enunt
UPB - ETTI - Curs POO - an II - seria E 36
Abstractizarea
– este o forma de management
– al complexitatii (in crestere!)
– avand ca scop concentrarea pe esential
– si ca efect implicit simplificarea
1.2. Evolutia catre abordarea OO
Modelare si abstractizare
Proces / Sistem complex
Abstractizare (simplificare)
Concentrare pe esential
UPB - ETTI - Curs POO - an II - seria E 37
Abstractizarea
– este o forma de management
– al schimbarii (permanent necesara!)
– transforma in element al modelului
– ce e esential si astfel stabil in timp
– si astfel separa – ce e stabil in timp (esentialul)
– de ce e variabil in timp / temporar (alte detalii)
– ceea ce usureaza schimbarea
– care va avea loc asupra detaliilor neesentiale
1.2. Evolutia catre abordarea OO
Modelare si abstractizare
UPB - ETTI - Curs POO - an II - seria E 38
Abstractizarea
– forma de modelare aplicabila
– fie unei entitati
– fie unei multimi de entitati
1.2. Evolutia catre abordarea OO
Modelare si abstractizare
Masini
(categorie,
tip, clasa)
concentrare pe
esential
concentrare pe
ce e comun
modalitati diferite
de simplificare
UPB - ETTI - Curs POO - an II - seria E 39
Abstractizarea
– “neglijarea unor detalii” inseamna o forma de aproximare a realitatii
– “concentrarea pe esential” face abstractizarea un concept relativ
– deoarece depinde de factorii care pot dicta ceea ce este esential
– contextul abstractizarii si
– interesul celui care abstractizeaza!
1.2. Evolutia catre abordarea OO
Modelare si abstractizare
Cod motor: S38B38
Cilindree: 3795 cm³
Accelerare de la 0 la 100 km/h: 5,9 sec.
Viteza maximă: 250 km/h (limitată)
BMW M5
perspective
simplificate
aceeasi
entitate
Modele
mentale diferite
UPB - ETTI - Curs POO - an II - seria E 40
Abstractizarea e relativa – depinde de cine decide ce e esential (persoana care
abstractizeaza)
1.2. Evolutia catre abordarea OO
Modelare si abstractizare
Diferite
perspective
(puncte de
vedere)
UPB - ETTI - Curs POO - an II - seria E 41
Modelare vs Abstractizare
– modelarea insista pe
– usurarea accesului indirect la procesul/sistemul tinta
– prin crearea unui model analog (similar), simplificat si esential
– abstractizarea insista pe
– simplificare prin identificarea si pastrarea elementelor considerate
esential
– si neglijarea detaliilor considerate neesentiale
– conducand la crearea unui model esential si simplificat
Altfel spus
– modelarea insista pe analogie si acces indirect la o forma simplificata
– abstractizarea insista pe esential si simplificare
1.2. Evolutia catre abordarea OO
Modelare si abstractizare
UPB - ETTI - Curs POO - an II - seria E 42
Exemplu de abstractizare (masina de calcul si limbajele)
1.2. Evolutia catre abordarea OO
Modelare si abstractizare
Entitate
abstractizata
Masina de calcul
condusa de
coduri masina
+
Limbajul
masina
(limbajul masinii
de calcul)
CONCRET
Cum poate fi abstractizata
masina de calcul?
UPB - ETTI - Curs POO - an II - seria E 43
1.2. Evolutia catre abordarea OO
Modelare si abstractizare
Entitate
abstractizata
Masina de calcul
condusa de
coduri masina
+
Model
abstract
Limbajul
masina
Limbajul de
asamblare
Masina de calcul
programata la nivel
de asamblare
+
(limbajul masinii
de calcul)
(echivalent uman al
limbajului masinii)
Exemplu de abstractizare (masina de calcul si limbajele)
CONCRET
?
UPB - ETTI - Curs POO - an II - seria E 44
1.2. Evolutia catre abordarea OO
Modelare si abstractizare
Entitate
abstractizata
Masina de calcul
condusa de
coduri masina
+
Model
abstract Model si mai
abstract
Limbajul
masina
Limbajul de
asamblare
Masina de calcul
programata la nivel
de asamblare
+
Un limbaj de
nivel inalt
Masina de calcul
programata la nivel
inalt
+
(limbajul masinii
de calcul)
Ierarhie de abstractizari
(echivalent uman al
limbajului masinii)
(forma concentrata a
limbajului masinii,
apropiata de cea umana)
ABSTRACT CONCRET
Exemplu de abstractizare (masina de calcul si limbajele)
?
UPB - ETTI - Curs POO - an II - seria E 45
1.2. Evolutia catre abordarea OO
Modelare si abstractizare
Entitate
abstractizata
Masina de calcul
condusa de
coduri masina
+
Model
abstract Model si mai
abstract
Limbajul
masina
Limbajul de
asamblare
Masina de calcul
programata la nivel
de asamblare
+
Un limbaj de
nivel inalt
Masina de calcul
programata la nivel
inalt
+
Modelul cel
mai abstract
(limbajul masinii
de calcul)
Ierarhie de abstractizari
(echivalent uman al
limbajului masinii)
(forma concentrata a
limbajului masinii,
apropiata de cea umana)
(forma intuitiva din
punct de vedere
uman)
ABSTRACT CONCRET
Pseudocod,
etc.
Proiectarea
programarii masinii
de calcul
+
Exemplu de abstractizare (masina de calcul si limbajele)
46
Abstractizarile
formeaza ierarhii
Ierarhiile de
abstractizari
– grupeaza
abstractizarile in
niveluri de
abstractizare
(complexitate)
Modelare si
abstractizare
NIVEL REDUS
(mai multe detalii,
mai apropiat de
concret,
complex)
NIVEL INALT
(mai putine detalii,
mai abstract,
simplu)
Ierarhie de
abstractizari
UPB - ETTI - Curs POO - an II - seria E 47
Exemplu de abstractizare (entitatile lumii reale, programele si limbajele)
1.2. Evolutia catre abordarea OO
Modelare si abstractizare
Entitate
abstractizata
Entitate
din lumea
reala
Cum poate fi abstractizata
informatic realitatea? “calculul
modulului
sumei a
doua
valori”
UPB - ETTI - Curs POO - an II - seria E 48
1.2. Evolutia catre abordarea OO
Modelare si abstractizare
Entitate
abstractizata
Entitate
din lumea
reala
Model
abstract
Exemplu de abstractizare (entitatile lumii reale, programele si limbajele)
Specificatie
in
pseudocod
Pseudocod
“calculul
modulului
sumei a
doua
valori”
calculul sumei a 2 valori
daca [suma e negativa]
negarea sumei
?
UPB - ETTI - Curs POO - an II - seria E 49
1.2. Evolutia catre abordarea OO
Modelare si abstractizare
Entitate
abstractizata
Entitate
din lumea
reala
Model
abstract
Model si mai
abstract
Specificatie
in
pseudocod
Un limbaj de
nivel inalt
Program de
nivel inalt
Pseudocod
Exemplu de abstractizare (entitatile lumii reale, programele si limbajele)
“calculul
modulului
sumei a
doua
valori”
calculul sumei a 2 valori
daca [suma e negativa]
negarea sumei
s = v1 + v2;
if (s<0)
s = -s;
?
UPB - ETTI - Curs POO - an II - seria E 50
1.2. Evolutia catre abordarea OO
Modelare si abstractizare
Entitate
abstractizata
Entitate
din lumea
reala
Model
abstract
Model si mai
abstract
Limbajul de
asamblare
Un limbaj de
nivel inalt
Program de
nivel inalt
Program la
nivel de
asamblare
Model si mai
abstract
Exemplu de abstractizare (entitatile lumii reale, programele si limbajele)
Specificatie
in
pseudocod
Pseudocod
“calculul
modulului
sumei a
doua
valori”
calculul sumei a 2 valori
daca [suma e negativa]
negarea sumei
s = v1 + v2;
if (s<0)
s = -s;
MOV AX, v1
ADD AX, v2
JGE et1
NEG AX
et1: MOV s, AX
?
UPB - ETTI - Curs POO - an II - seria E 51
1.2. Evolutia catre abordarea OO
Modelare si abstractizare
Entitate
abstractizata
Entitate
din lumea
reala
Model
abstract
Model si mai
abstract
Limbajul de
asamblare
Un limbaj de
nivel inalt
Program de
nivel inalt
Modelul cel
mai abstract
Program la
nivel de
asamblare
Model si mai
abstract
Limbajul
masina
Cod
masina
Exemplu de abstractizare (entitatile lumii reale, programele si limbajele)
Specificatie
in
pseudocod
Pseudocod
“calculul
modulului
sumei a
doua
valori”
calculul sumei a 2 valori
daca [suma e negativa]
negarea sumei
s = v1 + v2;
if (s<0)
s = -s;
MOV AX, v1
ADD AX, v2
JGE et1
NEG AX
et1: MOV s, AX
01000101
11000010
01000101
01110010
01010001
01010101
01111010
10010111
UPB - ETTI - Curs POO - an II - seria E 52
1.2. Evolutia catre abordarea OO
Modelare si abstractizare
Entitate
abstractizata
Entitate
din lumea
reala
(limbajul
masinii de
calcul)
Model
abstract
Model si mai
abstract
Limbajul de
asamblare
(echivalent
uman al
limbajului
masinii)
Un limbaj de
nivel inalt
Program de
nivel inalt
(forma concentrata,
apropiata de cea
umana, a limbajului
masinii)
Modelul cel
mai abstract
Program la
nivel de
asamblare
(forma intuitiva
din punct de
vedere uman)
Model si mai
abstract
Limbajul
masina
Cod
masina
Ierarhie de abstractizari ABSTRACT CONCRET
Exemplu de abstractizare (entitatile lumii reale, programele si limbajele)
Specificatie
in
pseudocod
Pseudocod
UPB - ETTI - Curs POO - an II - seria E 53
Recapitulare a exemplelor de abstractizare care reflecta relativitatea conceptului
1.2. Evolutia catre abordarea OO
Modelare si abstractizare
Limbaj de
programare Format
Controlul executiei
realizat prin Folosit in
Cat de abstract este
pentru masina pentru om
cod
masina
numeric
binar
salturi conditionate,
iteratii catre etichete
masina de
calcul deloc
extrem de
mult
asamblare alfa-
numeric
salturi conditionate,
iteratii simplecatre
etichete
programarea
la nivel
asamblare
destul de mult foarte mult
procedural
(nivel inalt)
alfa-
numeric
decizii
(simple+multiple),
iteratii complexe (mai
multe tipuri)
programarea
la nivel inalt mult mult
pseudocod textual,
informal
decizii
(simple+multiple),
iteratii
proiectarea
programelor foarte mult
destul de
putin
UPB - ETTI - Curs POO - an II - seria E 54
Orientarea spre Obiecte (OO)
Evolutia catre OO
Incapsulare, modularizare si ascunderea detaliilor
1.2. Evolutia catre abordarea OO
– Ce inseamna incapsulare, modularizare, ascundere a detaliilor?
– Unde pot fi intalnite incapsularea, modularizarea, ascunderea detaliilor?
– Ce roluri pot avea incapsularea, modularizarea, ascunderea detaliilor?
– Exemple de incapsulare, in lumea reala si de tip informatic
– Exemple de modularizare, in lumea reala si de tip informatic
– Exemple de ascundere a detaliilor, in lumea reala si de tip informatic
Incapsulare, modularizare si ascunderea detaliilor
UPB - ETTI - Curs POO - an II - seria E 55
1.2. Evolutia catre abordarea OO
Incapsularea are in teoria programarii doua sensuri
– regruparea
– gruparea unor elemente intre care exista legaturi
– intr-o singura entitate noua care poate astfel
sa fie referita printr-un singur nume
– limitarea accesului sau ascunderea detaliilor (details hiding)
– includerea unui lucru intr-un alt lucru
– astfel incat lucrul inclus sa fie privat
(inaccesibil, invizibil)
Incapsulare, modularizare si ascunderea detaliilor
UPB - ETTI - Curs POO - an II - seria E 56
1.2. Evolutia catre abordarea OO
Incapsularea are in teoria programarii doua sensuri
– regruparea
– gruparea unor elemente intre care exista legaturi
– intr-o singura entitate noua care poate astfel
sa fie referita printr-un singur nume
– limitarea accesului sau ascunderea detaliilor (details hiding)
– includerea unui lucru intr-un alt lucru
– astfel incat lucrul inclus sa fie privat (inaccesibil, invizibil)
Inside the box
Interfata
Incapsulare, modularizare si ascunderea detaliilor
UPB - ETTI - Curs POO - an II - seria E 57
1.2. Evolutia catre abordarea OO
Incapsularea ca regrupare si limitare a accesului (ascundere a detaliilor)
ascunderea
detaliilor
limitarea
accesului
regruparea
Inside
the box Inside
the box
Interfata
Incapsulare, modularizare si ascunderea detaliilor
UPB - ETTI - Curs POO - an II - seria E 58
1.2. Evolutia catre abordarea OO
Incapsularea rezultatului unei abstractizari
– este o combinatie a celor doua sensuri ale incapsularii
– este procesul de regrupare a elementelor (detaliilor esentiale) unei
abstractii intr-o entitate noua cu nume propriu, in urma caruia
– se separa interfata contractuala a abstractiei
– detaliile necesare interactiunilor externe
– care trebuie sa fie publice, accesibile, vizibile
– de implementarea sa
– detaliile necesare reprezentarii interne
– care trebuie sa fie private, inaccesibile, ascunse
– rezultatul fiind o entitate de tip black box, concept aplicabil
– modulelor functionale, obiectelor si componentelor software
Inside the box
Interfata
1.1. Obiectul cursului si relatia cu alte cursuri
UPB - ETTI - Curs POO - an II - seria E 59
Un program / o componenta a unui program ca servicii oferite de un black box
Black Box
(abstractizare, incapsulare cu
ascunderea detaliilor)
“se vad” doar intrarile, iesirile,
si efectele colaterale
(serviciile furnizate, interfetele
oferite si necesare)
Utilizator
(uman / alta
componenta)
Incapsulare, modularizare si ascunderea detaliilor
1.1. Obiectul cursului si relatia cu alte cursuri
UPB - ETTI - Curs POO - an II - seria E 60
Servicii oferite de un black box
Black Box
(incapsulare,
abstractizare,
ascundere a
detaliilor)
“se vad” doar intrarile, iesirile,
si efectele colaterale
(serviciile furnizate, interfetele
oferite si necesare)
Incapsulare, modularizare si ascunderea detaliilor
Interfetele oferite
(prin ele se realizeaza
interactiunea,
serviciile)
UPB - ETTI - Curs POO - an II - seria E 61
1.2. Evolutia catre abordarea OO
Incapsulare, modularizare si ascunderea detaliilor
Beneficiile incapsularii black box
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)
Inlocuirea
interiorului “in
spatele scenei”
Inlocuirea
cutiei “in
spatele
scenei”
UPB - ETTI - Curs POO - an II - seria E 62
1.2. Evolutia catre abordarea OO
Incapsulare, modularizare si ascunderea detaliilor
Beneficiile incapsularii black box
3. Protejeaza integritatea interiorului cutiei
– 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
5. Reduce complexitatea sistemului marind astfel robustetea lui
– limitarea interdependentelor intre lumea exterioara si interior (doar la
interfata) reduce complexitatea potentiala a ansamblului (cutie + exterior)
UPB - ETTI - Curs POO - an II - seria E 63
1.2. Evolutia catre abordarea OO
Incapsularea informatica are 2 aspecte!
1. Incapsularea informatiilor (datelor)
– regruparea elementelor de date in
– structuri /tipuri de date complexe (structuri, enumerari, etc.)
– e implicit FARA ascundere a detaliilor
– informatiile componente sunt accesibile
2. Incapsularea comportamentului
– regruparea elementelor de comportament in
– module de comportament (proceduri, functii, operatii, metode)
– e implicit CU ascundere a detaliilor
– implementarea comportamentului e ascunsa
Incapsulare, modularizare si ascunderea detaliilor
UPB - ETTI - Curs POO - an II - seria E 64
1.2. Evolutia catre abordarea OO
Incapsularea informatiilor (datelor)
– regruparea unor elemente de date simple
– in structuri / tipuri de date complexe
– numele structurii / tipului fiind ”interfata” care permite accesul
– FARA ascundere a detaliilor
– informatiile componente fiind “detaliile interne” accesibile
– rezulta tipuri de date noi din cele fundamentale / elementare / primitive
– fie predefinite in cadrul limbajului (eventual parte a unor biblioteci)
– fie definite de programator
Incapsulare, modularizare si ascunderea detaliilor
UPB - ETTI - Curs POO - an II - seria E 65
Incapsularea informatiilor (datelor) in C
Pornind de la portiunea de program urmatoare
int numarCont;
char *prenume;
char *nume;
float sold;
numarCont = 14378;
prenume = "Ics";
nume = "Igrec";
sold = 3300.00;
Cum s-ar putea incapsula cele 4 elemente de date?
Cum ar arata programul rescris (refactored) in acest caz?
1.2. Evolutia catre abordarea OO
Incapsulare, modularizare si ascunderea detaliilor
UPB - ETTI - Curs POO - an II - seria E 66
Incapsularea informatiilor (datelor) in C
int numarCont;
char *prenume;
char *nume;
float sold;
1.2. Evolutia catre abordarea OO
Incapsulare, modularizare si ascunderea detaliilor
numarCont:
...
prenume:
...
nume:
sold:
(int)
(float)
(char *)
(char *)
(char) (char)
...
(char)
...
(char) (char)
(char)
...
...
...
Primele 4
linii de cod
(cele 4
elemente de
incapsulat)
UPB - ETTI - Curs POO - an II - seria E 67
Incapsularea informatiilor (datelor) in C
int numarCont;
char *prenume;
char *nume;
float sold;
numarCont = 14378;
prenume = "Ics";
nume = "Igrec";
sold = 3300.00;
1.2. Evolutia catre abordarea OO
Incapsulare, modularizare si ascunderea detaliilor
numarCont:
...
prenume:
...
nume:
sold:
(int)
(float)
(char *)
(char *)
(char) (char) (char)
(char) (char)
(char)
...
14378
3300.00
'I'
'C'
's'
(char)
(char)
'I'
'g'
'r'
'e'
'c'
...
...
Toate cele 8
linii de cod
UPB - ETTI - Curs POO - an II - seria E 68
Posibila incapsulare a informatiilor (datelor) in C
struct Cont { // tip de date NOU cu nume (“Cont”)
int numarCont; // camp de tip int (intreg)
char *prenume; // camp de tip pointer la caractere
char *nume; // camp de tip pointer la caractere
float sold; // camp de tip float (real)
};
struct Cont cn; // declaratia (tipului) variabilei cn
1.2. Evolutia catre abordarea OO
Incapsulare, modularizare si ascunderea detaliilor
Incapsularea in acest caz este FARA
ascundere a detaliilor (informatiilor, datelor)! Doar regrupare!
UPB - ETTI - Curs POO - an II - seria E 69
Posibila incapsulare a informatiilor (datelor) in C
struct Cont { // tip de date NOU cu nume (“Cont”)
int numarCont; // camp de tip int (intreg)
char *prenume; // camp de tip pointer la caractere
char *nume; // camp de tip pointer la caractere
float sold; // camp de tip float (real)
};
struct Cont cn; // declaratia (tipului) variabilei cn
struct Cont cn1; // reutilizarea numelui tipului de date
1.2. Evolutia catre abordarea OO
Incapsulare, modularizare si ascunderea detaliilor
Incapsularea permite insa
reutilizarea tipului nou de date
UPB - ETTI - Curs POO - an II - seria E 70
Posibila incapsulare a informatiilor (datelor) in C
struct Cont {
int numarCont;
char *prenume;
char *nume;
float sold;
};
struct Cont cn;
1.2. Evolutia catre abordarea OO
Incapsulare, modularizare si ascunderea detaliilor
cn = cn.numarCont:
(echivalente ale
aceleiasi adrese)
...
prenume:
...
nume:
sold:
(int)
(float)
(char *)
(char *)
(char) (char)
...
(char)
...
(char) (char)
(char)
...
...
...
Primele 4
linii de cod
(Cont)
INCAPSULARE A
INFORMATIILOR
UPB - ETTI - Curs POO - an II - seria E 71
Posibila incapsulare a informatiilor (datelor) in C
struct Cont {
int numarCont;
char *prenume;
char *nume;
float sold;
};
struct Cont cn;
cn.numarCont = 14378;
cn.prenume = "Ics";
cn.nume = "Igrec";
cn.sold = 3300.00;
1.2. Evolutia catre abordarea OO
Incapsulare, modularizare si ascunderea detaliilor
cn = cn.numarCont:
...
prenume:
...
nume:
sold:
(int)
(float)
(char *)
(char *)
14378
3300.00
(char) (char) (char)
(char) (char)
(char)
...
'I'
'C'
's'
(char)
(char)
'I'
'g'
'r'
'e'
'c'
...
...
(Cont)
Programul
rescris
(refactored)
UPB - ETTI - Curs POO - an II - seria E 72
Posibila simplificare a utilizarii incapsularii informatiilor (datelor) in C
typedef struct { // tip de date NOU
int numarCont; // camp de tip int (intreg)
char *prenume; // camp de tip pointer la caractere
char *nume; // camp de tip pointer la caractere
float sold; // camp de tip float (real)
} Cont; // nume dat tipului de date NOU
Cont cn; // declaratia tipului variabilei cn
// intr-o forma simplificata
1.2. Evolutia catre abordarea OO
Incapsulare, modularizare si ascunderea detaliilor
UPB - ETTI - Curs POO - an II - seria E 73
1.2. Evolutia catre abordarea OO
Ascunderea detaliilor poate 2 aspecte!
1. Ascunderea informatiilor (datelor)
– reprezinta ascunderea detaliilor necesare reprezentarii interne a
structurilor de date
– NU se regaseste implicit in incapsularea informatiilor (datelor)
2. Ascunderea implementarii
– reprezinta ascunderea detaliilor necesare reprezentarii interne ale
unei abstractizari
– rezultate in urma separarii interfetei necesara interactiunilor
– care trebuie sa fie publica, accesibila, vizibila
– de implementarea ei
– se regaseste implicit in incapsularea comportamentului in module
Incapsulare, modularizare si ascunderea detaliilor
UPB - ETTI - Curs POO - an II - seria E 74
Incapsularea comportamentului in C
Pornind de la portiunea de program pentru “calculul modulului sumei a doua
valori”
s = v1 + v2; // suma
if (s<0) // structura decizie
s = -s; // modul
Cum s-ar putea incapsula acest comportament (intr-un modul)?
1.2. Evolutia catre abordarea OO
s = v1 + v2
s = -s
[s < 0] else
Incapsulare, modularizare si ascunderea detaliilor
UPB - ETTI - Curs POO - an II - seria E 75
Posibila incapsulare a codului pentru “calculul modulului sumei a doua valori”
// declaratie functie – incapsulare comportament
int modululSumei() { // interfata publica (semnatura)
int s; // implementare ascunsa
s = v1 + v2; // acces la variabilele globale v1 si v2
if (s<0) s = -s;
return s;
}
... {
// ...
s = modululSumei(); // apel functie (delegare functionala)
}
Cum ar arata intreg programul rescris (refactored) in acest caz?
1.2. Evolutia catre abordarea OO
Incapsulare, modularizare si ascunderea detaliilor
INCAPSULARE A
COMPORTAMENTULUI
UPB - ETTI - Curs POO - an II - seria E 76
Posibil program bazat pe incapsularea anterioara
#include <stdio.h>
int v1 = 3, v2 = 5; // 2 variabile globale
int main(void) {
int s; // variabila locala
s = modululSumei(); // fara argumente
printf(“modulul sumei %d cu %d este %d\n", v1, v2, s);
return 0;
}
int modululSumei() { // fara parametri
int s; // variabila locala
s = v1 + v2;
if (s<0) s = -s;
return s;
}
Cum ar putea functia modululSumei() sa fie facuta mai generala?
1.2. Evolutia catre abordarea OO
Incapsulare, modularizare si ascunderea detaliilor
UPB - ETTI - Curs POO - an II - seria E 77
Posibila incapsulare a codului pentru “calculul modulului sumei a doua valori”
// declaratie functie – incapsulare comportament
int modululSumei(int a, int b) { // declaratii parametri
int s; // implementare ascunsa
s = a + b; // acces la parametri
if (s<0) s = -s;
return s;
}
... {
// ...
s = modululSumei(v1, v2); // pasare argumente
}
Cum ar arata programul rescris (refactored) in acest caz?
1.2. Evolutia catre abordarea OO
Incapsulare, modularizare si ascunderea detaliilor
(variabile)
(valori)
UPB - ETTI - Curs POO - an II - seria E 78
Alta posibila incapsulare pentru “calculul modulului sumei a doua valori”
#include <stdio.h>
int v1 = 3, v2 = 5; // 2 variabile globale
int main(void) {
int s; // variabila locala
s = modululSumei(v1, v2); // 2 argumente
printf(“modulul sumei lui %d cu %d este %d\n", v1, v2, s);
return 0;
}
int modululSumei(int a, int b) { // 2 parametri
int s; // variabila locala
s = a + b;
if (s<0) s = -s;
return s;
}
Ce posibila problema vedeti in codul de sus din punctul de vedere al variabilelor?
1.2. Evolutia catre abordarea OO
Incapsulare, modularizare si ascunderea detaliilor
UPB - ETTI - Curs POO - an II - seria E 79
Cum poate sa apara o problema?
#include <stdio.h>
int v1 = 3, v2 = 5; // variabile globale NEASCUNSE
int main(void) {
int s; // variabila locala
s = modululSumei(v1, v2); // 2 argumente
v1 = 7; // inseram o linie in program
printf(“modulul sumei lui %d cu %d este %d\n", v1, v2, s);
return 0;
}
int modululSumei(int a, int b) { // 2 parametri
int s; // variabila locala
s = a + b;
if (s<0) s = -s
return s; – Variabila s nu creeaza nici o problema!
} – Ce afiseaza insa programul?
1.2. Evolutia catre abordarea OO
Incapsulare, modularizare si ascunderea detaliilor
UPB - ETTI - Curs POO - an II - seria E 80
Problema apare din cauza accesului neingradit la variabilele globale
#include <stdio.h>
int v1 = 3, v2 = 5; // variabile globale NEASCUNSE
int main(void) {
int s; // variabila locala
s = modululSumei(v1, v2); // 2 argumente
v1 = 7; // al doilea acces la v1
printf(“modulul sumei lui %d cu %d este %d\n", v1, v2, s);
return 0;
}
int modululSumei(int a, int b) { // 2 parametri
int s; // variabila locala
s = a + b; // primul acces la v1
if (s<0) s = -s
return s; // Programul afiseaza:
} // modulul sumei lui 7 cu 5 este 8
1.2. Evolutia catre abordarea OO
Incapsulare, modularizare si ascunderea detaliilor
UPB - ETTI - Curs POO - an II - seria E 81
1.2. Evolutia catre abordarea OO
Modulul software
– parte separata din program / unitate de cod (functie, obiect, etc.)
– care interactioneaza cu alte module
– doar prin intermediul unor interfete clar definite ca
– intrari si iesiri (valori returnate, liste argumente, semnaturi operatii)
– conceptual reprezinta o separare a preocuparilor (separation of concerns)
– introducerea limitelor logice intre module usurand modificarile
Modularizarea (programarea modulara, 1972 – David Parnas)
– tehnica de proiectare a programelor prin descompunerea lor în module
– este necesara in special in programe mari, complicate
– are ca scop cresterea masurii in care programul este compus din module
Incapsulare, modularizare si ascunderea detaliilor
UPB - ETTI - Curs POO - an II - seria E 82
1.2. Evolutia catre abordarea OO
Modularizarea – proiectare prin descompunerea în module
Incapsulare, modularizare si ascunderea detaliilor
Separarea in
unitati discrete
UPB - ETTI - Curs POO - an II - seria E 83
1.2. Evolutia catre abordarea OO
Incapsulare vs modularizare informatica
– incapsularea insista pe
– regruparea elementelor unei abstractii informatice
– modularizarea insista pe
– descompunerea unui program in unitati de program numite module
Ambele
– folosesc separarea interfetei de implementare
– pentru a introduce limite intre entitatile care rezulta
– si pot astfel genera componente de tip black box
– ca efect al acestei separari
– usureaza managementul complexitatii si al schimbarii
Incapsulare, modularizare si ascunderea detaliilor
UPB - ETTI - Curs POO - an II - seria E 84
1.2. Evolutia catre abordarea OO
Functia modululSumei() vazuta ca o componenta black box
Incapsulare, modularizare si ascunderea detaliilor
variabila locala ascunsa
modululSumei
int modululSumei(int a, int b) {
int s;
s = a + b;
if (s<0) s = -s;
return s;
}
int s;
parametri
(intrari ale
black box)
valoare
returnata
(iesire a
black box)
s = a + b;
if (s<0) s = -s;
return s;
comportament ascuns
int
int b) (int a,
Semnatura (Interfata)
publica, vizibila, accesibila
Implementarea
privata, ascunsa,
inaccesibila
{
}
MODULARIZARE A
COMPORTAMENTULUI
UPB - ETTI - Curs POO - an II - seria E 85
1.2. Evolutia catre abordarea OO
Functia modululSumei() vazuta ca o componenta black box
Incapsulare, modularizare si ascunderea detaliilor
main int s;
s = a + b;
if (s<0) s = -s;
return s; int int b int a
modululSumei
int s;
int v1 = 3, v2 = 5;
int main(void) {
int s;
s = modululSumei(v1, v2);
printf(“|%d+%d|=%d\n",v1,v2,s);
return 0;
}
int modululSumei(int a, int b) {
int s;
s = a + b;
if (s<0) s = -s;
return s;
}
s
v1 v2
printf
v1 v2 s
v1 v2
citiri citiri
Variabile globale publice,
vizibile, accesibile oricui
UPB - ETTI - Curs POO - an II - seria E 86
1.2. Evolutia catre abordarea OO
Problemele create de accesul neingradit la variabile globale
Pierderea consistentei
variabilei v1
Incapsulare, modularizare si ascunderea detaliilor
main int s;
s = a + b;
if (s<0) s = -s;
return s; int int b int a
modululSumei
int s;
int v1 = 3, v2 = 5;
int main(void) {
int s;
s = modululSumei(v1, v2);
v1 = 7;
printf(“|%d+%d|=%d\n",v1,v2,s);
return 0;
}
int modululSumei(int a, int b) {
int s;
s = a + b;
if (s<0) s = -s;
return s;
}
s
v1 v2
printf
v1 v2 s
v1 v2
citiri scriere
(modificare)
UPB - ETTI - Curs POO - an II - seria E 87
Orientarea spre Obiecte (OO)
Evolutia catre OO
Programarea structurata
1.2. Evolutia catre abordarea OO
– Ce inseamna programarea structurata?
– Care sunt modalitatile de structurare a programelor?
– Ce stiti despre “goto <eticheta>”?
UPB - ETTI - Curs POO - an II - seria E 88
Programarea structurata
– este programarea in care logica unui program
– este o structura compusa din sub-structuri similare
– intr-un numar limitat de moduri
– structura logica face programul
– eficient
– usor de inteles
– usor de modificat
1.2. Evolutia catre abordarea OO
Programarea structurata
UPB - ETTI - Curs POO - an II - seria E 89
Programarea structurata
– un exemplu este blocul de instructiuni
– cu rol de incapsulare a unei
secvente de instructiuni
– adica regrupare a secventei de
instructiuni
– fara nume prin care poate fi
referit, si fara intrari si iesiri
– scopul (domeniul de existenta al)
variabilelor locale declarate in
interiorul unui bloc
– este din locul declararii si
pana la finalul blocului
1.2. Evolutia catre abordarea OO
Programarea structurata
.. // aici v NU exista
{ // BEGIN in Pascal
.. // aici v NU exista
int v; // declaratie tip
.. // aici v exista
} // END in Pascal
.. // aici v NU exista
UPB - ETTI - Curs POO - an II - seria E 90
Programarea structurata
– descurajeaza utilizarea instructiunilor de tip "Go To eticheta"
1.2. Evolutia catre abordarea OO
Programarea structurata
UPB - ETTI - Curs POO - an II - seria E 91
Programarea structurata
– la cel mai jos nivel se afla structuri de
control al programului simple, ierarhice:
– secventa
– executia in ordine a instructiunilor
– selectia conditionata
– decizia privind instructiunea care
urmeaza a fi executata dintr-un numar
de instructiuni
– in functie de starea curenta a
programului (if, if..else,
if..then..else..endif, switch, case,
etc.)
1.2. Evolutia catre abordarea OO
Programarea structurata
decizie / selectie
UPB - ETTI - Curs POO - an II - seria E 92
– repetitia conditionata
– o instructiune este executata pana
cand este aplicata tuturor
elementelor dintr-o colectie (for)
– sau cat timp/pana cand programul
atinge o anumita stare (while,
do..until, do..while)
1.2. Evolutia catre abordarea OO
Programarea structurata
Ce instructiune C
corespunde fiecareia
dintre structurile date
ca exemplu?
UPB - ETTI - Curs POO - an II - seria E 93
– repetitia conditionata
– o instructiune este executata pana
cand este aplicata tuturor
elementelor dintr-o colectie (for)
– sau cat timp/pana cand programul
atinge o anumita stare (while,
do..until, do..while)
1.2. Evolutia catre abordarea OO
Programarea structurata
for
while do
while
UPB - ETTI - Curs POO - an II - seria E 94
Orientarea spre Obiecte (OO)
Evolutia catre OO
Programarea procedurala
1.2. Evolutia catre abordarea OO
– Ce inseamna programarea procedurala?
– Ce denumiri alternative ale procedurilor exista?
– Ce semnifica aceste denumiri?
– Cum decurge dezvoltarea programelor in abordarea procedurala?
– Ce probleme poate genera abordarea procedurala?
UPB - ETTI - Curs POO - an II - seria E 95
Programarea procedurala
– este o forma avansata de programare structurata
– care foloseste conceptul structural de (apel de) procedura
Procedura
– forma de incapsulare si modularizare a comportamentului (executiei)
– in jurul unui bloc de cod, care regrupeaza o secventa de instructiuni
– oferind o interfata publica (semnatura) a blocului, formata din
– nume prin care poate fi apelat
– eventual intrari (argumente) si iesiri (valori returnate)
– ascunzand implicit detaliile de implementare ale blocului
– prin scopul limitat la nivelul blocului de cod al variabilele locale
– si neoferind alt acces din exterior la instructiunile regrupate
1.2. Evolutia catre abordarea OO
Programarea procedurala
UPB - ETTI - Curs POO - an II - seria E 96
Denumiri alternative
– procedura – sugereaza ideea de modalitate de executie standard sau
recomandata
– rutina – sugereaza ideea de utilizare repetata, de reutilizare
– subprograme – sugereaza ideea de parte dintr-un program, modul
– subrutine – combina ideea de reutilizare cu ideea de modularizare
– functie – sugereaza ideea de dependenta intre intrari si iesiri si originea
matematica
– metoda – sugereaza ideea de modalitate de realizare/executie
Procedura ofera
– abstractizare, modularizare si incapsulare a comportamentului (executiei)
– facilitand reutilizabilitatea, delegarea, usurinta intelegerii si modificarii,
protectia, etc., aspectelor comportamentale ale programelor
1.2. Evolutia catre abordarea OO
Programarea procedurala
UPB - ETTI - Curs POO - an II - seria E 97
Modularizarea comportamentului in C
Pornind de la portiunea de program pentru “calculul modulului sumei a doua
valori”
s = v1 + v2; // suma
if (s<0) // structura decizie
s = -s; // modul
Cum s-ar putea modulariza calculul modulului?
Cum ar arata programul rescris (refactored) in acest caz?
1.2. Evolutia catre abordarea OO
s = v1 + v2
s = -s
[s < 0] else
Programarea procedurala
UPB - ETTI - Curs POO - an II - seria E 98
Posibila modularizare a programului pentru “calculul modulului sumei a doua
valori”
// declaratie functie (modul de comportament)
int modul(int x) { // interfata publica (semnatura)
if (x<0) // implementare ascunsa
x = -x;
return x;
}
... {
// ...
s = v1 + v2;
s = modul(s); // apel functie (delegare functionala)
}
1.2. Evolutia catre abordarea OO
Programarea procedurala
MODULARIZARE
PROCEDURALA
UPB - ETTI - Curs POO - an II - seria E 99
1.2. Evolutia catre abordarea OO
Functia modul() vazuta ca modul procedural si componenta black box
modul
int modul(int x) {
if (x<0)
x = -x;
return x;
}
parametru
(intrare a
black box)
valoare
returnata
(iesire a
black box)
if (x<0)
x = -x;
return x;
comportament ascuns
int
(int x)
Semnatura (interfata)
publica, vizibila, accesibila
Implementarea
privata, ascunsa,
inaccesibila
{
}
Programarea procedurala
MODUL
PROCEDURAL
UPB - ETTI - Curs POO - an II - seria E 100
Constructia unui program de calcul (sistem software)
– este o secventa de iteratii de tip divizare-reunire, fiind necesare:
– descompunerea (analiza) pentru
– a intelege problema si
– a putea formula o conceptie a solutiei
– compunerea (sinteza) pentru
– a construi solutia (a materializa, a realiza efectiv conceptia)
Cum corespund fazele de mai jos cu exemplul ecuatiei matematice?
1.2. Evolutia catre abordarea OO
Programarea procedurala
Descompunere
(funcţională / OO)
Analiză
(funcţională / OO) Construcţie a
componentelor
Produs
Compunere
(integrare)
Specificatii
UPB - ETTI - Curs POO - an II - seria E 101
Procesul de descompunere traditional procedural (non-OO)
– este dirijat de criteriul procedural (functional):
– identificarea funcţiilor,
– descompunerea funcţiilor în subfuncţii,
aplicat în mod recursiv, ducand la elemente simple, atomice, direct
implementabile (proceduri, funcţii, etc.)
1.2. Evolutia catre abordarea OO
Programarea procedurala
Funcţie principală
Sub-funcţie A Sub-funcţie B
Sub-funcţie A1 Sub-funcţie A2 Sub-funcţie B1 Sub-funcţie B2
sqrt()
main()
Ierarhie de funcţii
UPB - ETTI - Curs POO - an II - seria E 102
Abordarea procedurala
– propune descompunerea bazată pe ceea ce face programul
– considera programul ca fiind un proces imens
– care trebuie descoperit si descompus
– si odata subproblemele rezolvate trebuie combinate solutiile pentru
a construi solutia intregii probleme
Mecanismele de integrare sunt
– apelurile de functii (delegarile functionale) si ierarhizarea lor
Arhitectura programului reflecta DOAR functiile lui (functiile decid structura)
evolutiile comportamentale pot implica modificari structurale puternice
Pentru rezultate bune functiile cerute trebuie sa fie bine identificate si stabile
in timp (ceea ce se intampla foarte rar)
1.2. Evolutia catre abordarea OO
Programarea procedurala
UPB - ETTI - Curs POO - an II - seria E 103
Abordarea descompunerii procedurale se bazeaza pe:
– programare structurata si
– modularizare functionala
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
1.2. Evolutia catre abordarea OO
Programarea procedurala
UPB - ETTI - Curs POO - an II - seria E 104
1.2. Evolutia catre abordarea OO
Problemele create de accesul neingradit la variabile globale
Pierderea consistentei
variabilei v1
main int s;
s = a + b;
if (s<0) s = -s;
return s; int int b int a
modululSumei
int s;
int v1 = 3, v2 = 5;
int main(void) {
int s;
s = modululSumei(v1, v2);
v1 = 7;
printf(“|%d+%d|=%d\n",v1,v2,s);
return 0;
}
int modululSumei(int a, int b) {
int s;
s = a + b;
if (s<0) s = -s;
return s;
}
s
v1 v2
printf
v1 v2 s
v1 v2
citiri scriere
(modificare)
Programarea procedurala
UPB - ETTI - Curs POO - an II - seria E 105
Orientarea spre Obiecte (OO)
Evolutia catre OO
Tipurile de date abstracte (ADT)
– curs SDA (anul 1)
1.2. Evolutia catre abordarea OO
– Ce sunt tipurile de date abstracte?
– Exemple de tipuri de date abstracte
– In ce sens sunt abstracte tipurile de date abstracte?
– Ce tip de incapsulare ofera tipurile de date abstracte?
UPB - ETTI - Curs POO - an II - seria E 106
Tipul de date abstract (ADT)
– este definit ca un model (abstract)
– creat pentru a captura esenta unui domeniu al problemei
(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
1.2. Evolutia catre abordarea OO
Tipurile de date abstracte (ADT)
UPB - ETTI - Curs POO - an II - seria E 107
Tipul de date abstract (ADT) – exemple
– Integer consta din
– o multime de valori pozitive si negative de numere intregi si 0
– colectie de operatii care prelucreaza acele valori, cum ar fi
– adunare, scadere, inmultire, comparatii (egalitate, inegalitati, etc.)
1.2. Evolutia catre abordarea OO
Tipurile de date abstracte (ADT)
Integer 0
7
-100
10
3245
*
>
+
–
etc.
UPB - ETTI - Curs POO - an II - seria E 108
Tipul de date abstract (ADT) – exemple
– Stack (stiva) consta din
– structura de stocare a valorilor (cu regula “ultimul adaugat, primul extras”)
– colectie de operatii care prelucreaza acele valori, cum ar fi
– push (adaugare), pop (extragere), peak (ultima valoare adaugata)
1.2. Evolutia catre abordarea OO
Tipurile de date abstracte (ADT)
structura
de stocare
a valorilor
Stack
push
pop
peak
etc.
UPB - ETTI - Curs POO - an II - seria E 109
Tipul de date abstract (ADT)
– odata inteles si documentat un ADT
– serveste ca specificatie pe care programatorii o pot utiliza ca ghid
pentru alegerea reprezentarii datelor si a implementarii operatiilor
– si ca standard pentru asigurarea corectitudinii programelor
– o realizare (implementare, concretizare) a unui ADT
– ofera reprezentari ale valorilor din multimea de valori
– ofera algoritmi pentru operatiile sale
– si este denumita tip de date
1.2. Evolutia catre abordarea OO
Tipurile de date abstracte (ADT)
UPB - ETTI - Curs POO - an II - seria E 110
Incapsularea oferita de ADT-uri este o forma de incapsulare duala
– a informatiilor (datelor)
– regruparea elementelor de date in
– structuri / tipuri de date complexe
(stive, cozi, liste, arbori, etc.)
– ideal CU ascunderea detaliilor (datelor, informatiilor)
– a comportamentului
– regruparea elementelor de comportament in
– sub-module procedurale (operatii)
– implicit CU ascunderea detaliilor (implementarii)
1.2. Evolutia catre abordarea OO
Incapsularea duala
!
UPB - ETTI - Curs POO - an II - seria E 111
Incapsularea oferita de ADTuri este o forma de incapsulare duala
1.2. Evolutia catre abordarea OO
Incapsularea duala
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
structuri de
date interne
ascunse
comportament
(implementare operatii)
asociat structurilor de
date interne
Tip de date abstract (ADT)
INCAPSULARE DUALA
(INFORMATII SI
COMPORTAMENT)
UPB - ETTI - Curs POO - an II - seria E 112
Orientarea spre Obiecte (OO)
Evolutia catre OO
Modelare si abstractizare (II)
1.2. Evolutia catre abordarea OO
– Prin ce difera abstractizarea entitatilor de abstractizarea multimilor de entitati?
– Abstractizarea informatica a entitatilor
– Abstractizarea orientata spre obiecte
– Abstractizarea informatica a multimilor de entitati
UPB - ETTI - Curs POO - an II - seria E 113
Abstractizarea in general poate fi aplicata
– unor entitati (AE)
– din care sunt obtinute modele esentiale abstracte
– care sunt perspective simplificate ale entitatilor
– de ex. un teritoriu o harta
1.2. Evolutia catre abordarea OO
Modelare si abstractizare
AE
UPB - ETTI - Curs POO - an II - seria E 114
Abstractizarea in general poate fi aplicata
– unor entitati (AE)
– din care sunt obtinute modele esentiale abstracte
– care sunt perspective simplificate ale entitatilor
1.2. Evolutia catre abordarea OO
Modelare si abstractizare
o persoana numita
Xulescu Ygrec
informatii despre
persoana numita
Xulescu Ygrec
AE
o poza a lui
Xulescu Ygrec
AE
Perspective
simplificate ale
persoanei numite
Xulescu Ygrec
“studentul”
Xulescu
Ygrec
AE (o perspectiva asupra persoanei)
UPB - ETTI - Curs POO - an II - seria E 115
Abstractizarea informatica (AI)
– aplicata unor entitati (AE)
– produce modele informatice (esentiale, abstracte)
– de exemplu
– pornind de la perspectiva “student” a persoanei Xulescu Ygrec
1.2. Evolutia catre abordarea OO
Modelare si abstractizare
inregistrari intr-o
baza de date
despre studentul
Xulescu Ygrec
AE
Abstractizari
informatice (AI) ale
studentului numite
Xulescu Ygrec
AE
studentul
Xulescu Ygrec
altele?
UPB - ETTI - Curs POO - an II - seria E 116
Abstractizarea orientata spre obiecte (AOO)
– caz particular de abstractizare informatica (AI)
– aplicata unei entitati (AE)
– produce un element al modelului OO al realitatii
– numit obiect software sau pe scurt obiect
1.2. Evolutia catre abordarea OO
Modelare si abstractizare
inregistrari intr-o
baza de date
despre studentul
Xulescu Ygrec
AE
Abstractizari
informatice (AI) ale
studentului numite
Xulescu Ygrec
obiectul
software pXY
AE
studentul
Xulescu Ygrec
UPB - ETTI - Curs POO - an II - seria E 117
Abstractizarea in general poate fi aplicata
– unor multimi de entitati (AM)
– din care sunt obtinute categorii, tipuri, clase de entitati
– care descriu ceea ce este comun multimii de entitati
– fiind generalizari (vederi de ansamblu) ale multimilor de entitati
1.2. Evolutia catre abordarea OO
Modelare si abstractizare
AM
Conceptul, categoria, etc., de
“Student”
UPB - ETTI - Curs POO - an II - seria E 118
Abstractizarea orientata spre obiecte (AOO)
– caz particular de abstractizare informatica (AI)
– aplicata unei multimi de entitati (AM)
– produce categorii, tipuri ale modelului OO
– numite clase de obiecte software sau pe scurt clase
1.2. Evolutia catre abordarea OO
Modelare si abstractizare
Perspectiva
simplificata
obiectul
software pXY
AM
Clasa
Student
Vedere de ansamblu
(descriere a ceea ce este comun)
pWZ Abstractizari orientate
spre obiecte (AOO) …
UPB - ETTI - Curs POO - an II - seria E 119
Combinand abstractizarile generale ale entitatilor (AE) si multimilor (AM)
1.2. Evolutia catre abordarea OO
Modelare si abstractizare
Perspectiva
simplificata a
persoanelor (din
categoria “Student”)
studentul
Xulescu
Ygrec
AE (perspectiva asupra persoanelor)
studentul
Wescu Zet studentul
…
AM
Conceptul,
categoria, etc., de
“Student”
Abstractizare a tuturor
persoanelor care sunt studenti
(descriere a ceea ce este
comun tuturor studentilor)
(vedere de ansamblu asupra studentilor)
AE
UPB - ETTI - Curs POO - an II - seria E 120
Combinand abstractizarile informatice
1.2. Evolutia catre abordarea OO
Modelare si abstractizare
obiectul
software pXY
AM
Clasa
Student
pWZ …
perspectiva
vedere de ansamblu
AE
AE
UPB - ETTI - Curs POO - an II - seria E 121
Mergand mai departe, putem abstractiza multimile de multimi ca superclase
1.2. Evolutia catre abordarea OO
Modelare si abstractizare
obiectul
pXY
AM
Clasa
Student
…
(AOO)
Clasa
Profesor
AM
…
(AOO)
Superclasa
Persoana
Element al
unei multimi
Multime de
elemente
Multime de
multimi
AE (AOO)
UPB - ETTI - Curs POO - an II - seria E 122
Paralela intre abstractizarile din lumea reala si abstractizarile informatice OO
1.2. Evolutia catre abordarea OO
Modelare si abstractizare
studentul
Xulescu Ygrec AE
obiectul
pXY
AE
AM
Clasa
Student
…
informatii despre
Xulescu Ygrec
Conceptul de
Student
AM
(AOO)
(AOO)
AE
(AOO)
Clasa
Profesor
AM
…
(AOO)
Superclasa
Persoana
Conceptul mai
general de Persoana
AM
Element al
unei multimi
Multime de
elemente
Multime de
multimi
AE
(AOO)
UPB - ETTI - Curs POO - an II - seria E 123
1.2. Evolutia catre abordarea OO
Modelare si abstractizare
Entitate
abstractizata
Masina de calcul
condusa de
coduri masina
+
Model
abstract Model si mai
abstract
Limbajul
masina
Limbajul de
asamblare
Masina de calcul
programata la nivel
de asamblare
+
Un limbaj de
nivel inalt
Masina de calcul
programata la nivel
inalt
+
(limbajul masinii
de calcul)
Ierarhie de abstractizari
(echivalent uman al
limbajului masinii)
(forma concentrata a
limbajului masinii,
apropiata de cea umana)
ABSTRACT CONCRET
Revenire asupra exemplului de abstractizare “masina de calcul si limbajele”
Ce putem pune
aici ?
UPB - ETTI - Curs POO - an II - seria E 124
1.2. Evolutia catre abordarea OO
Modelare si abstractizare
Entitate
abstractizata
Masina de calcul
condusa de
coduri masina
+
Model
abstract Model si mai
abstract
Limbajul
masina
Limbajul de
asamblare
Masina de calcul
programata la nivel
de asamblare
+
Un limbaj de
nivel inalt
Masina de calcul
programata la nivel
inalt
+
Modelul cel
mai abstract
(limbajul masinii
de calcul)
Ierarhie de abstractizari
(echivalent uman al
limbajului masinii)
(forma concentrata a
limbajului masinii,
apropiata de cea umana)
(forma intuitiva din
punct de vedere
uman)
ABSTRACT CONCRET
Un limbaj orientat
spre obiecte
Masina de calcul
programata orientat
spre obiecte
+
Revenire asupra exemplului de abstractizare “masina de calcul si limbajele”
UPB - ETTI - Curs POO - an II - seria E 125
Revenire asupra exemplului de abstractizare “entitatile lumii reale”
1.2. Evolutia catre abordarea OO
Modelare si abstractizare
Entitate
abstractizata
Entitate
din lumea
reala
CONCRET
Cum poate fi abstractizata informatic?
UPB - ETTI - Curs POO - an II - seria E 126
1.2. Evolutia catre abordarea OO
Modelare si abstractizare
Entitate
abstractizata
Entitate
din lumea
reala
Model
abstract
Obiect
software
Un limbaj
orientat spre
obiecte
(forma intuitiva
din punct de
vedere uman)
CONCRET
Revenire asupra exemplului de abstractizare “entitatile lumii reale”
UPB - ETTI - Curs POO - an II - seria E 127
1.2. Evolutia catre abordarea OO
Modelare si abstractizare
Entitate
abstractizata
Entitate
din lumea
reala
(limbajul
masinii de
calcul)
Model
abstract
Model si mai
abstract
Limbajul de
asamblare
(echivalent
uman al
limbajului
masinii)
Un limbaj de
nivel inalt
Program de
nivel inalt
(forma concentrata,
apropiata de cea
umana, a limbajului
masinii)
Modelul cel
mai abstract
Program la
nivel de
asamblare
(forma intuitiva
din punct de
vedere uman)
Model si mai
abstract
Limbajul
masina
Cod
masina
Ierarhie de abstractizari ABSTRACT CONCRET
Revenire asupra exemplului de abstractizare “entitatile lumii reale”
Obiect
software
Un limbaj
orientat spre
obiecte
UPB - ETTI - Curs POO - an II - seria E 128
1.2. Evolutia catre abordarea OO
Modelare si abstractizare
Limbaj de
programare Format
Controlul executiei
realizat prin Folosit in
Cat de abstract este
pentru masina pentru om
cod
masina
numeric
binar
salturi conditionate,
iteratii catre etichete
masina de
calcul deloc
extrem de
mult
asamblare alfa-
numeric
salturi conditionate,
iteratii simplecatre
etichete
programarea
la nivel
asamblare
destul de mult foarte mult
procedural
(nivel inalt)
alfa-
numeric
decizii
(simple+multiple),
iteratii (mai multe
tipuri)
programarea
la nivel inalt mult mult
orientat
spre
obiecte
(OO)
alfa-
numeric
colaborarea
obiectelor plus decizii
si iteratii
programarea
OO foarte mult
destul de
putin
Recapitulare a exemplelor de abstractizare care reflecta relativitatea conceptului