METODE DE ANALIZA SI PROIECTARE ORIENTATE OBIECT …

Download Report

Transcript METODE DE ANALIZA SI PROIECTARE ORIENTATE OBIECT …

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 apareîn mai multe
agregari diferite.
Agregarea este tranzitiva: un obiect este compus din alte
obiecte care, la rândul 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 transport-aprovizionare 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 rândul 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, pastrând 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 oricât 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 câte 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
Clasa
Instanta
superclasa
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) urmând 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 câte 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 apartinând unei clase este o instanta a tuturor
superclaselor acesteia. În consecinta, toate caracteristicile
superclaselor trebuie sa se aplice pâna 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 restrângere: implementarea operatiei introduce
restrictii sau limite referitoare la valoarea argumentelor sau la
tipul acestora, admitând submultimi ale argumentelor mostenite;
pentru optimizare: se da o noua implementare operatiei,
schimbând, spre exemplu, algoritmul de realizare, astfel încât
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 ramâne 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+
cardinalitate 1,n
1-5
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
PIESA
/
decalaj
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
contine
reprezinta
PIESA_CATALOG
nr. model
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 putând 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
poate varia, poate cuprinde toate evenimentele sau numai
evenimentele corespunzatoare unui anumit obiect sau
unei situatii.
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, urmând î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
specifica unei anumite situatii sau context.
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 decât 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).
Î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, câte una pentru fiecare dintre vitezele
de mers înainte spre punctul mort.
Comutarea mersului înainte plecând 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
poziþie
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 când acesta
poate fi partitionat în subansamble de atribute si legaturi, având 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 decât 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 pâna când aceste
operatii nu s-au realizat, indiferent de ordinea în care a
actionat clientul: a preluat mai întâi banii sau card-ul sau pe
amândoua simultan.
executa: distribuie bancnote
preluare bancnote
pregatire
reinitializare
executa: elibereaza card
retragere card
Exemplu: tranzactii bancare realizate prin bancomat
Ghiseu
Bancomat
Calculator
banca
Bancomat
Cont
Cont
Calculator
central
Cont
Bancomat
Calculator
banca
Cont
Cont
-Modelul obiectelor (modelul static)
Tranzactie
data-ora
Actualizare
suma
tip
Bancomat
disponibil
eliberat
Tranzactie
manuala
cod
statie
Casier
Banca
denumire
cod
cod
cont card
Tranzactie
automata
Autorizare
card
parola
limita
nume
cod
salariat
Cont
sold
limita creditare
tip
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: mesaj
cont invalid
executa:
cere suma
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) delimitând 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
Nomenclator
cod
pret
cauta pret
a
Client
retragere
actualizare
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 apartinând 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.
Cont bancar
verifica
disponibil
retragere
Client
actualizare
sold
Pentru o mai buna lizibilitate, diagramele de flux pot fi
imbricate astfel încât 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
sold
efectueaza
tranzactia
citeste
date
parola
genereaza
iesiri
mesaje
tip tranzactie
bancnote
suma
extras operatie
Client
Diagrama de flux al datelor
cod card, cod banca
cod card invalid
selecteaza
card
parola
parola
verifica
parola
parola incorecta
Cont
bancar
sold
tip tranzactie, suma
actualizeaza
cont
mesaje esec
bancnote
extras operatie