Sunteți pe pagina 1din 69

CUPRINS

II . PROIECTAREA ORIENTATA - OBIECT


Slide 2 5. Abordarea obiectuala in informatica
Slide 6 36. Modelul obiect:
Slide 6 16. Concepte de baza:
Slide 6 - 8. Obiecte
Slide 9 -12. Clase si subclase de obiecte
Slide
13. Incapsularea
Slide
14. Abstractizare
Slide
15. Polimorfism
Slide
16. Persistenta
Slide 17-22. Legaturi intre clasele de obiecte
(asocierea, agregarea)
Slide 23- 26. Mostenirea
Slide 27- 32. Clase abstracte
Slide 33- 36. Restrictii de integritate
Slide 37 57. Modelul dinamic
Slide 37- 39. Concepte de baza (evenimente, stari)
Slide
40. Diagrame de stare
Slide 41- 44. Operatii
Slide 45- 47. Generalizarea starilor
Slide 48- 51. Generalizarea evenimentelor
Slide 52- 56. Exemple de Modele obiect (Modele statice)
Slide 57 69. Modelul functional

METODE DE PROIECTARE ORIENTATE - OBIECT

Abordarea obiectuala in informatica


Metodele de "Analiza si proiectare orientate obiect" au
aparut dupa anul 1990 preluand cele mai bune idei ale
programarii structurate si le-a combinat cu concepte noi
incuraand programatorii sa priveasca activitatea de programare
intr-o noua optica.
Un consortiu american (Object Management GroupOMG) format din peste 800 de companii ce produc si distribuie
aplicatii la a caror realizare s-a utilizat tehnologia orientata
obiect si care stimuleaza si supravegheaza adoptarea unor
standarde industriale in domeniu a hotarat sa studieze
posibilitatile de convergenta din domeniul metodelor de analiza
si proiectare orientate obiect.
La 17 noiembrie 1997 OMG a hotarat unificarea celor
mai utilizate si mai apreciate metode de analiza si proiectare
prin realizarea unui standard in domeniul construirii sistemelor
software, intr-un LIMBAJ DE MODELARE UNIFICAT (UMLUnified Modeling Language).

Limbajul de modelare unificat (UML) utilizeaza


simbolistici grafice in simbioza cu adnotarile textuale care
conduc la:
-o intelegere mult mai rapida si completa a domeniului
problemei;
-schimbarea instantanee a nivelului de abstractizare a
prezentarii cu ajutorul instrumentelor;
-automatizarea tuturor activitatilor care se preteaza la
acest gen de abordare.
Analiza si proiectarea orietata obiect priveste sistemul
informatic ca o structura de obiecte autonome ce se organizeaza
si coopereaza intre ele. Fiecare obiect poate interveni in mai
multe feluri sau scenarii functionale diferite si poate participa la
cnceperea altor obiecte mai complexe.

Paradicma (conceptul sau exemplu) orientarii obiectsustine


ca o entitate din lumea reala poate fi modelata:
-ca un obiect (instanta a unei clase);
-care are un numar de proprietati (atribute);
-metode (operatii sau proceduri).
Regruparea proprietatilor si metodelor intr-o singura
entitate (incapsularea) este un concept fundamental de modelare a
datelor la fel ca instantierea ( un obiect exte instanta unei clase asa
cum spre exemplu tiparul care permite reproducerea oricarui
numar de exemplare dorite) si abstractizarea sau generalizarea (o
clasa mosteneste proprietatile si metodele de la alte clase).
Analiza si proiectarea orientata obiect utilizeaza limbaje de
programare orienatate obiect care au trei elemente comune:
-obiecte si clase de obiecte;
-polimorfism;
-mostenire.

Toate sistemele care asigura orientarea pe obiect contin aceste


mecanisme esentiale chiar daca ele nu se numesc la fel sau nu sunt
implementate im aceeasi maniera.
Analiza si proiectarea orientata obiect foloseste trei modele
diferite pentru descrierea unui sistem informatic:
1.

Modelul obiect :
descrie obiectele si relatiile lor in sistem;

2.

Modelul dinamic :
descrie interactiunile intre obiecte in cadrul
sistemului;

3.

Modelul functional :
descrie transformarea valorii datelor in sistem.

1. Modelul obiect
Concepte de baza
Obiecte :
Orice lucru din lumea inconjuratoare poate fi considerat un
obiect (ex.: o masina, o persoana, un formular de cerere, un ordin de
plata, o marfa etc. ), iar prin analogie in analiza si proiectarea
orientata pe obiect, un camp dintr-o baza de date (ex. cod produs),
un formular de bilant etc., sunt considerate obiecte;
Un obiect se caracterizeaza prin:

Proprietati - care redau atributele fizice ale unui obiect.

Ex. pentru obiectul student ca proprietati pot fi:


-nume;
-prenume;
-data nasterii;
-localitatea, etc.;
sau pentru un text sau control dintr-o fereastra
ecran se definesc urmatoarele proprietati sau
atribute:
-pozitia pe ecran;
-latimea;
-inaltimea;
-culoarea;
-variabila care il insoteste;
-tipul fontului;
-vizibilitatea, etc.;

Metode care reprezinta actiunile ce pot fi efectuate de un


