Sunteți pe pagina 1din 37

MINISTERUL EDUCAŢIEI, CULTURII și CERCETĂRII al REPUBLICII MOLDOVA

UNIVERSITATEA TEHNICĂ a MOLDOVEI


FACULTATEA CALCULATOARE, INFORMATICĂ și MICROELECTRONICĂ
DEPARTAMENTUL INGINERIA SOFTWARE și AUTOMATICĂ

Proiect de curs
Disciplina: Analiza și Modelarea Obiect Orientată
TEMA: Diagramele în limbajul UML pe baza aplicației
„Instagram”

Elaborat de: st.gr.TI-163 Begal Cleopatra – Maria

Chișinău 2018
Cuprins:
Introducere…………………………………………………………….…………………...….3
1. Analiza și Modelarea Obiect Orientată………………………………………………...….4
1.1 Analiza și conceperea obiectelor orientate………………………………………...…..4
1.2 Limbajul UML……………………………………………………………………...…4
1.3 Structura generală a limbajului UML……………………………………………...….5
2. Descrierea și reprezentarea proiectului în limbajul UML……………………………...…6
2.1 Diagrama caz – utilizare (Use Case)………………………………………………….6
2.2 Diagrama de secvență………………………………………………………………..11
2.3 Diagrama de colaborare……………………………………………………………...17
2.4 Diagrama claselor……………………………………………………………………22
2.5 Diagrama de stări…………………………………………………………………….25
2.6 Diagrama de activități………………………………………………………………..28
2.7 Diagrama de componente…………………………………………………………….31
2.8 Diagrama de plasare………………………………………………………………….34
Concluzii…………………………………………………………………………………36
Bibliografie………………………………………………………………………………37

2
Cleopatra Begal
Introducere

Analiza și modelarea pe obiecte orientate, comportă o varietate largă de activități cu


scopul de a realiza un obiect pe un sistem de prelucrare automata a datelor. Modelarea este
o parte esențială în orice proiect software. Ele sunt:
- reprezentări abstracte ale sistemului create în etapele care premerg codificare;
- analiza și specificarea cerințelor;
- proiectarea în detalii.

Modele de definiție și analiza cerințelor:

- exprimă cerințele supuse de sistem;


- corespunde unei vederi externe asupra sistemului.

Modele de proiectare:

- redau arhitectura sistemului;


- alocă cerințe pe subsisteme;
- distribuie procesele în sistem și sincronizează;
- descriu realizarea fizică a sistemului, echipamentele din component sa și repartiția
componentelor program.

Principalele scopuri ale modelării sunt:

- vizualizarea ca mijloc de ușurare a comunicării și înțelegerii;


- specificarea prin construirea de modele precise, neambigue și complete;
- documentarea cerințelor și a soluțiilor de proiectare și a modululiu de realizare.

Proiectarea fizică este cunoscută sub numele de proiectare de detaliu. În timpul


proiectării logice se prezintă o imagine generală a sistemului, în timp ce proiectarea fizică
însemnată o abordare detaliată a sistemului. În etapa de proiectare logică se acumulează
informațiile de natură să sintetizeze cerințele utilizatorilor noului sistem, operațiune prestată
de analiștii de sistem, iar în timpul proiectării fizice se prezintă punctele de vedere ale
specialiștilor, cum ar fi cei din domeniul programării, securității sistemelor, rețelelor etc.

3
Cleopatra Begal
1. Analiza și modelarea obiect orientată
1.1 Analiza și conceperea obiectelor orientate

Datorită dezvoltării rapide a tehnologiei informației, calculatorul a devenit un instrument


indispensabil oricarei persoane, un instrument prin intermediul căruia putem avea acces la
surse de informare datorită numărului imens de site-uri web existente, biblioteci virtuale, un
instrument cu ajutorul căruia orice persoană poate ține legătura cu familia sau cu prietenii,
și de asemenea cu ajutorul căreia putem obține informații într-un timp redus și cu costuri
minime. Se poate spune că trăim într-o lume, într-o societate informatizată.

1.2 Limbajul UML

Unified Modeling Language (prescurtat UML) este un limbaj standard pentru descrierea
de modele și specificații pentru software. Limbajul a fost creat de către consorțiul Object
Management Group (OMG) care a mai produs printre altele și limbajul de
programare CORBA. UML a fost la bază dezvoltat pentru reprezentarea complexității
programelor orientate pe obiect, al căror fundament este structurarea programelor pe clase,
și instanțele acestora (numite și obiecte). Cu toate acestea, datorită eficienței și clarității în
reprezentarea unor elemente abstracte, UML este utilizat dincolo de domeniul IT. Așa se
face că există aplicații ale UML-ului pentru management de proiecte, pentru business
Process Design etc.
Istoria dezvoltării limbajului UML începe în luna octombrie a anului 1994, cînd Grady
Booch şi James Rumbaugh din Rational Software Corporation au început să lucreze
împreună asupra unificării metodelor Booch şi OMT. Cu toate că aceste metode fiecare în
parte erau destul de cunoscute, lucrul în comun era organizat pentru cercetarea tuturor
metodelor OO cu scopul unificării celor mai avantajoase trăsături ale lor. Proiectul acestei
aşa zise metode unificate (Unified Method) versiunea 0.8 a fost pregătit şi publicat în luna
octombrie anului 1995. În toamna aceluiaşi an a aderat la ei şi Iv. Jacobson, tehnologul
principal al companiei Objectory AV (Suedia), cu scopul integrării metodei sale OOSE cu
celelalte două precedente.
Limbajul UML reprezintă limbajul de destinaţie generală al modelării vizuale, care este
elaborat pentru specificarea, vizualizarea, construirea şi documentarea componentelor
produsului soft, business-proceselor şi altor sisteme. Totodată limbajul UML este un mijloc
de modelare simplu şi puternic care poate fi utilizat efectiv pentru construirea modelelor
conceptuale, logice şi grafice ale sistemelor complexe de diferită destinaţie. Acest limbaj
conţine cele mai bune calităţi ale metodelor ingineriei de program care au fost utilizate cu
succes pe parcursul ultimilor ani la modelarea sistemelor complexe.
Limbajul UML este bazat pe un anumit număr de noţiuni principale care pot fi studiate
şi aplicate de către majoritatea programiştilor şi elaboratorilor cunoscuţi cu metodele de
analiza şi proiectarea obiect orientate. Totodată noţiunile de bază pot fi combinate şi extinse
în asa fel că specialiştii modelării orientate pe obiecte pot elabora de sinestătător modele ale
sistemelor complexe în diferite domenii de aplicare.

