Sunteți pe pagina 1din 15

MINISTERUL EDUCAŢIEI ȘI CERCETĂRII AL REPUBLICII MOLDOVA

IP CENTRUL DE EXCELENŢĂ ÎN INFORMATICĂ ŞI TEHNOLOGII INFORMAŢIONALE


CATEDRA DE INFORMATICĂ I

TUTORIAL
TEMATIC

LA UNITATEA DE CURS:
TEHNOLOGII AVANSATE DE PROGRAMARE

TEMA: Limbajul UML

Grupa: P-1841
Elev (ul/a):
Ciobanu Stanislav

Profesor:
Luncașu G.

Chişinău, 2021
CUPRINS:

1. Noțiuni și elemente generale ale limbajului UML

2. Scopul utilizării limbajului UML

3. Tutorial scris cu imagini și pe pași explicat

4. Concluzie

5. Bibliografie

2
Noțiuni și elemente generale ale
limbajului UML și scopul utilizării acestuia:

UML (English Unified Modeling Language) este un limbaj de descriere grafică


pentru modelarea obiectelor în domeniul dezvoltării software, pentru modelarea
proceselor de afaceri, proiectarea sistemelor și afișarea structurilor organizaționale.
Cuvântul Unified este important aici. Adică schemele noastre vor fi înțelese nu numai de
noi, ci și de alții care cunosc UML. Rezultă că aceasta este un limbaj internațional pentru
desenarea diagramelor. Defapt, UML este un limbaj cu bază largă. Este un standard
deschis care utilizează notația grafică pentru a crea un model abstract al unui sistem
numit model UML. UML a fost creat pentru a defini, vizualiza, proiecta și documenta, în
principal sisteme software. UML nu este un limbaj de programare, dar este posibilă
generarea de cod pe baza modelelor UML.

Fig. 1 – Logotip-ul limbajului UML

UML are mai multe specificații, de exemplu UML1 sau UML2.


3
UML permite, de asemenea, dezvoltatorilor de software să convină asupra
notațiilor grafice pentru a reprezenta concepte comune (cum ar fi clasă, componentă,
generalizare, agregare și comportament) și să se concentreze mai mult pe arhitectură.

Precondițiile pentru apariția limbajului de modelare UML au fost identificate în


legătură cu dezvoltarea rapidă în a doua jumătate a secolului al XX-lea a limbajelor de
programare orientate pe obiecte (Simula 67, Smalltalk, Objective C, C++ etc.) . Datorită
complicației necontenite a produselor software create, a devenit necesar să se ia în
considerare tot mai multe posibilități noi ale limbajelor și instrumentelor de dezvoltare în
analiza, formularea cerințelor și în procesul de proiectare a aplicațiilor software.

De exemplu, într-un interval scurt de timp din 1989 până în 1994, numărul de
instrumente orientate pe obiect a crescut de la o duzină la mai mult de cincizeci. Cu
toate acestea, mulți dezvoltatori au găsit dificil să găsească un limbaj de modelare care
să le satisfacă pe deplin toate nevoile. Drept urmare, a apărut o nouă generație de
metode de dezvoltare, printre care metoda Booch, creată de Jacobson’s Object-Oriented
Software Engineering (OOSE) și dezvoltată de Object Modeling Technique (OMT) a lui
Rambeau, a câștigat o popularitate deosebită. Pe lângă acestea, au existat și alte
tehnologii finalizate, precum Fusion, Shlaer-Mellor și Coad-Yourdon, dar toate aveau nu
numai avantaje, ci și dezavantaje semnificative.

În octombrie 1995, a fost lansată o versiune preliminară a UML (0.8), iar cea mai
recentă versiune este în prezent 2.5.1, care a apărut în decembrie 2017 și a fost
acceptată ca standard ISO international în domeniul metodelor și notațiilor orientate
obiect.

Limbajul UML a fost ales ca standard deoarece are numeroase avantaje, printre
care:

 este orientat pe obiecte, drept urmare metodele de descriere a rezultatelor


analizei și proiectării sunt apropiate semantic de metodele de programare
în limbajele moderne orientate pe obiecte;

4
 permite să descriem sistemul din aproape toate punctele de vedere posibile
și diferite aspecte ale comportamentului sistemului;

 Diagramele UML sunt relativ ușor de citit după o familiarizare destul de