obiect. Ex.:
-afisarea pe ecran a unei anexe din formularul bilant;
-calcularea stocului curent de materiale;
-suma drepturilor cuvenite salariatilor;
-totalul valorii marfurilor vandute;
sau pentru o fereastra ecran ca metode ar putea fi:
-open;
-close etc.

Metoda reda ceea ce poate face un obiect, iar


manipularea obiectelor prin program se realizeaza prin mesaje. Ex. o
metoda a obiectului factura este listarea iar mesajul care i se poate
transmite prin program la actionarea butonuli Print este listarea.
Pentru fiecare mesaj pe care obiectul il intelege, exista o metoda
corespunzatoare care executa mesajul, astfel, obiectul reactioneaza la
primirea unui mesaj prin executarea metodei.

Clase si subclase de obiecte:


In varianta proiectarii orientate obiect (POO) obiectele sunt
grupate in clase si subclase de obiecte.
-Clasa de obiecte:
-este formata din totalitatea proprietatilor si metodelor ce
caracterizeaza o anumita categorie de obiecte. (Ex. clasa
studenti, clasa imobile, clasa materiale, clasa profesori etc.)
-intre clase pot exista asemanari datorita unor proprietati si
metode comune (Ex. intre clasa studenti si clasa profesori pot
exista una sau mai multe proprietati identice, cum ar fi:
proprietatea cetatean, proprietatea varsta etc.)
-intre clase pot exista deosebiri (Ex. intre clasa studenti si clasa
imobile, proprietatea numar etaje apare numai la clasa
imobile.)

Reprezentarea grafica a claselor de obiecte:

Sintaxa
Numele - clasei
nume-atribut-1:tip-data-1=valoare implicita 1
nume-atribut-2:tip-data-2=valoare implicita 2
nume-atribut-3:tip-data-3=valoare implicita 3

Exemplu
PERSOANA
nume:text = Popescu
salariu:intreg = 3000000
data_nasterii: date = 01-11-1960

..

...
nume-operatie-1:tip rezultat - 1
nume-operatie-2:tip rezultat - 2

..

Schimba starea civila: casatorit


Schimba vechime: 20->25

-o particularitate a claselor de obiecte o constituie conceptul de


mostenire. in momentul crearii unui obiect este necesar sa se
precizeze clasa din care face parte obiectul respectiv pentru ca
acesta sa poata mosteni:
-proprietatile;
-metodele;
-valorile prestabilite ale clasei parinte. In acest mod se pot crea la
infinit noi clase din clasele existente iar fiecare clasa nou creata
va mostenii toate elementele clasei parinte. Mai mult unele
obiecte poat avea mai multe clase parinte mostenind toate
proprietatile acestora.

-procesul crearii unui obiect este numit instantiere. (Un obiect este
instanta unei clase).
-instantierea este procesul prin care orice obiect creat este o
instanta (un exemplar) al clasei parinte. Ex. "Declaratia
TVA pe luna martie 1999" este o instanta a clasei
"Declaratii TVA"
-operatia de instantiere este necesara pentru a putea realiza
procesul de mostenire a proprietatilor, metodelr si valorilor
aferente proprietatilor. Ex. la clasa Marfuri, proprietatea
TVA este declarata 19% dar se poate modifica ulterior.
-Subclasele de obiecte
Sunt definite drept clase derivate dintr-o clasa parinte,
care iau nastere dintr-un grup de clase.
Ex. subclasa profesor face parte din clasa angajat si
clasa cetatean.

Alte concepte de modelare folosite in analiza si


proiectarea orietata - obiect
Incapsularea :
-Este un termen formal care descrie legarea dateloe si a metodelor
impreuna intr-un obiect astfel incat accesul la date sa fie permis
numai prin intermediul metodelor proprii obiectului ;
-Definirea obiectului se bazeaza pe principiul incapsularii, adica
obiectul regrupeaza in cadrul entitatii unice, datele si procedurile pe
care le manipuleaza
-incapsularea (ascunderea informatiei) este o tehnica de structurare a
uni sistem, atunci cand sistemul este alcatuit dintr-o colectie de
module care sunt accesibile printr-o interfata bine definita. Ex.
interfata unii obiect poate fi comparata cu un contract de tip clientfurnizor, in care:

clientul (obiect)
adreseaza cereri (mesaje) furnizorului
(obiect), pentru a i se face anumite servicii ( metode) pe care
furnizorul stie si poate sa le realizeze.
Abstractizarea :
-este o forma utila de programare modulara care
incurajeaza programatorul sa gandeasca aplicatiile in
termeni abstracti;
-unui obiect, realizeaza o vedere speciala asupra obiectului
propriu prin insumarea proprietatilor sale;
-datelor prin incapsulare, este una din caracteristicile
esentiale ale BD orientate obiect. Ex. Crearea claselor
elementare care vor face parte din clasa parinte nu mai
pot fi simplificate, iar abstractizarea presupune crearea
acestor clase elementare.

Polimorfismul :
-este un fenomen prin care un mesaj transmis diferitelor
obiecte, poate avea ca rezultat actiuni complet diferite. Ex.
mesajul print pentru afisarea unui grafic va apela metode
diferite de listare, fata de cazul in care acelasi mesaj print
este transmis pentru listarea unei facturi;
-este incurajat de mecanismul de mostenire;
-este utilizat in limbajele orientate pe obiect, cu semnificatia
ca, un nume poate fi folosit pentru mai multe situatii
corelate dar in scopuri diferite. Ex. aceeasi functie (+) poate
face operatii diferite in raport de datele pe care le
prelucreaza aceasta functie. Ea poate sa adune doua
variabile de tip numeric (a+b) sau doua variabile de tip
caracter (nume + prenume).