4
Cleopatra Begal
Utilizarea constructivă a limbajului UML este bazată pe inţelegerea principiilor
comune de modelare a sistemelor complexe şi a particularităţilor procesului de analiza şi
proiectarea obiect orientate. Alegerea mijloacelor expresive pentru construcţia modelelor
ale sistemelor complexe stabileşte din vreme problemele care pot fi rezolvate cu ajutorul
utilizării acestor modele. Totodată unul din principiile de bază pentru construirea modelelor
ale sistemelor complexe este principiul de abstractizare care presupune includerea în model
numai a acelor aspecte ale sistemului proiectat, care au nemijlocit legătura cu executarea de
către sistem a funcţiilor sale sau cu destinaţia lui de baza. Totodată toate detalii de
importanţa secundară sunt omise pentru ca procesul de analiza şi cercetare a modelului
primit să nu fie foarte complicat.

1.3 Structura generală a limbajului UML

UML constă din două parţi interdependente:


- semantica limbajului UML – reprezintă un careva metamodel, care defineşte sintaxa
abstracta şi semantica noţiunilor modelării orientate pe obiecte în limbajul UML.
- notaţia limbajului UML – reprezintă o notaţie grafica pentru reprezentarea vizuală a
semanticii limbajului UML.
Sintaxa abstractă şi semantica limbajului UML sunt descrise cu ajutorul unei anumite
submulţimi de notaţii ale UML. În completare la aceasta, notatia UML descrie
corespunderea sau reprezentarea notaţiei grafice în semantica noţiunilor de baza. În aşa fel
din punct de vedere funcţional aceste două părţi completează una pe altă. Totodată
semantica limbajului UML este descrisă pe baza unui metamodel care are trei reprezentări
aparte: sintaxa abstractă, reguli de construcţia corectă a expresiilor şi semantica.
Cercetarea semanticii limbajului UML presupune un careva stil semiformal de redare, care
unifica limbaje naturale şi formale pentru reprezentarea noţiunilor de baza şi regulilor de
extindere a lor.
Semantica se defineşte pentru două tipuri de modele de obiecte: de structura şi de
comportare. Modelele de structură, cunoscute ca modele statice, descriu structura
entităţilor sau a componentelor unui sistem inclusiv clase, interfeţe, atribute şi relaţii.
Modelele de comportare, numite uneori dinamice, descriu comportarea sau funcţionarea
obiectelor unui sistem, inclusiv metodele lor, colaborarea între ele, şi procesul de
schimbare a stărilor unor componente aparte şi al sistemului întreg.
Dicţionarul limbajului înclude trei tipuri de construcţii de bază:
- entităţi – abstracţii ce sunt elemente de bază a modelului;
- relaţii – legături între entităţi;
- diagrame ce grupează interesele entităţilor şi relaţiilor.
În cadrul limbajului UML toate reprezentările modelului unui sistem complex sunt
fixate în calitate de construcţii speciale grafice care deseori sunt reprezentate sub formă de
graf conex cu noduri – entităţi şi muchii – relaţii. În UML sunt definite nouă tipuri de
diagrame:
- diagrame cazurilor de utilizare (use case diagram);
- diagrame de clase (class diagram);
- diagrame de comportament (behavior diagrams);
5
Cleopatra Begal
- diagrame de stări (statechart diagram);
- diagrame de activităţi (activity diagram);
- diagrame de interacţiune (interaction diagrams);
- diagrame de secvenţă (sequence diagram);
- diagrame de colaborare (collaboration diagram);
- diagrame de realizare (implementation diagrams);
- diagrame de componente (component diagram);
- diagrame de plasare (deployment diagram).

2. Descrierea și reprezentarea proiectului în limbajul UML

Pentru efectuarea acestei sarcini, voi crea diagramele pe baza aplicației Instagram.
Instagram-ul este un serviciu online de photo – sharing/video – sharing, și de asemenea o
rețea care oferă utilizatorilor posibilotatea să încarce poze și video-uri, să le aplice filter
digitale, să le distribuie pe o varietate de rețele sociale cum ar fi Facebook, Twitter, Tumblr
și Flickr. Această aplicație a fost creat de Kevin Systrom și Mike Krieger și a fost lansat în
octombrie 2010. Serviciul a câștigat popularitate rapid în aprilie 2012, atingând cifra de 100
mln. de utilizatori înregistrați. Instagram-ul este distribuit prin App Store, Google Play și
Windows Phone Store. Aplicația a fost achiziționată de Facebook în aprilie 2012 pentru ~ 1
mlrd. $. În anul 2013, aplicația a crescut cu 23% în timp de Facebook, „compania – mama”
a crescut doar cu 3%.
Instagram-ul este una dintre cele mai utilizate rețele sociale în comunicarea
companiilor cu consumatorii. Conform datelor publicate, există 25 mln. de conturi de
business pe această aplicație, iar peste 80% dintre utilizatorii de Instagram din lume
urmăresc un cont de business. Un trend nou pentru utilizatori este postarea istoriilor (Stories
– Story), adică niște fotografii și video-uri temporare, disponibile pentru doar 24 de ore.
Acestea nu apar în News Feed, ci doar într-un compartiment dedicate, în partea superioară
a aplicației. Având în vedere creșterea rapidă a acestui nou format, Instagram Stories devine
un spațiu de promovare și pentru branduri, care nu trebuie ignorat în 2018. Adică, după
estimările specialiștilor, Stories-urile vor avea în curând o vizibiliatte mai mare decât
psotările din News Feed.
În Republica Moldova, este a treia după popularitate rețea de socializare. În ultimii
trei ani, s-au înregistrat peste 350k de utilizatori. Oamenii cu vârstele înte 18-24 de ani sunt
cei mai active pe această platformă. Aplicația este disponibilă atât pentru smartphone, cât și
desktop și web.