rapidă cu sintaxa acesteia;

 se extinde și vă permite să introduceți propriul text și stereotipuri grafice,


ceea ce contribuie la aplicarea sa nu numai în domeniul ingineriei software;

 este larg răspândit și dinamic.

Probabil ați atras atenția că am menționat mai sus noțiunea de diagrame UML. Se
pare că este timpul să vă discrifrez ce sunt acestea, deoarece anume pe conceptul de
diagrame se bazează limbajul UML. Așadar, o diagramă în limbajul de modelare UML
este o reprezentare vizuală a unui anumit set de elemente ale unui model de sistem sub
forma unui grafic pe care arce (relații) conectează vârfuri (entități).

În forma lor grafică, diferite tipuri de diagrame UML (diagrame de clase,


componente, obiecte etc.) sunt folosite pentru a vizualiza diferite aspecte ale
dispozitivului sau comportamentului unui sistem modelat. Diagrama nu aparține
elementelor semantice ale UML și semnificația ei nu depinde de modul în care este
prezentată. În afară de rarele excepții, cea mai mare parte a informațiilor pe care le
transportă este conținută nu în dimensiunea sau locația elementelor sale, ci în
configurația sa topologică. Cele mai frecvent utilizate sunt trei tipuri principale de relații
vizuale între elemente:

 conexiune (sub formă de linii de la o formă bidimensională la alta)

 includere (sub forma plasării unor forme în interiorul altora)

 întărire vizuală (sub formă de aşezarea unor simboluri aproape de altele)

Este de asemenea posibilă prezentarea acestei notații în formă analitică ca un set


de conexiuni ale nodurilor de graf. Limbajul de modelare UML oferă utilizatorului său un
număr mare de tipuri predefinite de diagrame. De obicei, tipul fiecărei diagrame este
determinat de majoritatea elementelor pe care le afișează. Cu toate acestea, nimic nu-l

5
împiedică pe proiectant să-și definească propriul tip de diagramă pe baza cerințelor
acestei sarcini particulare.

În cadrul notației UML, patru tipuri de primitive grafice sunt utilizate pentru a
construi toate tipurile de diagrame:

 pictograme,

 rute,

 simboluri bidimensionale,

 șiruri.

Fiecare diagramă poate fi reprezentată ca un cadru cu conținut grafic. Numele


diagramei și subsetul sistemului pe care diagrama le ilustrează trebuie indicate în
interiorul cadrului. În colțul din stânga sus al cadrului, este reprezentat un pentagon cu o
etichetă de nume, care poartă informații despre numele și tipul diagramei.

Deci, limbajul UML utilizează următoarele tipuri de diagrame:

 Diagrame structurale:

 Diagrama de clasă

 Diagrama componentelor

 Diagrama structurii composite

 Diagrama de cooperare

 Diagrama de implementare

 Diagrama obiectului

 Diagrama pachetului

 Diagrama de profil

6
 Diagrame de comportament:

 Diagrama de activitate

 Diagrama stărilor

 Diagrama de caz de utilizare

 Diagrame de interacțiune:

o Diagrama de comunicare

o Diagrama de cooperare

o Diagrama de prezentare generală a interacțiunii

o Diagrama secvenței

o Diagrama de sincronizare

Structura diagramelor UML poate fi reprezentată într-o diagramă de clasă UML:

7
În ciuda faptului că UML este un standard destul de răspândit și utilizat, este
adesea criticat pentru următoarele neajunsuri:

 Redundanța limbajului. UML este inutil de mare și complex. Include multe


diagrame și construcții practic neutilizate, din motiv că era necesare
compromise.

 Semantică inexactă. UML este definit printr-o combinație între el însuși


(sintaxă abstractă), OCL (limbaj de descriere a constrângerilor - validare
formală) și engleză (semantică detaliată), este lipsit de constrângerile
inerente limbilor definite precis de tehnicile de descriere formală.
Inexactitățile în descrierea UML în sine afectează atât utilizatorii, cât și
furnizorii de instrumente.

 Probleme în studiu și implementare. Problemele de mai sus fac învățarea și


implementarea UML problematice, mai ales atunci când managementul îi
obligă pe ingineri să folosească UML fără abilități anterioare.

 Numai codul oglindește codul. După cum spunea succint Jack Reeves,