Persistenta :
-se refera la timpul alocat unui obiect in memoria
calculatorului pentru a putea fi accesat;
-unui obiect in memoria calculatorului are in vedere cand :
-este creat un obiect in functie de un parametru asociat;
-un obiect este conectat la o structura persistenta data;
-exista un obiect radacina persistent, orice obiect pornind de
la aceasta radacina este persistent;
-un obiect este tinta unui mesaj explicit pentru a-l face
persistent.

Legaturi intre clasele de obiecte


Legaturile exprima o relatie intre doua sau mai multe obiecte: asocieri si agregari.
Asocierea:
- se realizeaza intre doua sau mai multe obiecte care sunt in mod normal
independente, dar adesea pot fi legate intre ele
- poate fi intre doua sau mai multe obiecte: fara atribute si cu atribute.
Ex.: fara atribute
TARA

Capitala

Compartiment

ORAS

Proiect

Persoana

Asociere binara
(2 obiecte)

Asociere ternara
(3 obiecte)

Reprezentarea conectivitatiilor se simbolizeaza astfel:


1
0,1
+,1
- cu atribute
ProdFinite

Gestiune

CodProd:Number
DenProd:Text
UM:Text
PretMediu:Number

Nr gestiune:Number
Den gestiune:Text
StocInit:Number
DataStoc:Date

StocCurent:Number
In cazul in care asocierea are atribute proprii si metode ea va deveni clasa de obiecte

Agregarea
Agregarea exprima legaturile care apar n cazul n care un
obiect este compus din alte obiecte. Obiectele componente pot sa
aiba o existenta independenta sau pot exista numai n cadrul
agregarii. De asemenea, aceleasi componente pot aparen mai multe
agregari diferite.
Agregarea este tranzitiva: un obiect este compus din alte
obiecte care, la rndul lor, pot fi compuse.
Notatie grafica:
UNIVERSITATE

FACULTATE

Ex: o universitate este compusa din mai multe facultati.


Agregarea si asocierea sunt forme specifice de legatura ntre
obiecte:
- daca doua obiecte sunt legate printr-o relatie compuscomponent, atunci este o agregare;
- daca doua obiecte sunt n mod normal independente, dar pot fi
adesea legate, atunci este o asociere.
Agregare

Factura

Asociere
Produse

Produse
Facturate

CantitateFacturata
PretFacturare

CTA
Facturate

Atribute ale asocierii

Ex:

O factura este compusa din produse facturate si cheltuieli


de transportaprovizionare facturate.
Fiecare produs facturat se refera la un produs anumit si
precizeaza catitatea facturata si pretul de facturare.

Agregarea poate fi:


-fixa: numarul si tipul componentelor sunt predeterminate (ex:
un automobil este compus dintr-un sasiu, un motor, patru roti etc);
-variabila: numarul de nivele este finit dar numarul de componente
pe fiecare nivel poate varia (ex: factura poate avea unul sau mai multe
produse facturate si una sau mai multe elemente de CTA);
-recursiva: o componenta face referire, direct sau indirect, la ea
nsasi.
O caracteristica definitorie pentru agragare este propagarea
operatiilor: o operatie aplicata asupra obiectului compus se aplica
automat asupra tuturor componentelor sale.

Ex:

un document este compus din paragrafe si acestea sunt


compuse, la rndul lor din caractere. Copierea sau
deplasarea documentului implica toate componenetele
acestuia. Fiecare componenta poate fi copiata sau
deplasata de sine statator, fara a implica elementele din
care face parte.
Acest lucru nu este valabil si n cazul asocierilor.

Ex:
copierea documentului nu implica si copierea persoanei
care este proprietarul sau.

Mostenirea
- Mostenirea simpla si multipla
Mostenirea este o abstracizare care permite partajarea
proprietatilor comune dintre clase, pastrnd nealterate diferentele dintre
ele.
Clasa de la care se mosteneste este numita superclasa, iar clasa
care mosteneste este numita subclasa.
Mostenirea este tranzitiva pe un numar orict de mare de nivele.
Instanta unei subclase este simultan instanta a tuturor superclaselor sale.
Mostenirea poate fi exclusiva (obiectele pot apartine unei singure
subclase) sau inclusiva (obiectele pot apartine mai multor subclase din
aceeasi arborescenta).

Notatia grafica:

ANGAJAT
Marca
Nume
Prenume
Data nasterii
...

MUNCITOR
Meserie
Calificare
Mostenirea exclusiva

mostenire exclusiva
mostenire inclusiva

INGINER
Specialitate

Mostenirea multipla permite unei clase sa aiba mai multe


superclase directe si sa mosteneasca proprietatile tuturor.

VEHICOL

VEHICOL-TERESTRU

AUTOMOBIL

VEHICOL-MARIN

VEHICOL-AMFIBIU

VAPOR

Fiecare generalizare introdusa prin mostenirre trebuie sa acopere


o singura proprietate. Daca exista mai multe proprietati care
determina specializari, trebuie introdusa cte o relatie de mostenire
distincta pentru fiecare dintre ele.

BUN-IMOBILIAR
Adresa
Suprafata