2.1 Diagrama de utilizare (Use Case)

Proiectarea a unei diagrame a cazurilor de utilizare urmăreşte scopurile următoare:


- determinarea limitelor comune şi a contextului domeniului de modelare la etapele
iniţiale de proiectare a unui sistem;
- formularea cerinţelor comune către comportare funcţională a sistemului proiectat;
- elaborarea modelului iniţial conceptual al unui sistem pentru detalierea de mai tîrziu
în forma modelelor logice şi fizice;
6
Cleopatra Begal
- pregătirea documentărei iniţiale pentru interacţiunea elaboratorilor unui sitem cu
clienţii şi utilizatorii.
Esenţa acestei diagrame constă în faptul că: sistemul proiectat se reprezintă ca o
colecţie de entităţi şi actori care colaborează cu sistemul cu ajutorul aşa numitor cazuri de
utilizare.
Cazul de utilizare deteremină o succesiune de acțiuni care trebuie să fie executate de
către sistemul proiectat la colaborarea lui cu un anumit actor. Scopul cazului de utilizare
constă în determinarea aspectului terminal sau fragmentului de comportare a unei entităţi
fără desfăşurarea structurii interne a acestei intităţi. În calitate de aşa entitate, poate fi un
sistem iniţial sau un element al modelului care dispune de comportament propriu, precum
este subsistemul sau clasa în modelul unui sistem.
Actorul – reprezintă orice entitate externă sistemului modelat, care colaborează cu
sistemul şi utilizează posibilităţile lui funcţionale pentru atingerea anumitor scopuri şi pentru
rezolvarea problemelor particulare. (vezi figura 1)

Figura 1 – Actorul

Interfaţa (interface) – specifică parametrii modelului care sunt vizibili din afară fără
indicarea structurii lor interne. În limbajul UML interfaţa este clasificatorul care
caracterizeză numai o parte limitată a comportării unei entităţi modelate.
Intre interfata si c-u putem folosi 2 relatii: - asocierea
dependenta.
Relatiile diagramei caz-utilizare:
- actor-actor: - dependență, genaralizare;
- actor – c_u: - asocierea.
- c_u – c_u: - dependență /stereotipuri/:”include”, ”extend”, ”depend”.

În figura ce urmează voi prezenta interfaţa aplicației, care este compusă din logarea (Log
In), înregistrarea (Sign Up) și logarea cu Facebook (vezi figura 2):

7
Cleopatra Begal
Figura 2 – Diagrama caz de utilizare pentru interfaţa principală a Instagramului

În figura următoare sunt afișate cerinţele a Facebook-ului. Când facem logarea cu


Facebook sunt prezente două spații unde trebuie să înserăm login-ul și password-ul și un
buton de accesarea datelor OK. (vezi figura 2):

Figura 2 – Diagrama Use Case a Facebook-ului

Însă dacă nu dorim să ne logăm cu Facebook-ul, putem să ne înregistrăm tastând pe


butonul „Sign up”, unde va cere următoarele cerinţe:
- numărul de telefon (phone number);
- e-mail;
- numele sau prenumele (name);
- login-ul sau nickname (nickname);
- parola (password). (vezi figura 3)

8
Cleopatra Begal
Figura 3 – Diagrama Use Case a Sign Up-ului

Dar dacă avem deja un account pe Instagram, putem să ne logăm cu “Log in”, unde
va fi necesar să introducem datele noastre, precum:
- nickname-ul (nickname);
- parola (password);
- butonul OK.

În caz că am uitat parola account-ului nostru, putem accesa “Forget password?”, unde
vor fi prezente următoarele cerințe, precum:
- tastează „Am uitat parola” (click „Forget Password”);
- tastează OK (click OK);
- înserează parole (insert password);
- înserează nickname (insert password). (vezi figura 4)

Figura 4 – Diagrama Use Case a Log in-ului

9
Cleopatra Begal
După ce ne-am logat sau înregistrat pe Instagram, ne va apărea pagina principală al
aplicației, unde ne va afişa cazurile de utilizare generale:
- noutăţile prietenilor (NewsFeed) ;
- căutare (Search);
- adăugare fotografii/video (+) ;
- notificări (Notifications) ;
- profilul tău (Your profile). (vezi figura 5)
-

Figura 5 – Diagrama Use Case a Account-ului

Dacă dorim să facem unele schimbări în profilul nostru, accesăm “Your Profile” (vezi
figura 6).

Figura 6 – Diagrama Use Case a My Profile

În ultima diagram de caz – utilizare voi prezenta care sunt particularitățile a editării
profilului (Edit Profile). (vezi figura 7)

10
Cleopatra Begal
Figura 7 – Diagrama Use Case a Edit Profile

2.2 Diagrama de secvență

Diagrama de secvență – colaborarea dintre obiecte poate fi studiată în timp și deci putem
vedea schimbul de mesaje din sus în jos și de la stînga la dreapta. În diagrama de secvenţă
se reprezintă numai obiectele care acţionează şi nu se reflectă asocierile statice cu alte
obiecte. Pentru diagrama de secvenţă momentul principal este dinamica colaborării între
obiecte în timp. Grafic fiecare obiect se reprezintă printr-un dreptunghi şi se plasează în
partea de sus a ciclului său de viaţă (vezi figura 8). În înteriorul dreptunghiului se indică
numele obiectului şi numele clasei despărţite prin două puncte. Totodată toată înregistrare
se subliniază, ce indică că obiectul este exemplarul unei clase. În caz dacă numele obiectului
lipseşte, atunci se indică numai numele clasei şi obiectul se consideră anonim.

Figura 8 – Primitivele grafice ale diagramei de secvenţă

Linia de viaţă a obiectului (object lifeline) se reprezintă printr-o linie verticală


punctată asociată cu un singur obiect în diagrama de secvenţă. Linia de viaţă defineşte
intervalul de timp în care obiectul există şi interacţionează cu sistemul dat.

