O clas de obiecte reprezint un grup de obiecte care au:
o proprieti similare (atribute), o un comportament comun (operaii), o relaii comune cu alte obiecte i o o aceeai semantic. De exemplu, "Persoana", "Firma", "proces" sunt clase de obiecte. Semantica asociat unei clase corespunde unui punct de vedere. Obiectele din lumea real pot i abstractizate n mod dierit. De exemplu, un cal poate i ncadrat n clasa mi!loacelor de transport terestre sau n clasa animalelor. "n #$%, o clas este reprezentat printr&un dreptung'i alcatuit din trei compartimente care conin: numele clasei, atributele, operaiile. (ompartimentul atributelor i cel al operaiilor pot i omise. Clasele definite in etapa de Analiza a cerintelor contin numai numele clasei si atributele (fara specificarea tipului fiecarui atribut), eventual unele operatii. Reprezentarea detaliata a unei clase,construita in etapa de proiectare de detaliu, precizeaza vizibilitatea inormatiilor din clasa, lista de parametri a iecarei operatii si tipul parametrilor. 1 )egulile de vizibilitate se aplica atat atributelor cat si operatiilor din clase si se reera la domeniul de acces permis la un membru al unei clase. Fiecare nivel de vizibilitate este reprezentat printr&un simbol: & Private ( & ) : accesibiltate numai din interiorul clasei & Public (*) : accesibiltate la nivelul intregului sistem & Protected (+) : accesibiltate in arborele de mostenire & Pac,age (-) : accesibiltate din interiorul pac'etului care contine clasa $embrii statici sunt subliniati. (lasa detaliata )elaiile dintre clase sunt abstracii ale relaiilor existente .ntre obiecte. Fiecrei amilii de legturi .ntre obiecte .i corespunde o relaie .ntre clasele obiectelor. Obiectele sunt instane ale claselor, %egturile .ntre obiecte sunt instane ale relaiilor dintre clase. 2 Diagramele de clase redau structura statica a unui sistem sot/are. 0xista doua tipuri principale de relatii intre clase: o asociere si o generalizare. Asocierea 1socierea este o abstractie a unui set de legaturi existente intre obiecte. De exemplu, asocierea 21 lucra3 dintre clasele Persoana i Firma reprezint toate legturile posibile dintre obiecte ale clasei Persoana i obiecte ale clasei Firma: 0xtremitatea unei asocieri este numita rol. o )olul exprim elul .n care o clas "vede" o alt clas .n cadrul unei asocieri. De exemplu, .n asocierea dintre clasele Firma i Persoana, orice obiect al clasei Persoana este un 21nga!at3 al unei Firme, care este reprezentat printr&un 2Patron3 . o 4umele de rol sunt amplasate la cele dou extremiti ale asocierii: Firma Patron Persoana 3 Angajat
4ume de rol. 4umele de rol sunt optionale. 4umai numele asocierii este obligatoriu pentru o asociere. Dac .ntre dou clase exist o singur asociere, numele asocierii este suicient pentru a preciza relaia. 4umele de rol se olosesc de regul atunci cnd ntre dou clase exist mai multe asocieri. "n loc de nume de rol se poate scrie un verb sau o raza care contine un verb, pentru a explica semantica asocierii: Firma Este angajata Persoana Lucreaza cu
Observatie: Executable UML impune speciicarea numelor de rol. 0le sunt olosite in codul generat automat pentru implementarea asocierilor (506" generarea automata a codului pornind de la diagramele de clase). Aritatea asocierilor (ea mai mare parte a asocierilor sunt binare & ele unesc dou clase. 1socierile de aritate superioar se reprezint cu a!utorul unui romb, ca .n igura de mai !os. De exemplu, asocierea ilustrat .n igura urmatoare exprim aptul ca 2Proiectele sunt implementate prin Programe scrise n %imba!e de programare3. Proiect Limbaj Program 1sociere ternar. 4 Multiplicitatea asocierilor Fiecare rol al unei asocieri poate purta o indicaie de multiplicitate care arat cte obiecte ale unei clase pot i legate la un moment dat unui obiect al celeilalte clase. De exemplu, o irma poate avea unul sau mai muli anga!ai. O persoana poate lucra la o singura irma. $ultiplicitatea poate i "unu", "mai multe "(7) sau un subansamblu de .ntregi pozitivi: 8, 9..8, $..4, 7 sau 9..7 (de la zero la mai muli), 8..7. $ultiplicitatea unei asocieri exprim o constrngere valabil pe toat durata de existen a obiectelor claselor asociate. $ultiplicitile nu trebuie s ie considerate n timpul regimurilor tranzitorii, de creare sau de distrugere a obiectelor. 0:0$P%# de diagrama de clase conceptuale: librarie, Student&curs Asocieri cu atribute 1socierile pot i caracterizate prin atribute. "n igura urmatoare, 24ota3 este un atribut al asocierii existente .ntre clasa 2Student3 i clasa 2;ema3. 1socierea dintre clasa Student i clasa ;ema este de tip 4 la 4. Fiecare student realizeaz individual o tema dat iar nota obinut nu poate i reprezentat nici ca atribut al studentului (cci un student eectueaz mai multe teme), nici ca atribut al temei (cci iecare student primete o not pentru aceeai tema). 4ota este un atribut al relaiei dintre clasa studenilor i clasa temelor. 5 asociere cu atribute este numit asociere atributat . 0a poate i reprezentat printr&o clas cu atribute i operaii proprii. O asemenea clas, numit uneori clas &associere , este ataat asocierii printr&o linie punctat: !E"# E$E%PL& '&() * )tu+ent,'urs,-ota. Angajat, /e0artament , Proiect12 1socierile pot i constrnse. O constrangere este o regula care trebuie sa ie implementata pentru ca asocierea sa ie valida. (onstrngerile sunt scrise ntre acolade. De exemplu, instanele clasei < asociate unei instane a clasei 1 trebuie s ie ordonate: O asociere poate lega o clas de ea .nsi. O asemenea asociere este numit asociere relexiv . #n exemplu de asociere relexiv este cel 3 A ' attribute o0eraii 4 / ilustrat n igura urmatoare. Fiecare persoana are doi prini i zero sau mai muli copii. 4umirea rolurilor este .n acest caz esenial pentru claritatea diagramei. 1socierile 8 la mai muli i mai muli la mai muli pot i caliicate. (aliicarea este speciicat printr&o c'eie ataat rolului clasei de plecare.
Fig5 25265 'a7i8icarea asocieri7or Fiecare instan a clasei 1 mpreun cu valoarea c'eii identiic un sub&ansamblu al instanelor clasei <, care particip la asociere. 0xemplu: ( Fig5 25295 #+enti8icarea unui 8iier5 #n director .mpreun cu un nume de iier desemneaz toate isierele din director cu acelasi nume si dierite extensii. Agregarea 6 A ':eie
4 /irector -ume +e 8iier Fiier 1gregarea este o orm particular de asociere care exprim o relatie "compus & componeni". O clasa are anumite parti, care insa au o existenta independenta. 1gregarea este desemnat printr&un un mic romb amplasat alturi de clasa agregat: #n document are mai multe paragrae i iecare paragra este alctuit din mai multe raze. Fiecare main are un motor. ; 1gragatul nu poate exista ara una dintre componente ; Distrugerea agregatului nu conduce la distrugerea componentelor
Compunerea (ompunerea este un caz particular de agregare. 0xprima o agregare prin continere izica. 9 Distrugerea obiectului agregat antreneaza distrugerea componentelor. De exemplu, in agregarea masina& motor deinita mai sus, motorul unei masini poate i inlocuit cu altul. $otorul unei masini poate i pus in alta masina= Daca insa reprezentam relatia masina > motor ca relatie de compunere&? iecare masina are un motor unic, care nu poate i inlocuit si motorul nu poate i pus in alta masina= )elaia de compunere este semantic ec'ivalent cu considerarea componenilor ca atribute ale clasei agregat: 1stel, relatia de mai sus este ec'ivalenta cu:
Generalizarea "erar'iile de clase sunt bazate pe noiunile de clasiicare, generalizare i specializare. @eneralizarea const .n actorizarea elementelor comune (atribute, operaii i constrngeri) ale unui ansamblu de clase .ntr&o clas mai general, numit superclas . (lasele sunt ordonate .ntr&o ierar'ie. Sgeata care simbolizeaz generalizarea .ntre dou clase puncteaz ctre clasa mai general: < "n ierar'ia din igura de mai sus, iecare clasA (exceptBnd clasa rAdAcinA) are o singurA super&clasA. )eprezentarea graicA corespunde unui arbore, numit Ci arborele de moCtenire. (lasele pot avea mai multe super&clase. "n acest caz, generalizarea este numit multipl iar ierar'ia de clase se reprezintA printr&un gra , numit Ci graul de moCtenire.
Specializarea permite capturarea particularitilor unui ansamblu de obiecte, nereprezentate prin clasele existente. 4oile caracteristici sunt deinite .ntr&o clas nou, sub&clas a uneia sau mai multor clase existente. Specializarea este o te'nic oarte eicient de extensie coerent a unui ansamblu de clase existente . 4oile cerin e sunt .ncapsulate .n sub&clase care extind unc iile existente . De exemplu, dac ntr&o aplicaie apare necesar s se reprezinte "bicicleta" ca ve'icul de transport, n plus a de cele reprezentate n ierar'ia de mai sus, atunci se va deini o clas nou, sub&clas a clasei "5e'icul terestru", n care vor i deinite particularitile bicicletei ca ve'icul terestru. Fiecare sub&clasA a unei ierar'ii moCteneCte atributele Ci operaDiile deinite .n clasele alate pe calea de la clasa radacinA la subclasa respectiva, iind cu atBt mai specializatA cu cBt se alA mai departe de radacinA. Motenirea este o te'nic oerit de limba!ele de programare pentru a construi o clas plecnd de la una sau mai multe clase, parta!nd atribute, operaii i uneori constrangeri .n interiorul unei ierar'ii de clase. (lasele copil motenesc caracteristicile claselor printe. 1tributele i operaiile 1= declarate .n clasele printe sunt accesibile .n clasele copil, ca i cum ar i declarate local. $otenirea este o modalitate de a realiza clasiicarea. )elaia de generalizare deinit n #$% este mai abstract decBt relaia de motenire care exist .n limba!ele de programare obiect, cum ar i (**. 0a este mai adecvat etapei de analiz (exista si intre cazuri de utilizare=). Decizia asupra modalitii de a realiza generalizarea se ia mai tBrziu, .n etapa de proiectare. Prin clasiicare Ci generalizare, universul problemei este divizat in pari independente care grupeazA obiectele prin ainitate. $odiicarea unei pAr i antreneazA un minimum de modiicAri ale celorlalte, apt pus .n evidenA de arborele de motenire: iecare subarbore grupeazA obiectele care .mpart caracteristicile rAdAcinii sale. De exemplu, adAugarea de noi caracteristici la clasa 1rticol&de&lux (igura )nu aecteazA clasa .mbrAcAminte i nici subclasele acesteia, dar extinde automat caracteristicile subclaselor clasei 1rticol&de&lux. #neori, anumite clase sunt create doar ca surse de motenire pentru alte claseE ele sunt clase abstracte. De exemplu, clasa 1rticol este o clasa abstractA daca nu caracterizeazA complet nici un obiect din universul problemei. (lasa 1rticole&electrice a ost introdusA pentru a actoriza proprietADile electrice (de exemplu, tensiunea de alimentare, consumul Ci altele), comune calculatorului Ci articolelor electrocasnice. 11 4otatie: 4umele operatiilor abstracte (ara implementare) se scriu tot in italic. avi!abilitate 4avigabilitatea desemneaza necesitatea ca un obiect al unei clase sa acceseze un alt obiect 2navigand3 de&a lungul unei legaturi. 4avigabilitatea se reprezinta printr&o sageata la capatul 2navigabil3 al asocierii. Obiectul de la capatul navigabil este accesibil unui obiect de la cealalata extremitate. "nvers, nu. #rmatoarea diagrama de clase modeleaza o aplicatie care permite plati pe baza de ordine ale clientilor. 12 Sageata asociata asocierii se numeste navigabilitate. 0a indica directia in care trebuie sa ie traversata sau interogata asocierea. De exemplu, un obiect OrderDetail poate interoga obiectul "tem asociat. #n obiect "tem poate i asociat mai multor obiecte OrderDetail dar pentru el nu este necesar sa le cunoasca. #n obiect Order este asociat cu mai multe obecte PaFment, pe care trebuie sa le cunoasca. Pentru un obiect PaFment nu este necesar sa cunoasca obiectul Order asociat. 1socierile ara navigabilitate sunt considerate bi&directionale. 4avigabilitatea este un element optional. Se adauga pentru a imbunatati claritatea diagramei. "ependente si constran!eri O dependenta este o relatie intre G clase in care modiicarea uneia poate orta modiicarea celeilalte. 0xemplu: (ompanFDetails depinde de (ompanF. Daca se modiica (ompanF trebuie sa se modiice si (ompanFDetails. 13 O constrangere este o conditie pe care orice implementare a diagramei trebuie sa o satisaca. 0ste scrisa intre paranteze HI. 0xemplu: #n obiect Section poate i parte dintr&un obiect (ourseSc'edule numai daca nu a ost anulat. 14 15