APART-BL
Etaj
Nr camere
Nr etaje bloc

CASA-VILA

DE-VANZARE

DE-INCHIRIAT

Supr curte
Supr gradina
Tip incalzire

Pret solicitat
Stare

Chirie lunara
Avans minimal
Durata minima

- Clase abstracte
O clasa abstracta este o clasa care nu are instantieri directe
dar ale caror clase descendente au instantieri. O clasa concreta (adica
instantiabila) poate avea subclase abstracte, cu conditia ca acestea sa
aiba subclase concrete.
O clasa abstracta nu poate fi clasa terminala n arborele de
mostenire.
subclasa

subclasa

Instanta

superclasa

Clasa

Clasa
concreta

Clasa
terminala

Clasa
abstracta

Clasa
neterminala

superclasa

Clasele abstracte servesc pentru:


- ncapsularea claselor care participa la aceleasi asocieri sau
agregari;
- definirea metodelor care urmeaza a fi mostenite de
subclase; este posibil sa se defineasca numai semnatura metodei
(protocolul de invocare) urmnd ca implementarea concreta sa
se faca la nivelul fiecarei subclase.

- Atribute si metode statice


Atributele si metodele statice sunt elemente definite la nivelul
clasei. Ele servesc pentru a descrie proprietati sau a implementa
operatii referitoare la clasa privita si ea ca obiect (mai precis ca un
metaobiect).
n aceasta categorie se includ:
- atribute care descriu ansamblul instantierilor (obiectelor)
clasei respective si nu fiecare obiect (de exemplu, numarul de
instantieri existente la un moment dat);
- metode care opereaza asupra ansamblului ( de exemplu,
parcurgerea, unul cte unul, a obiectelor clasei respective) sau care nu
pot fi plasate la nivelul obiectelor (constructorii - metode care creaza
un nou obiect din calsa respectiva - si destructorii - metode care
suprima un obiect existent).

Ex:

pentru ferestrele de ecran pot fi definite o serie de


atribute si metode aferente fiecarei ferestre:
marime, vizibilitate, afiseaza si atribute si metode
specifice ansamblului ferestrelor (statice):
marime_implicita, marime_maxima,
creaza_fereastra, activeaza_fereastra.

FEREASTRA
marime:dreptunghi
vizibilitate:logic
marime_implicita:dreptunghi
marime_maxima:dreptunghi
afiseaza
creaza_fereastra
activeaza_fereastra

- Extensie si restrictie n mostenire


Extensie: adaugarea ntr-o subclasa de noi proprietati,
alaturi de cele mostenite.
Restrictie: limitarea valorii pe care obiectele le pot lua
pentru atributele mostenite.
Obiectul apartinnd unei clase este o instanta a tuturor
superclaselor acesteia. n consecinta, toate caracteristicile
superclaselor trebuie sa se aplice pna la ultimul nivel de
mostenire.
O subclasa nu poate surpima o proprietate mostenita si
nu poate schimba protocolul (semnatura) metodelor mostenite.
Ea poate adauga noi proprietati - atribute si metode - la cele
mostenite sau poate redefini implementarea anumitor operatii
mostenite.

Redefinirea operatiilor se poate face:


pentru extindere: subclasa poseda atribute suplimentare fata
de cele mostenite iar implementarea operatiei trebuie sa ia n
considerare si aceste noi atribute; semnatura operatiei nu se
schimba;
pentru restrngere: implementarea operatiei introduce
restrictii sau limite referitoare la valoarea argumentelor sau la
tipul acestora, admitnd submultimi ale argumentelor mostenite;
pentru optimizare: se da o noua implementare operatiei,
schimbnd, spre exemplu, algoritmul de realizare, astfel nct
aceasta sa se execute mai repede fara a schimba nsa semnatura si
semantica operatiei.

Restrictii de integritate
Tipologia restrictiilor de integritate din cadrul metodelor
sistemice ramne valabila si aici.
Metodele orientate obiect introduc anumite notatii particulare
pentru unele restrictii de integritate (RI).
Cardinalitatile: exprima, n mod implicit, restrictii de
integritate referitoare la participarea obiectelor la asocieri sau
agregari.
cardinalitate 1
cardinalitate 0,n
cardinalitate 0,1
1+
1-5

cardinalitate 1,n
cardinalitate specificata explicit

Ordonarea: indica ordinea impusa elementelor aflate pe latura "mai


multe" ntr-o asociere.

FURNIZOR

{ordonat dupa data}

FACTURA

Incluziunea: nu mai face distinctie ntre roluri si asocieri.


lucreaza
COMPARTIMENT

ANGAJAT
conduce

Angajatul care conduce un compartiment trebuie


sa lucreze in compartimentul respectiv.

Obiecte, legaturi si atribute derivate: sunt precedate de caracterul "/".


PERSOANA
data_nasterii
/varsta
{varsta = data_curenta - data_nasterii}

MASINA

MONTAJ

decalaj

PIESA

decalaj

/DECALAJ
{decalaj = decalaj-montaj.masina * decalaj-montaj.piesa}
derivate

Homomorfismul: este reprezentarea unei asocieri spre o alta asociere.


Ex:

un catalog de piese auto poate contine articole aflate ntrun alt catalog. Fiecare articol de catalog poseda un numar
de model caruia i pot corespunde mii de articole produse
individual de fabricanti diferiti. Un articol poate fi compus
din subarticole. Fiecare arbore de descompunere al unui
articol fizic trebuie sa aiba aceeasi forma cu arborele
corespunzator din catalog. Exista, prin urmare, un
homomorfism ntre cele doua agregari contine.

contine

reprezinta

PIESA_CATALOG
nr. model

contine
ARTICOL

corespunde

nr. serie

{articol1 contine articol2 => model.articol1 contine model.articol2}

2. Modelul dinamic
Modelul dinamic prezinta modificarile suportate de obiecte
si corelatiile temporale dintre acestea.
Conceptele de baza:
- evenimente
- stari.
Eveniment:
- un fapt intervenit ntr-un anumit moment;
- conceptual, un eveniment nu are durata.
Ordine de aparitie a evenimentelor poate fi dirijata de
legaturi de cauzalitate. Spre exemplu, plata unei facturi se face
numai dupa receptia marfurilor facturate.
Doua evenimente care nu au nici o in fluneta unul asupra
altuia sunt numite concurente, ordinea lor putnd fi oarecare.
Un eveniment trasporta informatie catre un obiect sau de
la un obiect la altul. Datele transmise sunt atributele evenimentului.

Scenariul:
- secventa de evenimente care se deruleaza ntr-o anumita
executie particulara a sistemului. Aria unui scenariu
varia, poate cuprinde toate evenimentele sau numai
evenimentele corespunzatoare unui anumit obiect sau
situatii.

poate
unei

Starea:
- o abstractizare a valorilor atributelor si a legaturilor unui obiect;
- multimile de valori sunt grupate n stari n functie de proprietatile
care afecteaza comportamentul ansamblului obiectului;
- reprezinta raspunsul obiectului la evenimentele de intrare.
Raspunsul la un eveniment aparut poate varia cantitativ, n functie de
valoarea exacta a atributelor sale dar sub aspect calitativ este identic
pentru toate valorile aceluiasi eveniment si poate varia pentru valori de
stare diferite. Acest raspuns poate cuprinde o actiune sau o schimbare de
de stare.

O stare corespunde intervalului de timp dintre doua evenimentente


survenite pentru acelasi obiect. O stare are deci o durata.
Evenimentele si starile sunt duale: o stare separa doua evenimente si
un eveniment separa doua stari.
O stare regrupeaza toate combinatiile de valori ale atributelor si
legaturilor care conduc la acelasi raspuns fata de un anumit tip de
eveniment.
Evenimentele si starile depind de nivelul de abstractizare utilizat.
Ex: o agentie de voiaj care planifica un itinerar va trata fiecare etapa
a calatoriei ca un eveniment unic; pentru o anumita etapa de
calatorie, n aeroport, tabela de afisaj va face distinctia ntre
evenimentele plecare si sosire, iar sistemul de control al traficului va
descompune zborul n mai multe culoare geografice.
Legaturile dintre stari si evenimente sunt reprezentate prin diagrame
de stare. La aparitia unui eveniment starea urmatoare depinde de
starea curenta a obiectului si de evenimentul survenit: schimbarea
declansata este numita tranzitie.

Diagrama de stare indica comportamentul unei clase de obiecte. Dar,


tot asa cum fiecare obiect are valori proprii ale atributelor, are si stari proprii si
deci functioneaza independent de celelalte, urmnd nsa aceeasi schema.
Diagaramele de stare pot fi de doua tipuri:
- cu executie unica
- n bucla continua.
Diagramele cu executie unica corespund claselor de obiecte cu o
durata de viata finita si cuprind starile initiala si finala.
Modelul dinamic este compus din ansamblul diagramelor de stare si
descrie structura de control a sistemului. n cadrul modelului dinamic,
diagramele de stare ale diverselor clase de obiecte interactioneaza prin
intermediul evenimentelor partajate.
Modelul dinamic descrie suita completa de secvente de
evenimente si tranzitii, n timp ce un scenariu descrie secventa
unei anumite situatii sau context.

specifica

Starilor le pot fi atasate conditii. n asemenea cazuri, o tranzitie se


produce numai la aparitia unui/unor evenimente si daca starea ndeplineste
conditia necesara.

- Operatii
Operatiile sunt atasate evenimentelor si/sau starilor si indica ce
face obiectul la aparitia evenimentului sau starii respective.
Exista doua categorii de operatii: activitati si actiuni.
O activitate este o operatie care necesita o anumita durata de
timp (n termenii aplicatiei studiate). O activitate poate acoperi ntreaga
durata a unei stari sau poate fi mai scurta dect aceasta. Este, de
asemenea posibil, ca o activitate sa nceteze naintea executiei sale
complete din cauza aparitiei unui eveniment. n termeni generali, o
activitate poate fi privita ca o operatie de natura secventiala cu durata
indefinita.
O actiune este o operatie instantanee (tot n termenii aplicatiei,
deoarece fizic nu poate fi realmente instantanee). Actiunea este
ntotdeauna atasata unui eveniment.
Actiunile pot reprezenta de asemenea operatii de control intern, cum ar
fi modificarea valorii unor atribute sau generarea altor evenimente.

Notatia grafica
stare initiala

nume_stare
executa: activitate

eveniment (atribute) conditii /actiuni

stare

tranzitie

stare
stare finala

Ex. 1.