11
Cleopatra Begal
Pentru a evidenţia obiectele active în limbajul UML se utilizează notaţia specială –
focus control (focus of control).
Fiecare legătura se descrie cu o totalitate de mesaje transferate cu care obiectele-
participante se schimbă. În acest sens mesajul (messaje) reprezintă un fragment de
informaţie care este transferat de către un obiect altuia.
Stereotipuri:
- call – invocă o operaţie sau procedură a obiectului-destinatar;
- return – returnează valoarea operaţiei executate obiectului apelant;
- create – crează alt obiect pentru executarea anumitor acţiuni;
- destroy – distruge un obiect. Se transmite în caz dacă este necesar a termina acţiunile din
partea obiectului existent sau dacă obiectul trebuie să elibereze resursele alocate;
- send – trimite un semnal unui obiect care se iniţializează asincron de către un obiect şi
este acceptat de altul. Diferenţa între un semnal şi un mesaj constă în fapt că semnalul
trebuie să fie descris în clasa obiectul căreia iniţializează transmiterea lui.

În primul rând vom realiza o diragamă de secvență de căutare a unei persoane Search
(vezi figura 9):
- intrăm pe Instagram ca USER;
- tastăm pe „căutare” (click button search);
- primim de la interfață (Interface) răspunsul/mesajul de afișare a interfeței de căutare
(display the interface search);
- tastăm pe marca de căutare la interfață pentru a introduce un nickname (click on
search label);
- introducem numele (write a name);
- user-ul face click pe căutare (Click on search);
- pentru a primi un răspuns, datele introduce la Interface sunt transmise la Server (Call
the data);
- serverul verifică dacă există așa utilizator/nickname (Verify the data);
- serverul transmite Interfeței că așa utilizator/nickname există (The nickname is
found);
- interfața transmite User-ului informația căutată ca răspuns (Display info).

12
Cleopatra Begal
Figura 9 - Diagrama de secvență a căutării unei personae

În următoare diagramă vom face schimbarea datelor pe profil (vezi figura 10):

- intrăm pe Instagram;
- facem click pe profilul meu (Click on My profile);
- Interfața ne dă arată interfața profilului meu (Display the My Profile);
- facem click pe editarea profilului (Click on Edit Profile);
- deoarece interfața nu ne va da un răspuns concret, acesta face un apel la Server (Call the
interface Edit Profile);
- server-ul verifică dacă este conectare la internet;
- serverul dă un răspuns Interfeței că este (Opening the Edit Profile);
- interfața partajează pe ecran setările (Display the interface Edit Profile);
- user-ul adaugă un nume (Add name);
- user-ul adaugă biografia sa (Add bio);
- user-ul adaugă o adresă e-mail (Add e-mail address);
- user-ul adaugă un număr de contact (Add phone number);
- user-ul face click pe OK la interfață așteptând un răpsuns (Click on OK);
- interfața transmite datele la Server de a salva schimbările făcute de User (Call to save
the changes);
- server-ul introduce aceste noi schimbări (Introducing the new data);
- server-ul transmite Interfeței că acest date s-au schimbat (Send the changed Interface);
- interfața transmite un răspuns User-ului cu profilul cu date schimbat (Display the
changed interface).

13
Cleopatra Begal
Figura 10 – Diagrama de secvență de schimbarea datelor pe profil

În diagrama următoare de secvență vom pune un like la poză, vom salva, și vom
comenta (vezi figura 11):
- deschidem Instagram-ul (Open the Instagram);
- interfața procesează deschiderea (Processing);
- interfața afișează noutățile din Instagram (Display the NewsFeed of Instagram);
- vom pune un like la poza Doinei sub nickaname-ul „doinelus.gr” (Like doinelus.gr
photo);
- salvăm această poză (Save the photo);
- user-ul comentează poza prin (Add a comment);
- user-ul face click de a posta (Click on Post);
- interfața transmite datele comentariului la Server de a posta acest comentariu prin (Send
to post a comment);
- server-ul verifică datele (Verify the data);
- server-ul transmite un răspuns Interfeței că acest comentariu este adăugat (Send that
comment is added);
- interfața transmite user-ului afișarea interfeței cu comentariul postat la poză (Display the
interface with ur comment).

14
Cleopatra Begal
Figura 11 – Diagrama de secvență pentru a pune like, scrie comentariu sau salva poza

În diagrama de secvență ce urmează, vom trimite un mesaj în direct (vezi figura 12):
- intrăm pe Instagram (Open the Instagram);
- interfața procesează deschiderea Instagramu-ului (Processing);
- interfața afișează pe ecran noutățile (Display the NewsFeed of Instagram);
- user-ul tastează pe Direct de a trimite un mesaj (Click on Direct);
- interfața afișează pe ecran interfața Director-ului (Display the interface of Direct);
- user-ul face click pe „+” de a căuta un conversator (Click on „+”);
- interfața afișează meajele/conversațiile (Display the interface of messages);
- user-ul tastează la căutarea unui nickname (Click on search);
- user-ul scrie un nickname (Write a nickname);
- interfața transmite la Server datele acetui nickname (Find the nickname);
- server-ul caută acest nickname (Verify the data);
- server-ul transmite Interfeței că a găsit așa nickname (Nickname is found);
- interfața transmite User-ului afișarea rezultatului (Display the interface with nickname);
- user-ul face click pe nickname de a scrie un mesaj (Click on nickname);
- interfața procesează această deschidere (Processing);
- interfața afișează conversația (Display the conversation);
- user-u face click de a scrie un mesaj (Click on to write a message);
- user-ul face click de a transmite mesajul (Click on to send a message);
- interfața transmite Server-ului ca să transmită acest mesaj (Send that message);
- server-ul transmite un răspuns precum că mesajul s-a trimis (Message is sent);
- interfața afișează User-ului interfața cu mesajul trimis (Display the interface with sent
message).

15
Cleopatra Begal
Figura 12 – Diagrama de secvență de transmiterea unui mesaj în Direct

