cursul 5 18 martie adiftene@infoiasiadiftene/scoala/2013/ip/... · 2013-03-11 · săptămâna 6-a...
TRANSCRIPT
![Page 2: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/2.jpg)
Din Cursurile trecute…
Diagrame UML ◦ Diagrame de Stări
◦ Diagrame de Activităţi
◦ Diagrame de Deployment
◦ Diagrame de Pachete
GRASP ◦ Information Expert
◦ Creator
◦ Low coupling
◦ High cohesion
◦ Controller
2
![Page 3: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/3.jpg)
Săptămâna 6-a e termenul limită pentru alegerea proiectului
După care urmează: documentare, înţelegere, knowledge transfer, diagrame use case, diagrame de clasă, implementare, unit testing, etc.
Săptămâna a 7-a începe efectiv lucrul la proiect, iar evaluarea se încheie în săptămâna a 15-a
În săptămâna a 8-a nu se fac ore…
3
![Page 4: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/4.jpg)
Diagrame UML
Diagrame Use Case
Diagrame de Clase
Diagrame de Secvenţă
Diagrame de Colaborare
4
![Page 5: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/5.jpg)
5
![Page 6: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/6.jpg)
6
![Page 7: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/7.jpg)
7
![Page 8: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/8.jpg)
8
![Page 9: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/9.jpg)
9
![Page 10: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/10.jpg)
Diagrame de stări, diagrame de activități
Elemente de bază
◦ Eveniment
◦ Acţiune
◦ Activitate
10
![Page 11: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/11.jpg)
Reprezintă ceva atomic care se întâmplă la un moment dat
Modelează apariţia unui stimul care poate conduce la efectuarea unei tranziţii
Are ataşată o locaţie în timp şi spaţiu
Nu are o durată în timp
Evenimentele pot fi: ◦ sincrone sau asincrone ◦ externe sau interne
11
![Page 12: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/12.jpg)
Semnal = stimul asincron care are un nume, este aruncat de un obiect şi este recepţionat de altul (ex. excepţii)
Apel de operaţie (de obicei sincron)
Trecerea timpului
Schimbarea rezultatului evaluării unei condiţii
12
![Page 13: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/13.jpg)
Reprezintă execuţia atomică a unui calcul
Are ca efect: ◦ returnarea unei valori
◦ schimbarea stării
Are o durată mică în timp
Exemplu: ◦ i++;
13
![Page 14: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/14.jpg)
Reprezintă execuţia neatomică a unor acţiuni
Are o durată în timp
Exemplu: ◦ vorbitul la telefon
◦ execuţia unei funcţii
14
![Page 15: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/15.jpg)
Folosită pentru a modela comportamentul unui singur obiect
Specifică o secvenţă de stări prin care trece un obiect de-a lungul vieţii sale ca răspuns la apariţia unor evenimente împreună cu răspunsul la acele evenimente
Una din cele mai răspândite metode de descriere a comportamentului dinamic al sistemelor complexe
15
![Page 16: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/16.jpg)
Conţine: ◦ Stări
◦ Tranziţii
16
![Page 17: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/17.jpg)
Reprezintă o perioadă din viaţa unui obiect în care acesta: ◦ Satisface anumite condiţii,
◦ Execută o acţiune sau
◦ Aşteaptă apariţia unui eveniment
Stările pot fi: ◦ Simple
◦ Compuse
Concurente
Secvenţial active
17
![Page 18: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/18.jpg)
Elementele unei stări: ◦ nume: identifică o stare
◦ tranziţii interne: acţiuni şi activităţi pe care obiectul le execută cât timp se află în acea stare
18
![Page 19: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/19.jpg)
Reprezintă o relaţie între două stări
Indică faptul că un obiect aflat în prima stare va efectua nişte acţiuni şi apoi va intra în starea a doua atunci când un anumit eveniment se produce
Notaţie grafică:
19
![Page 20: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/20.jpg)
Forma generală a unei tranziţii interne: nume eveniment (lista parametrilor) [cond gardă] / acţiune nume eveniment
◦ Identifică circumstanţele în care acţiunea specificată se execută ◦ nume predefinite: entry, exit, do, include
cond gardă este o expresie booleană care se evaluează
la fiecare apariţie a evenimentului specificat; acţiunea se execută doar în cazul în care rezultatul evaluării este TRUE
acţiunea poate folosi atribute şi legături care sunt vizibile entităţii modelate
20
![Page 21: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/21.jpg)
21
![Page 22: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/22.jpg)
Conţin ◦ Substări - pot conţine, la rândul lor, alte
substări
Secvenţial active (disjuncte)
Paralel active (concurente)
◦ Tranziţii interne
22
![Page 23: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/23.jpg)
Stare compusă cu substări secvenţial active:
23
![Page 24: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/24.jpg)
Stare compusă cu substări paralel active:
24
![Page 25: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/25.jpg)
25
![Page 26: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/26.jpg)
Folosită pentru a modela dinamica unui proces sau a unei operaţii
Evidenţiază controlul execuţiei de la o activitate la alta
Se ataşează: ◦ Unei clase (modelează un caz de utilizare)
◦ Unui pachet
◦ Implementării unei operaţii
26
![Page 27: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/27.jpg)
Poate conţine: ◦ Stări activitate/acţiune
◦ Tranziţii
◦ Obiecte
◦ Bare de sincronizare
◦ Ramificaţii
27
![Page 28: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/28.jpg)
Modelează execuţia unor acţiuni sau a unor subactivităţi
28
![Page 29: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/29.jpg)
Reprezintă o relaţie între două activităţi
Tranziţia este iniţiată de terminarea primei activităţi şi are ca efect preluarea controlului execuţiei de către a doua activitate
29
![Page 30: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/30.jpg)
Se foloseşte pentru a modela alternative (decizii) a căror alegere depinde de o expresie booleană
Are o tranziţie de intrare şi două sau mai multe tranziţii de ieşire
Fiecare tranziţie de ieşire trebuie să aibă o condiţie gardă
Condiţiile gardă trebuie să fie disjuncte (să nu se suprapună) şi să acopere toate situaţiile posibile de continuare a execuţiei
30
![Page 31: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/31.jpg)
31
![Page 32: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/32.jpg)
Folosită pentru a modela sincronizarea mai multor activităţi care se execută în paralel
Poate fi de două tipuri: ◦ fork: are o tranziţie de intrare şi două sau mai multe
tranziţii de ieşire
◦ join: are două sau mai multe tranziţii de intrare şi o singură tranziţie de ieşire
32
![Page 33: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/33.jpg)
33
![Page 34: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/34.jpg)
34
![Page 35: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/35.jpg)
Acţiunile sunt realizate de către obiecte sau operează asupra unor obiecte
Obiectele pot constitui parametri de intrare/ieşire pentru acţiuni
Obiectele pot fi conectate de acţiuni prin linii punctate cu o săgeată la unul din capete (orientarea săgeţii indica tipul parametrului - intrare sau ieşire)
35
![Page 36: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/36.jpg)
Un obiect poate apărea de mai multe ori în cadrul aceleiaşi diagrame de activităţi
Fiecare apariţie indică un alt punct (stare) în viaţa obiectului
Pentru a distinge apariţiile, numele stării obiectului poate fi adăugat la sfârşitul numelui obiectului
36
![Page 37: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/37.jpg)
37
![Page 38: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/38.jpg)
Modelează mediul hardware în care va funcționa proiectul
Exemplu: pentru a descrie un site web o diagramă de deployment va conține componentele hardware ◦ server-ul web,
◦ server-ul de aplicații,
◦ server-ul de baze de date
componentele software de pe fiecare din acestea ◦ Aplicația web
◦ Baza de date
modul în care acestea sunt conectate: ◦ JDBC, REST, RMI
38
![Page 39: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/39.jpg)
39
![Page 40: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/40.jpg)
40
![Page 41: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/41.jpg)
Pachetul: ◦ Este un container logic pentru elemente între care se
stabilesc legături
◦ Defineşte un spaţiu de nume
◦ Toate elementele UML pot fi grupate în pachete (cel mai des pachetele sunt folosite pentru a grupa clase)
◦ Un pachet poate conţine subpachete => se creează o structură arborescentă (similară cu organizarea fişierele/directoarelor)
41
![Page 42: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/42.jpg)
Relaţii: ◦ dependenţă <<access>> = import privat
◦ dependenţă <<import>> = import public
Ambele relaţii permit folosirea elementelor aflate în pachetul destinaţie de către elementele aflate în pachetul sursă fără a fi necesară calificarea numelor elementelor din pachetul destinaţie (similar directivei import din java)
Aceste tipuri de diagrame se realizează în cadrul diagramelor de clasă
42
![Page 43: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/43.jpg)
Elementele din Types sunt importate în ShoppingCart şi apoi sunt importate mai departe de către WebShop
Elementele din Auxiliary pot fi accesate însă doar din ShoppingCart şi nu pot fi referite folosind nume necalificate din WebShop
43
![Page 44: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/44.jpg)
Împart sisteme mari în subsisteme mai mici şi mai uşor de gestionat
Permit dezvoltare paralelă iterativă
Definirea unor interfeţe clare între pachete promovează refolosirea codului (ex. pachet care oferă funcţii grafice, pachet care oferă posibilitatea conectării la BD, etc...)
44
![Page 45: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/45.jpg)
Diagramele să nu fie nici prea complicate, dar nici prea simple: scopul este comunicarea eficientă
Daţi nume sugestive elementelor componente
Aranjaţi elementele astfel încât liniile să nu se intersecteze
Încercaţi să nu arătaţi prea multe tipuri de relaţii odată (evitaţi diagramele foarte complicate)
Dacă este nevoie, realizaţi mai multe diagrame de acelaşi tip
45
![Page 46: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/46.jpg)
Studiu de caz
46
![Page 47: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/47.jpg)
GRASP = General Responsibility Assignement Software Patterns (Principles)
Descrise de Craig Larman în cartea Applying UML and Patterns. An Introduction to Object Oriented Analysis and Design
Ne ajută să alocăm responsabilităţi claselor şi obiectelor în cel mai elegant mod posibil
Exemple de principii folosite în GRASP: Information Expert (sau Expert), Creator, High Cohesion, Low Couplig, Controller Polymorphism, Pure Fabrication, Indirection, Protected Variations
47
![Page 48: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/48.jpg)
Să facă: ◦ Să facă ceva el însuşi, precum crearea unui obiect
sau să facă un calcul
◦ Iniţializarea unei acţiuni în alte obiecte
◦ Controlarea şi coordonarea activităţilor altor obiecte
Să cunoască: ◦ Atributele private
◦ Obiectele proprii
◦ Lucrurile pe care le poate face sau le poate apela
48
![Page 49: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/49.jpg)
Traducere: şablon, model
Este o soluţie generală la o problemă comună
Fiecare pattern are un nume sugestiv şi uşor de reţinut (ex. composite, observer, iterator, singleton, etc.)
49
![Page 50: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/50.jpg)
Problemă: dat un anumit comportament (operaţie), cărei clase trebuie să-i fie atribuit?
O alocare bună a operaţiilor conduce la sisteme care sunt: ◦ Uşor de înţeles
◦ Mai uşor de extins
◦ Refolosibile
◦ Mai robuste
50
![Page 51: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/51.jpg)
Soluţie:
asignez o responsabilitate clasei care are informaţiile necesare pentru îndeplinirea acelei responsabilităţi
Recomandare:
începeţi asignarea responsabilităţilor evidenţiind clar care sunt responsabilităţile
51
![Page 52: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/52.jpg)
Carei clase trebuie sa-i fie asignată metoda
getTotal()? Mai trebuie alte metode?
52
![Page 53: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/53.jpg)
53
![Page 54: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/54.jpg)
Clasă Responsabilităţi
Sale să cunoască valoarea totală a cumpărăturilor
SalesLineItem să cunoască subtotalul pentru un produs
ProductSpecification să cunoască preţul produsului
54
![Page 55: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/55.jpg)
55
![Page 56: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/56.jpg)
Problemă: cine trebie să fie responsabil cu crearea unei instanţe a unei clase?
Soluţie: Asignaţi clasei B responsabilitatea de a crea instanţe ale clasei A doar dacă cel puţin una dintre următoarele afirmaţii este adevărată: ◦ B agregă obiecte de tip A
◦ B conţine obiecte de tip A
◦ B foloseşte obiecte de tip A
◦ B are datele de iniţializare care trebuie transmise la instanţierea unui obiect de tip A (B este deci un Expert în ceea ce priveşte crearea obiectelor de tip A)
Factory pattern este o variantă mai complexă
56
![Page 57: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/57.jpg)
Cine este responsabil cu crearea unei instanţe a clasei SalesLineItem?
57
![Page 58: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/58.jpg)
Deoarece Sale conţine (agregă) instanţe de tip SalesLineItem, Sale este un bun candidat pentru a i se atribui responsabilitatea creării acestor instanţe
58
![Page 59: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/59.jpg)
Cuplajul este o măsură a gradului de dependenţă a unei clase de alte clase
Tipuri de Dependenţă: ◦ este conectată cu
◦ are cunoştinţe despre
◦ se bazează pe
O clasă care are cuplaj mic (redus) nu depinde de “multe” alte clase; unde “multe” este dependent de contex
O clasă care are cuplaj mare depinde de multe alte clase
59
![Page 60: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/60.jpg)
Probleme cauzate de cuplaj: ◦ schimbări în clasele relaţionate forţează
schimbări locale
◦ clase greu de înţeles în izolare (scoase din context)
◦ clase greu de refolosit deoarece folosirea lor presupune şi prezenţa claselor de care depind
60
![Page 61: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/61.jpg)
Forme comune de cuplaj de la clasa A la clasa B sunt: ◦ A are un atribut de tip B
◦ O instanţă a clasei A apelează un serviciu oferit de un obiect de tip B
◦ A are o metodă care referenţiază B (parametru, obiect local, obiect returnat)
◦ A este subclasă (direct sau indirect) a lui B
◦ B este o interfaţă, iar A implementează această interfaţă
61
![Page 62: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/62.jpg)
Don’t talk to strangers
Orice metodă a unui obiect trebuie să apeleze doar metode aparţinând ◦ lui însuşi
◦ oricărui parametru al metodei
◦ oricărui obiect pe care l-a creat
◦ oricăror obiecte pe care le conţine
62
![Page 63: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/63.jpg)
Diagrama de clase
Diagrama de colaborare
63
![Page 64: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/64.jpg)
Exista legături între toate clasele
Elimină cuplajul dintre Register şi Payment
64
![Page 65: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/65.jpg)
Coeziunea este o măsură a cât de puternic sunt focalizate responsabilităţile unei clase
O clasă ale cărei responsabilităţi sunt foarte strâns legate şi care nu face foarte multe lucruri are o coeziune mare
O clasă care face multe lucruri care nu sunt relaţionate sau face prea multe lucruri are o coeziune mică (slabă)
65
![Page 66: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/66.jpg)
Probleme cauzate de o slabă coeziune: ◦ greu de înţeles
◦ greu de refolosit
◦ greu de menţinut
◦ delicate; astfel de clase sunt mereu supuse la schimbări
66
![Page 67: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/67.jpg)
Sunt principii vechi în design-ul software
Promovează un design modular
Modularitatea este proprietatea unui sistem care a fost descompus într-o mulţime de module coezive şi slab cuplate
67
![Page 68: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/68.jpg)
Problemă: Cine este responsabil cu tratarea unui eveniment generat de un actor?
Aceste evenimente sunt asociate cu operaţii ale sistemului
Un Controller este un obiect care nu ţine de interfaţa grafică şi care este responsabil cu recepţionarea sau gestionarea unui eveniment
Un Controller defineşte o metodă corespunzătoare operaţiei sistemului
68
![Page 69: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/69.jpg)
Soluţie: asignează responsabilitatea pentru recepţionarea sau gestionarea unui eveniment unei clase care reprezintă una dintre următoarele alegeri: ◦ Reprezintă întregul sistem sau subsistem (faţadă
controller)
◦ Reprezintă un scenariu de utilizare în care apare evenimentul;
69
![Page 70: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/70.jpg)
În mod normal, un controller ar trebui să delege altor obiecte munca care trebuie făcută;
Controller-ul coordonează sau controlează activitatea, însă nu face prea multe lucruri el însuşi
O greşeală comună în design-ul unui controller este să i se atribuie prea multe responsabilităţi (faţade controller)
70
![Page 71: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/71.jpg)
Studiu de caz
71
![Page 72: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/72.jpg)
Craig Larman. Applying UML and Patterns. An Introduction to Object Oriented Analysis and Design
Ovidiu Gheorghieş, Curs 6 IP
72
![Page 73: Cursul 5 18 Martie adiftene@infoiasiadiftene/Scoala/2013/IP/... · 2013-03-11 · Săptămâna 6-a e termenul limită pentru alegerea proiectului După care urmează: documentare,](https://reader034.vdocuments.pub/reader034/viewer/2022042117/5e95f39573d157622c4aac21/html5/thumbnails/73.jpg)
WebProjectManager: http://profs.info.uaic.ro/~adrianaa/uml/
Diagrame de Stare şi de Activitate: http://software.ucv.ro/~soimu_anca/itpm/Diagrame%20de%20Stare%20si%20Activitate.doc
Deployment Diagram: http://en.wikipedia.org/wiki/Deployment_diagram http://www.agilemodeling.com/artifacts/deploymentDiagram.htm
GRASP: http://en.wikipedia.org/wiki/GRASP_(Object_Oriented_Design)
http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/maps/class4/GRASPpatterns.html
Introduction to GRASP Patterns: http://faculty.inverhills.edu/dlevitt/CS%202000%20(FP)/GRASP%20Patterns.pdf
73