Afisarea meniului derulant (scurt) la apasarea butonului


drept al mouse-ului.
buton apasat/afiseaza meniu derulant
In asteptare

Meniu vizibil

buton eliberat/sterge meniu derulant


deplasare cursor/evidentiaza comanda meniu

Ex. 2. Automat de distributie a cafelei si bauturilor racoritoare

Incasare suma
In asteptare
introducere monede(total)/
creste suma
anulare/restituie monezi
selecteaza(articol)

articol vid

rest < 0

executa: testeaza articol si calculeaza


rest
rest = 0

rest > 0

executa: distribuie articol

executa: restituie rest

O activitate dintr-o stare poate fi extinsa ntr-o diagrama de nivel mai jos
n care fiecare stare sa reprezinte un pas al activitatii initiale. Activitatile
imbricrate sunt diagrame de stare cu executie unica si cutranzitii de
intrare si de iesire. Ex: pentru activitatea distribuie articol din diagrama
de mai sus, se poate trasa o diagrama imbricata de tipul urmator:

brat activat
executa: plaseaza bra
pe randul adecvat

executa: plaseaza brat


in coloana adecvata
brat activat
executa: ia elementul
din caseta

impinge

-Generalizarea starilor
O diagrama imbricata este n fapt o generalizare de stari. Un obiect
aflat ntr-o anumita stare n diagrama de pe nivelul superior trebuie sa fie
obligatoriu si ntr-una din starile din diagrama imbricata. Altfel spus, toate
starile din diagrama imbricata sunt detalieri ale diagramei de pe nivelul mai
nalt.
Starile pot avea substari care mostenesc tranzitiile superstarilor lor,
tot asa cum clasele pot avea subclase care mostenesc atributele si operatiile
superclaselor lor. Fiecare tranzitie sau actiune aplicata unei stari este aplicata
tuturor substarilor sale, cu conditia ca acestea sa nu fi fost eventual redefinite
(suprascrise).

Transmisie automata

schimbaM

Punct mort

Mers inapoi
schimbaS

schimbaA

schimbaS

Mers inainte
stop

marire viteza
Vit I-a

marire viteza
Vit a II-a

reducere viteza

Vit a III-a
reducere viteza

n schema de mai sus, Vit I-a,...Vit a III-a sunt substari


pentru Mers nainte.
Tranzitiile superstarii sunt mostenite de toate substarile.
Selectionarea tranzitiei SchimbaS (stop) din orice viteza provoaca o
trecere la punctul mort. Tranzitia de la mers nainte la punct mort
implica trei tranzitii mostenite, cte una pentru fiecare dintre
vitezele de mers nainte spre punctul mort.
Comutarea mersului nainte plecnd din punctul mort
provoaca o tranzitie n interiorul starii mers nainte la viteza I-a,
s.a.m.d.

- Generalizarea evenimentelor
Evenimentele pot fi organizate ntr-un ierarahie de mostenire a
atributelor acestora. Construirea unei ierarhii de evenimente permite sa se
utilizeze diverse nivele de abstractizare n diferite sectiuni ale proiectului.
eveniment
timp

intrare utilizator
periferic

buton mouse

tasta

poziie

caracter

buton mouse
apasat

buton mouse
eliberat

control

spatiu

imprimabil

alfanumeric

semne

Fiecare tip de eveniment din schema mosteneste atributele


evenimentelor de pe nivelul/nivelele superioare. Ex: buton mouse apasat
mosteneste proprietatile timp, periferic, pozitie.
-Concurenta si sincronizarea
Concurenta apare n interiorul unui obiect atunci cnd acesta
poate fi partitionat n subansamble de atribute si legaturi, avnd fiecare
propria diagrama de stare. Nu este obligatoriu ca subdiagramele sa fie
independente: acelasi eveniment poate provoca tranzitii n fiecare dintre
acestea.
Un obiect poate fi obligat sa execute mai multe acctiuni n mod
concurent. Executia interna a acestora nu este sincronizata n vreun
mod, dar obiectul nu poate face tranzitia la starea urmatoare dect dupa
efectuarea lor completa.

Ex:
la terminarea unei tranyzactii cu un client, un bancomat
trebuie sa efectueze doua operatii: sa elibereze bancnotele
corespunzatoare sumei cerute si sa returneze card-ul.
Masina nu
poate trece n starea urmatoare pna cnd aceste operatii nu s-au realizat,
indiferent de ordinea n care a
actionat clientul: a preluat mai nti
banii sau card-ul sau pe amndoua simultan.

executa: distribuie bancnote

preluare bancnote

pregatire

reinitializare
executa: elibereaza card

retragere card

Exemplu: tranzactii bancare realizate prin bancomat

Ghiseu
Bancomat
Bancomat
Bancomat

Calculator
banca
Calculator
central

Cont
Cont
Cont

Calculator
banca

Cont
Cont

-Modelul obiectelor (modelul static)


Tranzactie
data-ora
Bancomat
disponibil
eliberat

Tranzactie
manuala

cod
statie

Casier

Banca
denumire
cod
cod
cont card

cod
salariat

sold
limita creditare
tip

suma
tip

Tranzactie
automata

Autorizare
card
parola
limita

nume

Cont

Actualizare

Client

Card bancar

nume
adresa

cod banca
cod card
nr serie

Scenarii de utilizare a bancomatului