Iar în ultima diagram de secvență va fi de postarea unei poze/video (vezi figura 13):
- intrăm pe Instagram;
- facem click pe „+” adică adăugare poză/video (Click on Add photo/video);
- interfața dă un răspuns ca să arate galleria (Display Add photo/video);
- user-ul caută o poză spre adăugare (Find a photo/video);
- user-ul tastează să facă următorul pas (Click on Next to continue);
- interfața procesează datele (Processing);
- interfața trimite datele cu poză (Send the interface with photo);
- user-ul editează poza cu diverse filtre (Editing the photo/video with filtres);
- user-ul face click pe următorul pas (Click on Next);
- interfața procesează datele (Processing);
- interfața trimite datele user-ului cu poza editată (Send the interface with edited
photo/video);
- user-ul scrie un comentariu/descrie poza (Write a description);
- user-ul face distribuirea pozei (Click on Share);
- interfața apelează la Server de a distribui poza/video (Call the interface to share the
photo/video);
- server-ul verifică dacă este conectat la internet ca să posteze poza (Verify the data);
- server-ul transmite un răspuns că poza este postata/adăugată (Send that photo/video is
added);
- interfața transmite un răspuns User-ului, cu afișarea interfeței cu poza/video postat
(Display the interface with added photo/video).
16
Cleopatra Begal
Figura 13 – Diagrama de secvență de postarea unei poze/video

2.3 Diagrama de colaborare

Particularitatea principală a diagramei de colaborare constă în posibilitatea de a


reprezenta grafic nu numai consecutivitatea colaborării dar şi toate relaţii structurale între
obiecte. În primul rînd în diagrama de colaborare sub formă de dreptunghiuri se reprezintă
obiectele care conţin numele obiectului, clasei, valorile atributului. Mai departe, ca şi în
diagrama de clase se indică asocierile între obiecte sub forma de linii de conectare. Totodată
pot fi indicate numele asocierilor şi al rolurilor obiectelor pentru asocierea dată.
Obiectul (object) este un exemplar aparte al clasei care este creat la etapa executării a
unui program. El poate avea un nume propriu şi valorile atributelor. Referitor la obiecte
formatul liniei ce conţine clasificatorul se completează cu numele obiectului:

<Numele obiectului>'/' <Numele rolului al clasificatorului> ':' <Numele clasificatorului>

Multiobiect (multiobject) reprezintă o mulţime de obiecte în una din terminaţiile


asocierei
Obiectul activ (active object) are un fir (thread) de control propriu şi poate iniţializa
activitatea de control. Totodată sub noţiune de fir se subînţelege un anumit flux de control
care poate fi executat în paralel cu alte fire de calcul sau cu fire de control în cadrul unui
proces de calcul sau control. (vezi figura 14)
1: create
a : Abonatul c:
arogant Conectare

Figura 14 – exemplu de d. de colaborare


17
Cleopatra Begal
Obiectul compus (composite object) sau obiectul-container este destinat pentru
reprezentarea obiectului care are structura proprie şi fire interne de control. Obiectul
compus este exemplarul clasei compuse care este legat cu parţile sale prin relaţii de
agregare sau compoziţie. Relaţii analogice leagă obiectele respective. (vezi figura 15)

Figura 15 – Obiect compus

Tipul de legătura se înscrie lînga terminaţia ei şi indică posibilitatea realizării acestei


legături. În limbajul UML pentru acest scop se utilizează:
- association – asociere (se presupune implicit, de aceea acest tip poate să nu fie
indicat).
- parameter – parametrul metodei.
- local – variabila locală a metodei.
- global – variabila globală. Domeniul ei de vizibilitate este toată diagrama de
colaborare.
- self – legătura reflexivă a obiectului care presupune transferul mesajelor către sine.
În diagrama de colaborare legătura reflexivă se reprezintă în formă de buclă în partea de
sus al dreptunghiului obiectului.

În prima diagramă de colaborare va fi de căutarea unui utilizator (vezi figura 16):


- tastăm pe „căutare” (click button search);
- primim de la interfață (Interface) răspunsul/mesajul de afișare a interfeței de căutare
(display the interface search);
- tastăm pe marca de căutare la interfață pentru a introduce un nickname (click on search
label);
- introducem numele (write a name);
- user-ul face click pe căutare (Click on search);
- pentru a primi un răspuns, datele introduce la Interface sunt transmise la Server (Call the
data);
- serverul verifică dacă există așa utilizator/nickname (Verify the data);
- serverul transmite Interfeței că așa utilizator/nickname există (The nickname is found);
18
Cleopatra Begal
- interfața transmite User-ului informația căutată ca răspuns (Display info).

Figura 16 – Diagrama de colaborare pentru căutarea unui nickname

Realizarea diagramei de colaborare de postarea unei poze pe Story (vezi figura 17).
Pașii care îi vom realiza:
- Deschidem Instagram-ul (Open the Instagram);
- Interfața procesează de afișarea pe ecran a mesajului (Processing);
- Tastăm pe adăugarea unei istorii (Click on Add Story);
- Interfața dă un răspuns de afișarea interfeței de publicarea une istorii (Display the Story’s
interface);
- Tastăm pe butonul care face poză (Click to take a photo);
- Interfața afișează poza (Display the photo);
- User-ul face click pe distribuirea pozei (Click to share the photo in story);
- Interfața transmite datele pentru distribuirea pozei (Send the data to publish the photo);
- Server-ul verifică conexiunea (Verify the data);
- Server-ul transmite interfeței că poza aste adăugată (Send that photo is added);
- Interfața transmite User-ului pagina de noutăți (Display the newsfeed Interface).

19
Cleopatra Begal
Figura 17 – Diagrama de colaborare de adăugarea unei poze pe story

Realizarea unei diagrame de colaborare pentru arhiarea unei poze. (vezi figura 18)
Pașii care urmează să îi împlementăm:
- Deschidem Instagram-ul (Open the Instagram);
- Afișarea pe ecran noutățile Instagram (Display the newsfeed);
- Tastăm pe profilul meu (Click on My profile);
- Afișarea profilului meu (Display My profile);
- Tastăm/alegem o poză spre arhivare (Click a photo);
- Afișarea pozei spre arhivare (Display the interface with opened photo);
- Tastăm pe setări (Click on Settings);
- Afișarea setărilor (Show the Settings);
- Tastăm pe ahivarea pozei (Click on archive);
- Interfața transmite datele spre arhivarea pozei (Send the data to archive photo);
- Server-ul verifică conexiunea (Verify the data);
- Server-ul transmite că poza este arhivată (Send that photo is archived);
- Interfața afișează profilul meu cu poza arhivată (Display the My profile with archived
photo).

