Documente Academic
Documente Profesional
Documente Cultură
Raport
Lucrarea de laborator nr. 5
Chișinău 2021
Scopul lucrării: studierea noțiunilor de clasă, atribut și funcție, moștenire, compoziție, agregare,
asociere, dependență
Sarcina lucrării: de realizat 3-4 diagrame de clase pentru sistemul informațional ales
Considerații teoretice
Diagrama de clase este folosită pentru a modela structura (viziunea statică asupra) unui
sistem. O astfel de diagramă conţine clase / interfeţe, obiecte şi relaţii care se stabilesc între
acestea.
Clasele sunt folosite pentru a surprinde vocabularul sistemului ce trebuie dezvoltat. Ele pot
include:
abstracţii care fac parte din domeniul problemei;
clase necesare la momentul implementării.
O clasă poate reprezenta entităţi software, entităţi hardware sau concepte. Modelarea unui
sistem presupune identificarea elementelor importante din punctul de vedere al celui care
modelează. Aceste elemente formează vocabularul sistemului. Fiecare dintre aceste elemente are
o mulţime de proprietăţi.
Clase
Elementele unei clase sunt:
Nume - prin care se distinge de alte clase - o clasă poate fi desenată arătându-i numai
numele;
Atribute - reprezintă numele unor proprietăţi ale clasei;
Operaţii (metode) - reprezintă implementarea unor servicii care pot fi cerute oricărui
obiect al clasei.
User
O clasă poate avea oricâte atribute şi operaţii sau poate să nu aibă nici un atribut sau nici
o operaţie. Modelarea vocabularului unui sistem presupune identificarea elementelor pe care
utilizatorul sau programatorul le foloseşte pentru a descrie soluţia problemei. Pentru fiecare
element se identifică o mulţime de responsabilităţi (ce trebuie să facă acesta), după care se
definesc atributele şi operaţiile necesare îndeplinirii acestor responsabilităţi.
Relaţii
Relația de asociere (a, b) este o relație de structură care descrie o totalitate de legături. Prin
legătură se subînțelege conexiunea între obiecte. Asocierea poate avea nume, rol, nivel de access.
Relația de agregare (c) este un caz particular a asocierii – o relație dintre partea întreagă și partea
componentă.
Relația de dependență (d) reprezintă relația sematică între 2 entități astfel încât modificarea unei
dintre ele poate influența modificarea celei de-a 2-a (dependentă).
Relația de generalizare (e) (sau numită moștenirea) este o relație de tipul specializare – realizare în
urma căruia un element specificat (descendent sau fiu) poate substitui elementul generalizat
(părinte).
Relația de realizare (f) este o relație semantică între două entități unde o entitate definește un
“contract” iar cea de-a doua garantează realizarea lui. Relația de realizare se utilizează în
următoarele cazuri: între interfețe și clase sau componente care o realizează.
Relația de compoziție (g) este un caz particular a agregării – o relație mai strictă decât agregarea
de parcă părțile componente se află în partea întreagă, partea componentă nu poate exista fără
partea întreagă, la distrugerea părții întregi se va distruge și partea componentă.
În următoarea diagramă (fig. 3) putem vedea o diagramă de clasă „Access Level”. În diagrama
respectivă am arătat 6 clase (Guest, User, Admin, Account, Privileged_mode și App).
Clasa Guest – are doar o metodă Register().
Clasa User – are 4 atribute, toate fiind private: username (de tip string), password (de tip string), ip
(de tip string), auth_date (de tip DateTime) și 3 metode: login() de tip string, change_password() cu
parametrul string – de tip void și restore_password() cu 2 parametri string – de tip void.
Clasa Admin – are 4 atribute, toate fiind protected: username (de tip string), password (de tip
string), ip (de tip string) și auth_date (de tip DateTime)
Toate aceste clase moștenesc de la clasa Account care are următoarele atribute (toate fiind de tip
public): username (de tip string), email (de tip string), password (de tip string), balance (de tip
double), reg_date (de tip DateTime), auth_date (de tip DateTime), Ip (de tip string), vip_user (de tip
boolean), vip_user_time (de tip int) și 4 metode: verify() – de tip void, logout() – de tip void,
addTransaction() – de tip void, showTransaction() – de tip void.
Clasa Transaction are 5 atribute (toate fiind private) și o metodă (iarăși fiind privată): atributele
clasei sunt id (de tip int), amount (de tip double), user_id (de tip int), name (de tip string),
description (de tip string), date (de tip DateTime) și metoda: set() de tip void.
Clasa AddTransaction reprezintă clasa unde putem adăuga tranzacții noi în aplicație. Ea are 5
atribute (toate fiind publice) și o metodă publică, atributele clasei sunt: name (de tip string),
description (de tip string), amount (de tip double), category_id (de tip int), date (de tip DateTime) și
metoda: addTransaction() cu 4 parametri (string, double, int, string) de tip void.
Clasa History reprezintă clasa unde arătăm istoria tranzacțiilor, aici sunt 2 metode afișare a
tranzacțiilor (după dată și după id). Ea are 5 atribute (toate fiind publice) și o metodă publică,
atributele clasei sunt: maxCount (de tip int), id_start (de tip int), id_end (de tip int), date_start (de
tip DateTime), date_end (de tip DateTime) și metoda: display() de tip void.
Clasa Stats reprezintă clasa unde arătăm statistica tranzacțiilor. Ea are 5 atribute (toate fiind
publice) și o metodă publică, atributele clasei sunt: amount (de tip double), date_start (de tip
DateTime), date_end (de tip DateTime) și metoda: display() de tip void.
Figura 4. Diagrama de clasă – Transactions
În figura ce urmează (fig. 5) avem reprezentată diagrama de clasă Sign in (de autentificare).
Aici putem vedea 3 clase – User, Login Page, Database.
Clasa User are 2 atribute: username (de tip string), password (de tip string) și 2 metode:
restore_password() – de tip void, isLogged() – de tip boolean.
Clasa Login_page are doar un atribut: status (de tip boolean) și o metodă: checkData() de tip void.
Clasa Database care are doar un atribut: status (de tip boolean) și o metodă: user_exist() de tip
boolean.
De asemenea putem observa numărul de obiecte care este transmis de la o clasă la alta. User (de la
1 până la n) – Login_page (1), Login_page (de la 1 la n) – Database (1).
În concluzie pot afirma că în lucrarea dată am analizat, studiat și implementat diagramele de clase.
Am studiat tipurile de relații dintre clase, stereotipurile acestora (rolurile, denumirile și
numerotările). Am creat 3 diagrame de clase Access Level, Transactions, Sign in în care am
implementat teoria obținută în practică.