a. operatie normala
BA cere inserarea card-ului; clientul insereaza card-ul
BA preia card-ul si citeste nr de serie
BA cere parola; clientul tasteaza parola
BA verifica nr de serie si parola prin consultarea bancii si valideaza
card-ul
BA cere clientului sa indice operatia dorita; clientul selecteaza
retragere
BA solicita precizarea sumei; clientul tasteaza suma dorita
BA verifica daca suma nu depaseste limita autorizata si transmite
cererea bancii care verifica ncadrarea sumei n sold si returneaza o
confirmare care contine si noul sold
BA elibereaza banii si cere clientului sa-i preia; clientul ia banii
BA ntreaba clientul daca doreste sa mai faca alte operatii; clientul
raspunde negativ
BA elibereaza bonul, ejecteaza card-ul si cere clientului s-o preia;
clientul retrage card-ul
BA afiseaza mesajul de asteptare a unei noi cereri

b. operatie eronata
BA cere inserarea card-ului; clientul insereaza card-ul
BA preia card-ul si citeste nr de serie
BA cere parola; clientul tasteaza parola
BA verifica nr de serie si parola prin consultarea bancii si respinge card-ul
BA informeaza clientul ca parola este eronata si cere retastarea sa; clientul
tasteaza parola corecta si card-ul este validat
BA cere clientului sa indice operatia dorita; clientul selecteaza retragere
BA solicita precizarea sumei; clientul apasa tasta Anulare
BA ejecteaza card-ul si cere clientului s-o preia; clientul retrage card-ul
BA afiseaza mesajul de asteptare a unei noi cereri

Secventa de evenimente pentru scenariul a.


Client

Bancomat
insereaza card
cere parola
tastare parola

verificare cont
cont bancar corect

cere tip tranzactie


tastare tip
cere suma
tastare suma
prelucreaza tranzactia
tranzactie corecta
eliberare bancnote
cere preluarea banilor
bancnote preluate
intreaba daca se continua
terminare
imprimare extras operatie
ejectare card
cere preluarea card-ului
card preluat
afiseaza ecranul initial

Banca

Diagrama
de stare
pentru
bancomat

Asteapta
raspunsul
retelei

raspuns retea

Intrerupere
executa: mesaj
de anulare

insereaza card
Ecran initial
tasteaza parola
executa: afiseaza
executa:
executa:cere
ecran initial
verifica cont
parola
parola
eronata
insereaza card
cont corect
Ilizibil
executa:
anulare
executa: mesaj
cere tip
card ilizibil
anulare
Anulare
retrage
tasteaza tip
executa: mesaj
anulare
card
de anulare
Card ejectat
executa: ejecteaza card
cere preluare card

executa:
cere suma

executa: mesaj
cont invalid
tasteaza suma

anulare
Terminare
executa: imprima
extras operatie

continuare

terminare
anulare

executa: intreaba
daca se continua

executa: efectueaza
tranzactia
tranzactie corecta
executa: elibereaza
asteapta 3
bancnote; cere
secunde
preluarea bancnotelor
tranzactie esuata

preia bancnote

executa: mesaj
de anulare

3. Modelul functional
Modelul functional trateaza o alta fateta a prelucrarilor si
anume cea referitoare la modul n care are loc transformarea
datelor, n marea majoritate a cazurilor, prin calcule.
Modelul functional ofera o imagine a functionarii sistemului
compusa din seturi de date care traverseaza o suita de
prelucrari n cursul carora sufera transformari.
Fiecare suita de asemenea transformari este reprezentata ntro diagrama de flux.
O diagrama de flux se compune din:
-prelucrari;
-fluxuri de date;
-obiecte actor;
-obiecte rezervor.

Obiect
actor

prelucrare

Obiect
actor
fluxuri de date

Obiect
rezervor

Transformarile ce figureaza ntr-o diagrama sunt jalonate de obiecte


actor (sau obiecte agent), care marcheaza provenienta si destinatia
datelor (locul de "consum" sau de utilizare al acestora) delimitnd astfel
punctele de intrare si de iesire din diagrama. Aceasta face sa mai fie
denumite si "borne" ale diagramei.
Obiectele actor sunt obiecte active, n sensul ca dirijeaza suita de
transformari prin producerea sau consumarea de date. Actiunea lor este
exterioara diagramei de flux dar trebuie sa figureze n mod normal n
modelul dinamic.

Obiectele actor sunt obiecte active care dirijeaza fluxurile de date,


fie n calitate de producatoare fie n calitate de consumatoare. Aceste
obiecte sunt plasate la extremitatile fluxurilor de date, fiind numite,
din aceasta cauza, si borne.
Spatiul delimitat de obiectele agent este traversat de fluxuri de
date ce sunt modificate sau transformate prin prelucrari.
Aceste prelucrari pot consta n obtinerea unei anumite valori de
iesire pe baza valorilor de intrare - cum ar fi, spre exemplu,
calcularea valorii totale a unei facturi sau a soldului unui cont.
Exista si prelucrari n care, alaturi de functia ce leaga valorile de
iesire de cele de intrare, apar si efecte colaterale, cum ar fi, spre
exemplu, modificarea stocului curent al unui material, dupa cum pot
exista prelucrari ce constau numai din asemenea efecte colaterale.
Prelucrarile se reprezinta grafic prin elipse care contin numele
sau enuntul transformarii pe care o realizeaza. Fiecare valoare de
intrare sau de iesire este notata printr-o sageata etichetata cu numele
sau cu tipul acesteia, orientata conform participarii la prelucrare.