„Codul este designul”. Conform acestui punct de vedere, este nevoie de o
modalitate mai bună de a scrie software; orice cod generat va fi limitat la
ceea ce poate vedea sau presupune un instrument de interpret UML.

 Numai codul oglindește codul. După cum spunea succint Jack Reeves,
„Codul este designul”. Conform acestui punct de vedere, este nevoie de o
modalitate mai bună de a scrie software; orice cod generat va fi limitat la
ceea ce poate vedea sau presupune un instrument de interpret UML.

 Impedanță cumulativă / Nepotrivire de impedanță. Nepotrivirea sarcinii


este un termen din teoria analizei sistemelor pentru a desemna
incapacitatea intrării unui sistem de a percepe ieșirea altuia.

 Încearcă să fie totul pentru toată lumea. UML este un limbaj de modelare
de uz general care încearcă să realizeze compatibilitatea cu toate limbajele
de dezvoltare posibile (ceea ce nu mereu îi reușește).

8
Aplicare practică UML se poate realiza chiar din IDE. Să luăm, de exemplu IntelliJ
Idea ca IDE. Dacă utilizați IntelliJ Idea Ultimate, atunci pluginul „UML Support” va fi
instalat „din cutie”. Acest plugin vă permite să generați automat diagrame de clasă
frumoase. De exemplu, prin Ctrl + N sau elementul de meniu „Navigate” -> „Class”,
accesați clasa ArrayList. Acum, prin meniul contextual lângă numele clasei, selectați
„Diagramă” -> „Afișați pop-up diagramă”. Ca rezultat, vom obține o diagramă frumoasă:

Dar dacă vrei să te desenezi și chiar dacă nu există o versiune Ultimate a IntelliJ
Idea? Dacă folosim IntelliJ Idea Community Edition, atunci nu avem altă opțiune. Pentru
a face acest lucru, trebuie să înțelegem cum funcționează o astfel de diagramă UML. În
primul rând, trebuie să instalăm Graphviz. Este un set de utilități de vizualizare grafică.
Este folosit de pluginul pe care îl vom folosi. După instalare, trebuie să adăugați
directorul bin din directorul Graphviz instalat, la variabila de mediu PATH.

După aceea, în IntelliJ Idea, selectați Fișier -> Setări din meniu. În fereastra „Setări”,
selectați categoria „Plugin-uri”, faceți clic pe butonul „Răsfoiți depozitele” și instalați
pluginul de integrare PlantUML.

De ce este acest PlantUML atât de bun? Folosește un limbaj de descriere a


graficului numit „dot” pentru a descrie UML, iar acest lucru îi permite să fie mai
universal, deoarece acest limbaj este folosit nu numai de PlantUML. Mai mult de atât, tot
ceea ce facem mai jos, putem face nu numai în IDE, ci și în serviciul online planttext.com.
9
După instalarea pluginului PlantUML, vom putea crea diagrame UML prin „Fișier”
-> „Nou”. Să creăm o diagramă de tipul „UML class”. În acest timp, un șablon cu un
exemplu este generat automat. Să-i ștergem conținutul și să creăm al nostru, înarmați cu
un tabel ce explică cum se descriu conexiunile:

Pe baza acestor materiale, să începem să creăm diagrama noastră UML. Să


adăugăm următorul conținut pentru a descrie cele două clase:

@startuml
class ArrayList {
}
class LinkedList {
}
@enduml

Pentru a vedea rezultatul în Idea, selectați „View” -> „Tool Windows” ->
„PlantUML”. Obținem doar două pătrate reprezentând clasele. După cum știm, ambele
clase implementează interfața List. Această relație de clasă se numește realizare. O
săgeată cu o linie întreruptă este folosită pentru a descrie o astfel de conexiune. Să-l
descriem:

interface List
List <|.. ArrayList
List <|.. LinkedList

1
0
List este una dintre clasele secundare ale Collection. Adică moștenește din
Collection. Această relație se numește generalizare. Arată ca o săgeată cu o linie
continuă obișnuită. Să-l descriem:

interface Collection
Collection <|-- List

Pentru următorul tip de relație, adăugați o intrare despre pachetul privat de


elemente la descrierea clasei ArrayList:

~Object[] elementData