20
Cleopatra Begal
Figura 18 – Diagrama de colaborare de arhivarea unei poze

Vizionarea mesajelor în diagrama de colaborare la nivel se specificații (vezi figura 19):


În această diagramă am elaborat generalizarea unei situații de a scrie un mesaj în direct.

Figura 19 – Caz real de transmiterea unui mesaj în direct

21
Cleopatra Begal
2.4 Diagrama de clase

Diagrama de clase (class diagram) se utilizează pentru reprezentarea structurii statice a


unui modelde sistem in terminologia claselor programării OO. Diagrama de clase poate
reflecta diferite legăturiintre entităţile domeniului de obiecte (obiecte şi subsisteme) şi
descrie structura lor internă şitipurile de relaţii.
Diagrama de clase reprezintă un graf cu noduri – elemente de tip ≪clasificatori≫ care
sunt legateprin diferite tipuri de relaţii de structură. Trebuie de menţionat că diagrama de
clase poate conţine interfeţe, pachete, relaţii şi chiar exemplare, aşa ca obiecte şi legături.
Clasa (class) in limbajul UML defineşte totalitatea de obiecte care au aceeaşi structură,
comportament şi relaţii cu obiectele din alte clase.
Numele clasei trebuie să fie unic in cadrul pachetului, care este descris de către o
totalitate de diagrame de clase. Numele se indică in prima secţiune de sus a dreptunghiului.
În a doua secţie a dreptunghiului de clasă se inscriu atributele lui sau prorietăţile.
Fiecărui atribut de clasăi corespunde rândul textului, care este format din specificatorul de
vizibilitate a atributului, numelui lui, tipul sensului şi posibil sensul final:

<<specificatorul de vizibilitate>> <<numele atributului>> [multiplicitate]:


<<tipul atributului>>=<<sensul final>> {aliniat-proprietate}

Specificatorul de vizibilitate poate primi unul dintre cele trei sensuri şi concomitent
reflectă cu
ajutorul simbolurilor speciale:
- simbolul + inseamnă atributul cu regiunea de vizibilitate de tip public (public).
- simbolul #. inseamnă atributul cu regiunea de vizibilitate de tip protecţie
(protected).
- în sfirşit, simbolul – atributul cu regiunea de vizibilitate tipului privat. (private).

În a treia secţie a dreptunghiului de clasă se inscriu operaţii sau metodele clasei.


Operaţia (operation) prezintă un anumit serviciu, care prezintă fiecare exemplar al clasei
după anumită cerinţă. Totalitatea de operaţii caracterizează un aspect funcţional in
comportamentul clasei.

Relaţiile de bază şi legăturile sunt:


- relaţia de dependenţa (dependency relationship);
- relaţia de asociere (association relationship);
- relaţia de generalizare (generalization relationship);
- relaţia de realizare (realization relationship).

Stereotipurile la relația de dependență:


- <<access>> – serveşte ca indicator de accesibilitate unor atribute şi operaţii clasei
– sursă pentru clase–clienţii;
- <<bind>> – clasa–client pote utiliza careva şablon pentru următoarea
parametrizare;
22
Cleopatra Begal
- <<derive>> – atributul clasei – client poate fi calculat după atributele clasei –
sursă;
- <<import>> – atribute deschise şi operaţii publice clasei – sursă devine o parte a
clasei – client
- <<refine>> – indică că clasa – client serveşte ca precizie a clasei
Stereoripurile la relația de generalizare:
- {complete};
- {incomplete};
- {disjoint};
- {overlapping}.

În prima figură (vezi figura 20) a diagramei de clase, este reprezentată interfața
aplicației și logarea pe această platformă:
- clasa Log In (interface);
- clasa Log In;
- clasa Server;
- clasa User;
- clasa Users;
- clasa Business.

Figura 20 – Diagrama de clasă a logării în aplicație


23
Cleopatra Begal
În figura ce urmează (vezi figura 21) voi atașa o diagramă de clasă de modificarea
setărilor (vezi figura 21):
- clasa Account Instagram;
- clasa Change Settings;
- clasa Business_1;
- clasa User_1;
- clasa Server.

Figura 21 – Diagrama de clasă pentru modificări

Iar pentru ultima diagramă de clasă este pentru interfața Story (vezi figura 22), care
are mai multe compartimente, și aceste sunt clasificate în următoarele clase:
- clasa Story (interface);
- clasa Story;
- clasa Add_post;
- clasa Superzoom;
- clasa Type;
- clasa Rewind.

24
Cleopatra Begal
Figura 22 – Diagrama de clasă pentru Story

2.5 Diagrama de stări

Diagrama de stări descrie procesul de modificare a stărilor pentru o anumită clasă.


Această diagramă este folosită pentru descrierea consecutivităţilor de stări posibile şi
trecerilor, care in ansamblu caracterizează comportamentul elementelor modelului in timpul
ciclului de viaţă. Diagrama de stări reprezintă comportamentul dinamic a entităţilor in baza
specificaţiei reacţiei lor la perceperea căror-va evenimente concrete. Un automat –
reprezintă o diagramă de stări.
Elementele de bază sunt:
- stările;
- tranzițiile.
Starea (state) poate fi în formă de valori concrete a atributului clasei sau obiectului, în
acest caz modificarea anumitelor valorilor va respinge modificarea clasei modelate sau a
obiectului. (vezi figura 23)

25
Cleopatra Begal
Figura 23 – Reprezentarea stărilor
Numele stării reprezintă aliniat de text, care dezvăluie sensul stării date. Numele este
întodeauna scris cu litera majusculă.
Pseudostări: (vezi figura 24)
- initială;
- finală;

Figura 24 – Reprezentarea pseudostărilor

Fiecare tranziţie poate fi marcată cu aliniat de text, care are următorul format general:
<signatura evenimentului>'['<condiţia de pază>']' <exprimarea acţiunii>.
Termenul eveniment (event) trebuie explicat aparte, deoarece el este un element
independent al limbajului UML. Opţional evenimentul reprezintă specificaţia anumitui fapt,
care are ataşată o locaţie in timp şi in spaţiu.
Condiţia gardă (guard condition), dacă există, atunci intodeauna este scrisă in
paranteze dreptungiulare după evenimentul – triger şi reprezintă expresie buleană.
Expresia acţiunii (action expression) se execută atunci şi numai atunci cind se execută
tranziţia. Reprezintă operaţia atomică, care se execută după efectuarea tranziţiei respective
inainte de oricare acţiune in starea obiectivă.