valoare la pret de vanzare


valoare totala factura
insumare

TVA

Prelucrarile sunt implementate ca metode sau parti de metode


corespunzatoare operatiilor asumate de catre obiecte. Clasa de
obiecte ce va include metoda corespunzatoare este cea
corespunzatoare fluxului de date de intrare, n special daca aceeasi
clasa de obiecte este si flux de iesire.
Daca exista mai multe de cai de obtinere a unor anumite valori
rezultat - cum ar fi, spre exemplu, calcularea pretului de achizitie al
materialelor aprovizionate - acestea se reprezinta ca atare n
diagrama de flux. Modul n care se selecteaza unul sau altul dintre
acestea face obiectul modelului dinamic.
Ansamblul de date (eventual una singura) care leaga iesirea unui
obiect sau a unei prelucrari de intrarea unui alt obiect sau a unei alte
prelucrari constituie un flux de date.

Fluxurile aflate n interiorul unei diagrame reprezinta valori aflate


n diferite stadii de evaluare si pot sa nu aiba semnificatie din punct de
vedere al comportamentului exterior al obiectelor, fiind pur si simplu
valori intermediare impuse de derularea calculelor.
Fluxurile aflate la frontiera diagramei sunt intrari sau iesiri ale
acesteia si pot fi conectate unor obiecte sau pot fi intrari sau iesiri spre
exterior.
Obiectele rezervor sunt obiecte pasive care stocheaza temporar date
n vederea unui acces ulterior. Aceasta categorie de obiecte nu
declanseaza prelucrari, rolul lor exclusiv fiind acela de a raspunde
cererilor de furnizare sau de stocare a datelor. Obiectele rezervor
permit existenta unui decalaj n timp ntre momentul aparitiei sau
producerii datelor si momentul utilizarii lor. De asemenea, permit
acumularea de date ce urmeaza a fi prelucrate mpreuna.
.

Reprezentarea grafica:

obiect actor

flux de date

prelucrare

obiect rezervor

Exemple:
cod
denumire
pret

cod

Nomenclator

cauta pret
a

pret

Client

actualizare
retragere sold

Cont bancar
b

a) Nomenclator este un obiect rezervor. O intrare n acest obiect consta


dintr-un grup de trei date: cod, denumire, pret. Cauta pret este o
prelucrare, care are doua intrari: cod si obiectul Nomenclator si o iesire :
pretul corespunzator codului.

b) Client este un obiect actor iar Cont bancar un obiect rezervor.


Prelucrarea actualizare executa o consultare si o nregistrare n cont
bancar pentru operarea retragerii cerute de catre client .

Diagramele de flux al datelor arata numai prelucrarile de efectuat


fara a preciza ordinea de executie sau selectia ntre eventualele alternative
(acestea apartinnd modelului dinamic). Pentru un plus de claritate, este
permisa si introducerea fluxurilor de control, legatura dintre acestea si
prelucrarile controlate fiind indicata prin linie ntrerupta.

verifica
disponibil

Client

retragere

Cont bancar

actualizare
sold

Pentru o mai buna lizibilitate, diagramele de flux pot fi


imbricate astfel nct nivelele inferioare sa detalieze elementele
aflate pe nivelele superioare.
Specificarea operatiilor
Prelucrarile cuprinse n modelul functional corespund operatiilor
din modelul obiectelor si vor fi implementate sub forma de metode.
Operatiile pot fi specificate n diverse moduri:
-expresii si functii matematice;
-tabele de valori;
-tabele de decizie;
-pseudocod;
-limbaj natural.
Specificarea unei operatii cuprinde semnatura acesteia si
tranformarea pe care o realizeaza.

Semnatura precizeaza numarul, ordinea si tipul argumentelor de


intrare (la apelare) si de iesire (rezultate furnizate) iar transformarea
defineste relatia existenta ntre argumentele de intrare si de iesire si
efectele colaterale (modificarile operate asupra obiectelor
rezultatul sau rezultatele furnizate
Specificarea unei operatii trebuie sa precizeze numai schimbarile
vizibile din exteriorul acesteia. La implementarea unei operatii pot fi
necesare si anumite valori interne, nesemnificative din exterior.
Aceasta face ca atributele de stare ale claselor de obiecte sa fie
grupate n atribute publice (accesibile din exteriorul obiectului) si
atribute private (folosite exclusiv pentru implementarea anumitor
operatii).
Operatiile pot fi si ele guvernate de restrictii de integritate
specifice.

Exemplu: tranzactii bancare realizate prin bancomat

Card

cod card, cod banca

parola
tip tranzactie
suma
Client

Bancomat

bancnote
extras operatie
mesaje

Schema de ansamblu a intrarilor si iesirilor


Cont
bancar

Card
cod card, cod banca

citeste
date

sold
efectueaza
tranzactia

parola

genereaza
iesiri
mesaje

tip tranzactie
suma

bancnote
extras operatie
Client

Diagrama de flux al datelor


cod card, cod banca

selecteaza
card

cod card invalid

parola
parola

verifica
parola

parola incorecta

Cont
bancar
sold
tip tranzactie, suma

actualizeaza
cont

mesaje esec

bancnote
extras operatie

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