Sunteți pe pagina 1din 6

De ce UML?

n este un standard deschis


Reprezentarea UML a n surprinde ntreg ciclul de via al dezvoltrii
claselor. software-ului
n acoper multe tipuri de aplicaii

Mihai Gabroveanu

Reprezentarea UML a claselor 3

Ce este UML? Diagrame UML


n UML acronim pentru Unified Modeling n O diagrama este o prezentare grafic ale unui set de
elemente, cel mai adesea exprimate ca un graf de noduri
Language (elementele) si arce (relatiile).
n Este un limbaj vizual de modelare utilizat n Tipuri de diagrame UML
Diagrame ale Cazurilor de Utilizare (Use Case)
pentru specificarea, construirea i Diagrame de clase
documentarea sistemelor de aplicaii orientate Diagrame de obiecte
Diagrame de secven
obiect i nu numai. Diagrame de stare
Diagrame de colaborare
Diagrame de activitate

Reprezentarea UML a claselor 2 Reprezentarea UML a claselor 4


Diagramele de Clase Specificarea Atributelor
n Sintaxa specificrii atributelor din compartimentul atributelor este
n Diagramele de clase sunt folosite n modelarea urmatoarea:
orientat obiect pentru a descrie structura static a
vizibilitate idAtribut : tip = valoare_implicitia
sistemului, modului n care este el structurat. unde:
vizibilitate reprezint protecia atributului i poate s aib una din urmtoarele
n Ofer o notaie grafic pentru reprezentarea: valori
+ = public,
claselor - entiti ce au caracteristici comune - = privat si
# = protected (optional)
relaiilor - relaiile dintre dou sau mai multe clase idAtribut este identificatorul atributului
tip este tipul acestuia
valoare_implicita reprezint valoarea iniial a atributului (optional)

Reprezentarea UML a claselor 5 Reprezentarea UML a claselor 7

Reprezentarea unei clase Specificarea Metodelor


Numele clasei
IdClasa
n Sintaxa specificarii metodelor sau operatiilor din compartimentul
metodelor este urmatoarea:
vizibilitate idAtribut Atributele clasei
vizibilitate idAtribut: tip (opional)
vizibilitate idMetoda(idP1:tip1, ..., idPn:tipn) : tip_returnat
vizibilitate idAtribut: tip=valoare_implicita unde:
vizibilitate idMetoda
vizibilitate reprezint protecia metodei. Poate s aib una din
vizibilitate idMetoda(lista_param):tip_returnat urmtoarele valori
Metodele clasei + = public,
(opional)
- = privat si
sau # = protected (optional)
idMetoda este identificatorul metodei
IdClasa idP1,..., idPn sunt parametri metodei
tip1, ..., tipn sunt tipurile parametrilor
tip_returant reprezint tipul valorii returnate de metod

Reprezentarea UML a claselor 6 Reprezentarea UML a claselor 8


Relaiile
n Toate relaiile din cadrul diagramei de clase sunt reprezentate
grafic printr-o succesiune de segmente orizontale sau

n
verticale care leag o clas de alta.
Relaiile pot fi:
Reutilizarea Codului
asocieri
generalizari
dependene
relaii de rafinare.
n Asocierea este o conexiune ntre clase, ceea ce nseamn o
legtur semantic ntre obiectele claselor implicate n relaie.

Reprezentarea UML a claselor 9

Diagrame de Clase. Exemplu Reutilizarea Codului

-titlu: char[100]
Carte class Carte{
private:
n n programarea orientat obiect reutilizarea
-autor: char[100]
-anAparitie: int
char titlu[100];
char autor[100];
codului se poate realiza prin:
int anAparitie;
public: Compunere (Agregare) includerea de obiecte n
+Carte(titlu: char*="", autor: char *="", anAparitie:int=2011)
+afisare(): void
Carte(char *titlu="", char *autor="", int an=2011);
void afisare();
cadrul altor obiecte
+getTitlu(): char*
char* getTitlu();
+setTitlu(titlu: char):void
void setTitlu(char *titlu);
Motenire posibilitatea de a defini o clas
}; extinznd o alt clas deja existent
Clase i funcii template

Reprezentarea UML a claselor 10 Reprezentarea UML a claselor 12


Agregarea Agregare.Constructori(II)
n Apelul constructorilor claselor C1, , Cn se poate face:
n Agregare = Definirea unei noi clase ce explicit la definirea constructorului clasei A
class A{
include una sau mai multe date membre care C1 c1;
au ca tip clase deja definite.
Cn cn;

n Ne permite construirea de clase complexe A(lista de parametri);
pornind de la clase mai simple };
A::A(lista de parametri):c1(sub_lista_param1), . . ., cn(sub_lista_param1){
instructiuni
}
automat de ctre compilator n acest caz se apelez constructorul implicit al acelor
clase

Reprezentarea UML a claselor 13 Reprezentarea UML a claselor 15

Agregare.Constructori (I) Tipuri de agregare