În figura 25 (vezi figura 25) este prezentată diagrama de stare în baza software-ului
Instagram, de intrare în account-ul nostru, și de ieșirea de acolo. Am introdus starea inițială
(Initial) și starea finală (Final), adică acestea sunt două pseudostări, utilizând ramificatorul
pentru simularea stărilor posibile.

Figura 1 – Diagrama de stare de intrare și ieșire Instagram

26
Cleopatra Begal
În figura următoare (vezi figura 26) am realizat o diagramă de stare de căutarea unui
profil după nickname, unde de asemenea am folosit acele două pseudostări și ramificatorul.
În primul rând facem accesul pe profilul nostru introducând login-ul și parola, după care
accesăm în fereastra de căutare a utilizatorilor de pe Instagram. După ce am introdus
nickname-ul de care avem nevoie, poate să apară fereastra goală fiindcă nu există așa
nickname și trebuie să introducem unul corect sau asemănător. Ne este dat lista de utilizatori
care poată să conțină aceleași litere sau cifre sau combinații de nume, și accesăm pe
nickname-ul dorit, și se va deschide o fereastră nouă.

Figura 26 – Diagrama de stare de căutarea unui utilizator după nickname

În ultima figură pentru diagrama de stare voi prezenta punerea unui like, unui
comentariu și/sau de a trimite unui priten o postare. Folosim de asemenea acele 2 pseudostări
și ramificatorul. Facem accesul pe profilul nostru, după care accesăm în căutare și roșăm în
jos de a vedea o postare interesantă. Punem like, scrim comentariu, și ne împărtășăm cu
această postare unui prieten. (vezi figura 27)

27
Cleopatra Begal
Figura 27 – Diagrama de stare de punerea unui like, comentariu, trimite în direct

2.6 Diagrama de activități

În contextul limbajului UML activitatea (activity) reprezintă o totalitate de calcule


executate de către automat. Totodată calculele elementare pot duce la un anumit rezultat sau
careva acţiune (action). În diagrama de activităţi se reflectă logica sau consecutivitatea
tranziţiilor de la o acţiune la alta, totodată se evidenţiază rezultatul activităţii. Rezultatul, la
rindul său poate duce la schimbarea stării sistemului dat sau la returnarea unei valori.
Starea activităţii este un caz particular a stării. Starea activităţii nu poate avea tranziţii
interne fiindcă ea nu este elementară. Starea activităţii se utilizează pentru modelarea unui
pas de executarea a algoritmului (procedurii) sau a unui flux de control. Grafic starea
activităţii se reprezintă printr-o figură asemanatoare cu dreptunghiul, laturile laterale ale
căruia sunt substituite cu arcuri convexe (printr-un dreptunghi cu colţuri rotunjite). (vezi
figura 28)

Figura 28 – Reprezantarea stării de activitate

Tranziţia – la construirea diagramei de activităţi se utilizează careva tranziţii netrigere


care acţionează deodată după perfectarea activităţii sau după executarea acţiunii
corespunzatoare. Această tranziţie transmite activitatea în următoarea stare, imediat după ce
se termină acţiunea din starea precedentă. În diagramă această tranziţie se reprezintă printr-
o linie continuă cu o săgeată.
Diagramele de stări pot fi utilizate nu numai pentru specificarea algoritmelor de
calculare sau fluxurilor de control in sistemele de programare.
Pentru modelarea acestor particularităţi in limbajul UML se foloseşte construcţia
specială, care aredenumire de partiţii (swimlanes), care sunt divizate unul cu altul cu linii
verticale. Două linii vecine formează o partiţie, iar un grup de stări intre aceste linii sunt
28
Cleopatra Begal
executate de subdiviziunea separată (secţie, filial, diviziuni) a companiei. În cazul general
acţiunile în diagrama de activitate sunt efectuate cu obiecte. Aceste obiecte iniţializează
executarea acţiunilor sau definesc un anumit rezultat a acestor acţiuni. În urma căruia
acţiunile specifică apelurile, care trec de la un obiect a grafului de activitate la altul.
În diagrama de activitate cu partiţii deplasarea obiectelor poate avea un sens
adăugător. Şi anume, dacă obiectul este amplasat la hotarul ambilor partiţii, aceast lucru
înseamnă că trecerea la starea de acţiune următoare în partiţia vecină este asociată cu un
document finit (obiectul în careva stare). Dar dacă obiectul este amplasat înăuntrul partiţiei,
atunci starea acestui obiect este definită de acţiunile partiţiei date.

În figura ce urmează este reprezentat diagrama de activitate de schimbarea unor


date persoanale, precum biografia (Bio) și numele (Username). Am împărțit diagrama în 3
diviziuni (vezi figura 29), fiindcă aplicația Instagram lucrează dacă este coenxiune la internet:
- user;
- instagram;
- server.

Figura 29 – Diagrama de activitate pentru schimbarea biografiei și numelui

29
Cleopatra Begal
În figura următoare (vezi figura 30), voi prezenta diagrama de activitate de a căuta
un utilizator pentru a trimite un mesaj. De asemenea am folost acele 3 diviziuni:

Figura 30 – Diagrama de activitate de a trimite un mesaj unui utilizator

Și în ultima diagramă a acvitității voi prezenta cum utilizatorul poate pune like și
posta un comentariu la o postare. Am folosit aceelași diviziuni. (vezi figura 31)

30
Cleopatra Begal
Figura 31 – Diagrama de activitate de postarea unui like și comentariu

2.7 Diagrama de componente

Diagrama de componente permite determinarea arhitecturii sistemului elaborat prin