Acum vrem să arătăm că ArrayList conține câteva obiecte. În acest caz, tipul de link
va fi agregare. Agregatul în acest caz este ArrayList, deoarece contine si alte obiecte.
Alegem agregarea deoarece obiectele din listă pot trăi fără listă: nu sunt părți integrante
ale acesteia. Viața lor nu este legată de durata de viață a listei. Agregat din latină se
traduce prin „asamblat”, adică ceva alcătuit din ceva. De exemplu, în viață, există o
unitate de pompare, care constă dintr-o pompă și un motor. Unitatea în sine poate fi
dezasamblată, lăsând ceva din părțile sale componente. De exemplu, pentru a vinde sau
a pune în altă unitate. Deci așa este și în listă. Și acest lucru este exprimat sub forma unui
romb gol la unitate și a unei linii continue. Să-l descriem după cum urmează:

class Object{
}
ArrayList o- Object

Acum vrem să arătăm că, spre deosebire de ArrayList, clasa LinkedList conține
Node - containere care se referă la datele stocate. În acest caz, nodurile fac parte din
LinkedList în sine și nu pot trăi separat. Node nu este conținut stocat direct, ci conține
doar un link către acesta. De exemplu, când adăugăm o linie la LinkedList, adăugăm un
nou Nod care conține o legătură către acea linie, precum și o legătură către Nodul
anterior și următorul.
1
1
Acest tip de relație se numește Compoziție. Pentru a afișa compozitul (cel format
din piese), este desenat un romb pictat, o linie continuă duce la acesta. Să scriem acum
acest lucru sub forma unei afișari textuale a relației:

class Node{
}
LinkedList *-- Node

Și acum trebuie să învățați cum să afișați un alt tip important de relație -


dependența (relația de dependență). Este folosit atunci când o clasă folosește alta, iar
clasa nu conține clasa utilizată și nu este moștenitorul acesteia. De exemplu, LinkedList și
ArrayList ambele știu cum să creeze un ListIterator. Reprezentăm acest lucru sub formă
de săgeți cu o linie punctată:

class ListIterator
ListIterator <... ArrayList : create
ListIterator <... LinkedList : create

La urma urmei, la un loc va arăta astfel:

1
2
Puteți detalia atât cât este necesar. toate informațiile suplimentare necesare, pot fi
găsite ușor pe resurse Internet. În plus, nu există nimic supranatural în desenarea unei
astfel de scheme și, atunci când lucrați la sarcinile dvs., o puteți desena rapid cu mâna.
Acest lucru va dezvolta abilitățile de a gândi prin arhitectura aplicației dvs. și vă va ajuta
să identificați defectele din structura clasei devreme, mai degrabă decât atunci când ați
petrecut deja ziua implementând modelul greșit. Cred că acesta este un motiv bun să
încercați să învățați și să aplicați UML.

De exemplu, iată mai jos un exemplu de implementare a diagrameor de clasă UML,


pentru a afișa clasele unei aplicații Java și relațiile dintre ele:

1
3
Concluzie

Lucrarea dată mi s-a părut un pic mai puțin captivantă, deoarece deja știam
câte ceva despre UML. Însă până la moment nu știam că este atât de complex, și
că este un standard internațional cu numeroase tipuri de diagrame. Mă bucur că
există limbaje speciale de creare a schemelor. Până la inventarea și intrarea în
modă a acestora, toate reprezentările schematice erau desenate manual de către
programatori.

La prima vedere mi s-a creat iluzia că UML nu prea se folosește și că nu este


obligatorie cunoașterea sa. Însă, defapt UML cu adevărat se folosește destul de
des, cunoașterea și înțelegerea aplicării acestuia fiind un skill foarte util.

UML ne permite să vizualizăm structura aplicației noastre Java. Cel mai des,
UML se folosește în programare pentru a reprezenta clasele și relațiile dintre ele
(OOP). La fel, cu ajutorul său putem descrie bussines-procese, în limita cărora
lucrează funcția (metoda) care o creăm.

În numeroase cărți despre programare, sunt multe ilustrații, ce folosesc


anume aceste diagrame UML. Deci, vrei nu vrei, o să te ciocnești cu ele, așa că
cunoașterea lor este oricum în folosul tău.

1
4
Bibliografie

1. https://javarush.ru/groups/posts/uml-v-java
2. https://ru.wikipedia.org/wiki/UML
3. https://ru.wikipedia.org/wiki/%D0%94%D0%B8%D0%B0%D0%B3%D
1%80%D0%B0%D0%BC%D0%BC%D0%B0_(UML)

1
5

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