n Dac o clas A conine ca date membru obiecte ale altor n Exist dou variante de agregare difereniate
clase (C1, , Cn) atunci constructorul clasei A va avea de relaia dintre agregat i subobiecte
suficienti parametri pentru a iniializa datele membru ale
claselor C1,, Cn. Compoziia subobiectele agregate aparin
n La crearea unui obiect al clasei A se vor apela mai nti
exclusiv agregatului din care fac parte, iar durata
constructori claselor C1, ,Cn pentru a se initializa obiectele
de via coincide cu cea a agregatului
incluse n obiectul clasei A i apoi se vor executa intruciunile Agregarea propriu-zis - subobiectele au o
constructorului clasei A. existen independent de agregatele ce le
partajaz. Mai mult, un obiect poate fi partajat de
mai multe agregate.

Reprezentarea UML a claselor 14 Reprezentarea UML a claselor 16


Agregare.Destructori Exemplu
n La distrugerea unui obiect al clasei A se va n Considerm urmtorul enun: Un parc auto
executa mai destructorul clasei A apoi se vor este format dintr-o mulime de maini. Pentru
apela destructori claselor C1, ,Cn n fiecare main din parc se cunosc
ordinea inversa apelurilor constructorilor. urmtoarele detalii: numrul de nmatriculare,
marca, seria motorului i tipul de caburant
utilizat de acesta.
n S se modeleze utiliznd diagrame UML.

Reprezentarea UML a claselor 17 Reprezentarea UML a claselor 19

Agregarea. Reprezentare UML


Diagrama UML
n Compozitia Motor
ParcAuto Masina
-n:int -numar:char [20] -seria:char [20]
ClasaCeAgrega ClasaAgregata -masini:Masina *
0..*din
este compus
-marca:char [20] -carburant:Carburant
1 are 1
+ParcAuto(n:int,masini:Masina [])
-motor:Motor +Motor(seria:char *,carburant:Carburant
+afisare():void Agregare +Masina(numar:char *,marca:char *,seria:char *,carburant:Carburant
+setSeria(seria:char *):void
+setNumar(numar:char *):void
+getSeria():char *
Compozitie
+getNumar():char *
n Agregarea propriu-zis +setCarburant(carburant:Carburant):void
+setMarca(marca:char *):void
+getCarburant():Carburant
+getMarca():char * +afisare():void
+afisare():void
ClasaCeAgrega ClasaAgregata

Reprezentarea UML a claselor 18 Reprezentarea UML a claselor 20


Clasa Motor Clasa ParcAuto
enum Carburant { benzina=0, motorina}; void Motor::setSeria(char *seria){
strcpy(this -> seria, seria); class ParcAuto{ void ParcAuto::afisare(){
}
int n; for(int i=0;i<n;i++)
class Motor {
char* Motor::getSeria(){ Masina *masini; masini[i].afisare();
private: return seria; public: }
char seria[20]; } ParcAuto(int n, Masina masini[]);
Carburant carburant; void afisare(); int main(){
Carburant Motor::getCarburant(){ }; Masina m[] ={Masina("DJ-01-UCV","Audi",
public: return carburant;
ParcAuto::ParcAuto(int n, Masina masini[]){ "1234", motorina), Masina("DJ-02-UCV","Logan",
Motor(char *seria, Carburant carburant); }
void setSeria(char *seria); this->n = n; "2121", benzina)};
char* getSeria(); void Motor::setCarburant(Carburant carburant){ this -> masini = new Masina[n]; ParcAuto parc(2,m);
void setCarburant(Carburant carburant); this -> carburant = carburant; for(int i=0;i<n;i++) parc.afisare();
Carburant getCarburant(); } this->masini[i] = masini[i]; getch();
void afisare(); } }
}; void Motor::afisare(){
cout<<"Serie Motor:"<<seria<<endl;
Motor::Motor(char *seria, Carburant carburant){ cout<<"Tip Combustibil:" <<
setSeria(seria); ((carburant==motorina)?"motorina":"benzina");
setCarburant(carburant); cout<<endl;
} }

Reprezentarea UML a claselor 21 Reprezentarea UML a claselor 23

Clasa Masina
class Masina{
private: void Masina::setNumar(char *numar){
char numar[20]; strcpy(this->numar, numar);
char marca[20]; }
Motor motor; char* Masina::getNumar(){
public: return numar;
Masina(char *numar="", char *marca="", char }
*seria="", Carburant carburant=benzina);
void setNumar(char *numar); void Masina::setMarca(char *marca){
char* getNumar(); strcpy(this->marca,marca);
void setMarca(char *marca); }
char* getMarca(); char* Masina::getMarca(){
void afisare(); return marca;
}; }

Masina::Masina(char *numar, char *marca, char void Masina::afisare(){


*seria, Carburant carburant):motor(seria, cout<<"Numar:"<<numar<<endl;
carburant ){ cout<<"Marca:"<<marca<<endl;
setNumar(numar); motor.afisare();
setMarca(marca); }
}

Reprezentarea UML a claselor 22

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