stabilirea dependenţei între componentele de program în calitate de care poate fi codul
iniţial, binar şi executabil. În mai multe domenii de elaborare modul şi componenta
corespund fişierului. Săgeţile punctate care leagă modulele arată relaţiile de dependenţa
analogice celor ce au loc la compilarea codurilor sursei iniţiale. Elementul grafic de bază
al diagramei de componente sunt componentele, interfeţele şi dependenţele între ele.
Diagrama de componente se elaborează pentru urmatoarele scopuri:
- vizualizarea structurii comune a codului sursă a unui sistem de program;
- specificarea variantei executabile a unui sistem de program;
- asigurarea utilizării repetate a unor fragmente ale codului sursă;
- reprezentarea conceptuală şi fizică a schemelor bazei de date.

În metamodelul limbajului UML componentul este descendentul clasificatorului. El


reprezintă organizaţia în cadrul unui pachet fizic cu care el este asociat cu ajutorul
31
Cleopatra Begal
elementelor unui model. În calitate de clasificator componentul poate să aibă aşa
proprietăţi ca atribute şi operaţii. (vezi figura 32)

Figura 32 – Reprezentarea componentei

În limbajul UML sunt specificate trei feluri de componente:


- componente de regrupare, care specifică executarea de către sistem a funcţiilor
sale. Aşa fel de componente pot fi librării conectate dinamic cu extensia .dll
(fig. 69, a), Web – pagini în limbajul de trasare hipertextului cu extensia .html (fig.
69, b) şi fişierele de adeverinţă cu extensia .hip (fig. 69, c).
- componente – produse de lucru. Ca regulă acestea sunt fişierele cu texte iniţiale a
programului, de exemplu, cu extensia .h sau .cpp pentru limbajul C++ (fig. 69, d).
- componentele de executare, ce reprezintă modulele – fişierele cu extensia .exe. Ei
se indică obişnuit. (vezi figura 33)

Figura 33 – Reprezentarea componentelor

Un alt mod de specificare a diferitor feluri componentelor este indicarea


steriotipului componentului înaintea numelui lui. În limbajul UML pentru componente
sunt specificate următori steriotipuri:
- librărie (library) – defineşte prima specie a componentuluui, care reprezentă
librărie dinamică sau statică.
- tabel (table) – defineşte prima specie a componentului, care reprezentă un tabel de
baze de date.
- fişier (file) – defineşte a doua specie a componentului, care reprezintă un fişier cu
texte iniţiale a programului.
- document (document) – defineşte a doua specie a componentului, care reprezintă
un document.
- executare (executable) – defineşte a treia specie componentului, care poate fi
executat în nod.

În figura ce urmează este reprezentată diagrama de componente care descrie din ce este
compusă aplicația Instagram. (vezi figura 34)

32
Cleopatra Begal
Figura 34 – Diagrama de componente a descrierii aplicației

În figura 35 este reprezentată diagrama care arată prin ce putem naviga această
aplicație. Ea este scrisă pentru App Web, App Mobile, App Desktop de la windows 8 în sus.
(vezi figura 35)

Figura 35 – Diagrama de componente a navigării aplicației

Și în ultimile figuri sunt reprezentate care sunt librariile aplicației care este navigată
prin mobil/smartphone sau web. (vezi figurile 36, 37)

33
Cleopatra Begal
Figura 36 – Diagrama de componente pentru aplicația mobilă

Figura 37 – Diagrama de componente pentru aplicația web browser

2.8 Diagrama de plasare

Diagrama de plasare este specifică pentru vizualizarea elementelor şi componentelor a


programului, ce există numai la etapa executării lui (runtime). În urma căruia sunt prezentate
numaicomponente – exemplare a programului, care sunt fişiere de executare sau librăriile
dinamice. Acele componente, care nu sunt utilizate la etapa executării, în diagrama de
plasare nu sunt indicate.

34
Cleopatra Begal
Nodul (node) reprezintă un anumit element fizic a sitemului, care are o anumită resursă
de calculare. Ca resursă de calculare a nodului poate fi o valoarea electronică sau
magnitioptică a memoriei sau procesorului. (vezi figura 38)

Figura 38 – Reprezentarea grafică a nodului

Dacă este necesar de indicat componentele, care sunt deplasate în nodul separat, atunci
pentru această există două moduri. Primul din ei dă posibilitate de a împărţi simbolul grafic
în două secţii cu linie orizontală. În secţiunea cea de sus este scris numele nodului, iar în cea
de jos- componente deplasate la nodul dat .Al doilea mod permite deplasarea în diagrama
de plasare nodurile cu componentele depuse. Ca componente depuse pot fi numai
componentele executante.

În figura 39 este reprezentat diagrama de plasare de vizualizarea elementelor și


componentelor a aplicației Instagram. (vezi figura 39)

Figura 39 – Diagrama de plasare a aplicației Instagram

35
Cleopatra Begal
Concluzii:
Elaborând acest proiect de curs, m-am familiarizat cu un nou limbaj – UML, adică
modelarea vizuală a unor aplicații. Am aflat care sunt componentele de bază al acestui
limbaj, care este structura sa generală, entitățile, relațiile și desigur diagramele. La număr
ele sunt 8, diagrama de caz – utilizare, de secvență, de colaborare, de clase, de stări, de
activități, de componente și ultima diagrama de plasare.
Acest limbaj este un instrument standart pentru crearea și modelarea carcaselor de
documentare a unui produs sau obiect. Este un limbaj de specificare, de vizualizare,
construcție și documentarea artefactelor sistemelor de program.
Cele mai importante principii în modelare sau construcție, este aplicarea sa în
practică prin intermediul diagramelor. Și anume folosind platforma Enterprise Architect
(EA), care are o posibilitate de a contrui, a poriecta sisteme de software, diverse aplicații,
procese de afaceri precum și industria de modelare bazate pe domenii. Este atât folositor în
afacere și sisteme de tehnologii informaționale, cât și în integrarea dezvoltării în timpul
real.
Pentru realizarea acestei sarcini, am creat diagrame pe baza aplicației Instagram,
care este un serviciu online de poze/video distribuire, și desigur care oferă utilizatorilor
posibilitatea să încarce poze/video aplicaând diferite filtre, efecte, să le distribuie pe o
varietate de rețele sociale cum ar fi Facebook, Twitter și multe altele.

36
Cleopatra Begal
Bibliografie:
- conspect din cursul AMOO;
- http://www.uml.org/
- https://www.uml-diagrams.org/
- https://www.smartdraw.com/uml-diagram/

37
Cleopatra Begal

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