Está en la página 1de 64

UML Diagramas de Clases

(UML ilustrado)

Universidad de Los Andes


Demin Gutierrez Marzo 2011 1

Diagramas de Clases (Qu Muestran?) La estructura esttica del sistema modelado (piense en el plano estructural de un ingeniero civil) Las relaciones que existen entre las distintas clases objetos del sistema Las clases objetos del sistema su estru!tura interna "e !on!entran en los elementos del sistema de #orma independiente del tiempo (Muestran as$e!tos estti!os no dinmi!os)
2

Diagramas de Clases (Para qu Sirven?) %ealizar la a&stra!!i'n de un dominio #ormalizar el anlisis de los conceptos relacionados al mismo (Modelo de Dominio) (...o de cualquier tipo de conceptos) De#inir ( Do!umentar una solucin de diseo) es de!ir) la estructura del sistema que se va a im$lementar en t*rminos de clases objetos De#inir ( Do!umentar modelado

de datos
3

(Cumplen la misma funcin en este sentido de los diagramas ERE)

Diagramas de Clases

Advertencia

Nota Importante +l ,e!,o de que exista !ierta !ara!ter-sti!a en un diagrama (e./ la de!lara!i'n de m*todos) no signi#i!a que de #orma o&ligatoria se de&a usar) sim$lemente son ,erramientas que estn dis$oni&les0 Cuando usted arregla algo) no usa todas las ,erramientas de su !a.a de ,erramientas) s'lo usa lo que ne!esita $ara realizar el tra&a.o0 1gual o!urre !on UML las ,erramientas de modelado) use s'lo las ,erramientas (diagramas ( !onstru!tos) que ne!esita $ara una situa!i'n $arti!ular no 2so&re use3 las ,erramientas) tratando de usarlas s'lo $orque si000
5

Diagramas de Clases

Qu es un Dominio de Aplicacin? Qu es un Modelo de Dominio?


6

Diagramas de Clases

La ma or-a de los !on!e$tos que se $resentan en las siguientes trans$aren!ias estn rela!ionados !on los !on!e$tos de $rograma!i'n orientada a o&.etos (455) vistos en 4%2
7

Diagramas de Clases

Qu es una Clase?

Diagramas de Clases (Que es una Clase?)


Clase / Clasificador: De#ini!i'n de la estructura el comportamiento de un conjunto de objetos que tienen (!om$arten) el mismo patrn estructural y de comportamiento Un e.em$lo de una !lase 2n6mero !om$le.o3/

Base de Datos: No les suena esto al concepto de tipo de entidad?

Diagramas de Clases (Atri utos ! " #etos)

Atributos: 4ro$iedades relevantes de un !lase %e$resentan su estru!tura 4ueden ser sim$les o !om$uestos

M todos: Com$ortamiento aso!iado a una !lase


10

Diagramas de Clases

La relacin que existe entre el cdi o ! una clase en "ML es mu! importante !"ecesito que #ablemos el mismo idioma$
11

Diagramas de Clases (Que es una Clase?)


public class ComplexNumber { private double r; private double i; public ComplexNumber(double r, double i) { this.r = r; this.i = i; } public double norm() { return Math.sqrt(r * r + i * i); }

#l cdi o es $ava %&'


12

Diagramas de Clases (Que es una Clase?)


%isibilidad: & 4rivado ( 4aquete ) 4rotegido * 46&li!o "ombre Atributo %alor por &efecto 'ipo de &ato

Multiplicidad

"ombre del M todo

)armetros de *ntrada

'ipo de (etorno

Base de Datos: +eneralmente, cuando se desarrolla un modelo de datos no se utili-a toda esta comple.idad/ 0or e.emplo, eneralmente no se de1inen mtodos

13

Diagramas de Clases (Que es una Clase?)


)ara los Atributos: 7visi&ilidad8 7(8 nom&re 7/ti$o8 7multi$li!idad8 79valor $or omisi'n8 7:$ro$iedad;8 )ara los M todos: 7visi&ilidad8 nom&re 7(lista de $armetros)8 7:$ro$iedad;8 &onde un parmetro es: 7dire!!i'n (in(out(inout)8 nom&re/ ti$o 7multi$li!idad8 79valor $or omisi'n8 +as propiedades pueden una o mas de las si,uientes: readOnly, isQuery, Concurrent, Guarded, Sequential) et!*tera 000 o !ualquier otra $rede#inida 000
14

Diagramas de Clases

qu es un o2.eto? qu es una instancia? qu es instanciar?


15

Con$eptos de " #etos (Diagramas de Clases)


-nstancia: Cada o&.eto que $ertene!e a una !lase -nstanciacin / -nstanciar: 4ro!eso de genera!i'n o !rea!i'n de las instan!ias (o&.etos) de una !lase
$edro 9 ne3 4ersona()

.bjeto: %e$resenta!i'n de algo que se des!ri&e mediante un identi#i!ador) una estru!tura un !om$ortamiento0 /-nstancia de una Clase0
16

Diagramas de Clases
public class Persona { private private private private Strin char !ate Strin nombre; sexo; "e#haNa#; pro"esion; pro"esion) {

public Persona( Strin nombre, char sexo, !ate "e#haNa#, Strin this.nombre = nombre; this.sexo = sexo; this."e#haNa# = "e#haNa#; this.pro"esion = pro"esion; }

+xiste una di#eren!ia mu im$ortante entre un 42.eto una Clase

17

Diagramas de Clases

Crear 5nstancias 65nstanciar'

Persona p$ = new Persona( %Pe&ro', (M(, new !ate($), Persona p. = new Persona( %-n&rea', (/(, new !ate($0,

*, $+,,), %-#tor'

);

0, $+,1), %Ceramista'); );

Persona p2 = new Persona( %Mar3a', (/(, new !ate(.2, $$, $+)1), %M4&i#o' Persona p0 = new Persona( %5uis', (M(, new !ate($.,

$, $+**), %6n eniero');

18

Diagramas de Clases (Parametri%a les & A stra$tas & 'tilitarias)


Clases )arametri1ables: 4lantillas de !lases que se $ueden $arametrizar !on uno o ms ti$os de datos seg6n sea ne!esario (Clases Gen*ri!as) Clases Abstractas: Clases que no tienen im$lementa!i'n $ara todos los m*todos de#inidos Clases 2tilitarias: Clases que !ontienen li&rer-as de #un!iones (no interesa mu!,o la im$lementa!i'n)

19

Diagramas de Clases (Parametri%a les & A stra$tas & 'tilitarias)


public class 5ista78ipo9 { public void insertar (8ipo t) { :* #;&i o *: } public void eliminar (8ipo t) { :* #;&i o *: } public 8ipo eliminar (int pos) { :* #;&i o *: } public 8ipo obtener { :* #;&i o *: } (int pos)

} :: 5a #lase se usa &e la si uiente "orma< 5ista7int9 lista!e=nteros = new 5ista7int9(); 5ista7Persona9 lista!ePersonas = new 5ista7Persona9();

public 6tera&or itera&or () { :* #;&i o *: }

20

Diagramas de Clases (Parametri%a les & A stra$tas & 'tilitarias)

public abstract class /i ura>ase { public void insertar=nCan?as(Can?as #) { :* #;&i o *: } public void eliminar!eCan?as(Can?as #) { :* #;&i o *: } :: 5os m4to&os si uientes son abstra#tos, :: es &e#ir, no tienen implementa#i;n public public public public abstract abstract abstract abstract double double double double et-rea(); etPerimetro(); et@e#tCont(); et!ibuAar();

21

Diagramas de Clases ((spe$iali%a$i)n & *enerali%a$i)n & +eren$ia)


3erarqu4a de Clases: %ela!i'n +"<U=(A)) a&stra!!iones de generaliza!i'n ( es$e!ializa!i'n de !lases 5erencia: 4ro$iedad que tienen las !lases de ,eredar de sus su$er!lases estru!tura (o !om$ortamiento ("im$le ( M6lti$le)

22

Diagramas de Clases ((spe$iali%a$i)n & *enerali%a$i)n & +eren$ia)


5erencia: Dis.unta ( >rasla$ada >otal ( 4ar!ial

23

Diagramas de Clases ((spe$iali%a$i)n & *enerali%a$i)n & +eren$ia)


public abstract class Figura { public abstract double #al#-rea (); public abstract void &ibuAar (Can?as #an?as); }

public class Rectangulo extends Figura { :: ... }

public class Elipse extends Figura { :: ... }

public class Cua&ra&o extends Rectangulo { :: ... }

public class Cir#ulo extends Elipse { :: ... }


24

Polimorfismo:

se pue e usa# el mismo nomb#e pa#a la e$inicin e un m%to o en &a#ias clases sin impo#ta# la #elacin ent#e las mismas.

Vista lgica o estructural


Persona !oi * +ID !nomb#e* Ca ena,-./012 ! i#eccion* Ca ena,128/00..12 !tele$ono* Ca ena,1-/00..12 3mo i$ica,/ 3 esplie'a,/ Trabajador !ca#'o* 4ipoCa#'o012 !suel oActual* Mone a00..12 3 esplie'a,/

Reescritura o sobrecarga: pe#mite nomb#a#


c i'o i$e#ente con el mismo nomb#e pa#a m(s e una clase e ob)etos.

Encadenamiento tardo:

Estudia 3 esplie'a,/

!ca##e#a* 4ipo

pe#mite selecciona# el c i'o a ecua o al ob)eto e$ini o en la in&ocacin el m%to o.

Preparador !$ec5aConcu#so* 6ec5a012 3 esplie'a,/

Mayo,2008

EISULA. Dpto. De Computacin. Isabel Besembel C. Base e Datos. Sem. A!08.

2"

,ela$iones (-.n$ulos)

?Aso!ia!iones@ ?1/1) 1/= =/M@


+so se $uede ver me.or !on un e.em$lo
26

,ela$iones (-.n$ulos) /0N

A-n!ulo ( %ela!i'n >ra&a.a +n ( >iene

De$artamento de Control

De$artamento de 1nvestiga!i'n de 5$era!iones

De$artamento de Com$uta!i'n
4ro#esores De$artamentos

?Cuntos $ro#esores $uedo tener en el !on.unto de entidades 24ro#esores3@ ?B en 2De$artamentos3@

?Con !uantos $ro#esores $uede estar aso!iado un de$artamento@ ?B al !ontrario@

27

,ela$iones (-.n$ulos) N0M

A-n!ulo ( %ela!i'n Di!ta ( +s di!tada $or

4rograma!i'n 10

4rograma!i'n 20

Cases de Datos

4ro#esores

Materias

?Cuntos $ro#esores $uedo tener en el !on.unto de entidades 24ro#esores3@ ?B en 2Materias3@

?Con !uantos $ro#esores $uede estar aso!iado una materia@ ?B al !ontrario@

28

,ela$iones (-.n$ulos) /0/


A-n!ulo ( %ela!i'n +s novia de ( +s novio de

C,i!as

C,i!os

?Cuntos mu!,a!,os $uedo tener en el !on.unto de entidades 2C,i!os3@ ?B en 2C,i!as3@

?Con !uantos C,i!os $uede estar aso!iados (ser novios) de una C,i!a en $arti!ular@ ?B al !ontrario@ 29

Diagramas de Clases (Aso$ia$iones)


Asociaciones: %e$resentan rela!iones estru!turales entre las !lases (la #orma en que estn rela!ionadas entre si las !lases)

Cmo se implementan?

30

Diagramas de Clases (Aso$ia$iones)


public class !epartamento { :: Bna lista &e pro"esores :: (Bn &epartamento tiene mu#hos pro"esores) private 5ist7Pro"esor9 pro"esor5ist; } :: ... public class Pro"esor { :: Bna re"eren#ia a un &epartamento :: (Bn pro"esor pertene#e s;lo a un &epartamento) private !epartamento &epartamento@e"; }

31

Diagramas de Clases (Aso$ia$iones)


public class =stu&iante { :: Bna lista &e asi naturas :: (Bn estu&iante tiene mu#has asi naturas) private 5ist7-si natura9 asi natura5ist; } :: ... public class -si natura { :: Bna lista &e estu&iantes :: (Bna asi natura tiene mu#hos estu&iantes) private 5ist7=stu&iante9 estu&iante5ist; }

32

Diagramas de Clases (Aso$ia$iones)


public class =stu&iante { :: Bna lista &e =st-si @ela#ion (Bna #lase rela#iCDn) private 5ist7=st-si @ela#ion9 est-si @ela#ion5ist; } public class =st-si @ela#ion { :: re"eren#ias #ruEa&as a las &os #lases rela#iona&as private =stu&iante estu&iante@e"; private -si natura asi natura@e"; } public class -si natura { :: Bna lista &e =st-si @ela#ion (Bna #lase rela#iCDn) private 5ist7=st-si @ela#ion9 est-si @ela#ion5ist; }

33

Diagramas de Clases (Aso$ia$iones)

Una rela!i'n mu!,os a mu!,os se $uede ver !omo dos rela!iones uno a mu!,os

34

Diagramas de Clases (Aso$ia$iones)


public class !epartamento { :: Bna re"eren#ia a una se#retaria :: (Bn &epartamento tiene s;lo una se#retaria) private Se#retaria se#retaria@e"; } :: ... public class Se#retaria { :: Bna re"eren#ia a un &epartamento :: (Bna se#retaria pertene#e s;lo a un &epartamento) private !epartamento &epartamento@e"; }

35

Diagramas de Clases (Aso$ia$iones)


public class =stu&iante { :: Bna lista &e Nota (Bna #lase aso#ia#i;n) private 5ist7Nota9 nota5ist; } public class Nota { :: !atos &e la aso#ia#i;n private double nota; private int asisten#ias :: re"eren#ias #ruEa&as a :: las &os #lases rela#iona&as private =stu&iante estu&iante@e"; private Se##ion se##ion@e";

public class Se##ion { :: Bna lista &e Nota (Bna #lase aso#ia#i;n) private 5ist7Nota9 nota5ist; }
36

Diagramas de Clases (Aso$ia$iones & Navega ilidad)


"a6e,abilidad: %e$resentan rela!iones estru!turales entre las !lases (la #orma en que estn rela!ionadas entre si las !lases)
=avega&le $or am&os lados =avega&le

=5 navega&le

1nde#inido

37

Diagramas de Clases (Agrega$i)n & Composi$i)n)


A,re,acin: +s una rela!i'n en la que una de las !lases re$resenta un todo la otra re$resenta $arte de ese todo Composicin: +s una #orma ms #uerte de la agrega!i'n) en la que el todo no $uede existir sin sus $artes

Cmo se implementan? Cu7l es la di1erencia con las asociaciones?

38

Diagramas de Clases (Agrega$i)n & Composi$i)n)


Composicin: Las $artes no $ueden existir sin el todo *n contradiccin con el ejemplo anterior: Composicin: +l todo no $uede existir sin las $artes (*jemplo Anterior)

?La $arte (La rueda) $uede existir sin el todo@

39

Diagramas de Clases (Agrega$i)n & Composi$i)n)


)eor a7n...
A re acin: DLas $artes $ueden ser !om$artidas $or varios todosE Composicin: DLas $artes =5 $ueden ser !om$artidas $or varios todosE

40

Diagramas de Clases (Agrega$i)n & Composi$i)n)


!recise semantics of s#ared a,,re,ation varies "y application area and modeler#

$ndicates t%at t%e property is aggregated compositely, i&e&, t%e composite o"'ect %as responsi"ility for t%e e(istence and storage of t%e composed o"'ects )parts*# Citas tomadas literalmente del #st7ndar de "ML
41

Diagramas de Clases (Dependen$ia)


&ependencia: %ela!i'n en la que una !lase ne!esita (requiere) a otra $ara $oder #un!ionar

La !lase $ersona depende de la !lase tel*#ono

42

Diagramas de Clases

Qu 8 Cu7l es la 5nter1a- de una clase?

43

Diagramas de Clases (Inter1a$es & ,eali%a$iones)


-nterfa1: Clase aso!iada que des!ri&e su !om$ortamiento visi&le0 Con.unto de m*todos que des!ri&en el !om$ortamiento visi&le de una !lase
+ditorGra#i!o es una !lase que usa la inter#az 1di&u.a&le) inde$endientemente que la im$lemente un C-r!ulo o !ualquier otra !lase (4olimor#ismo) FFinter#a!eGG es un estereoti$o

44

Diagramas de Clases (Inter1a$es & ,eali%a$iones)


La inter#az 1Geometri!o es im$lementada ( realizada tanto $or C-r!ulo !omo $or %e!tngulo

Desde el $unto de vista de 455) tanto C-r!ulo !omo %e!tngulo son o&.etos de ti$o 1Geometri!o

45

Diagramas de Clases (Inter1a$es & ,eali%a$iones)


import Aa?a.aFt.Point; import Aa?a.aFt.@e#tan le; public class Cir#ulo implements IGeometrico, IDibujable { private double #entro; private double ra&io; public double getArea() public double get$erimetro() public Rectangle getRect%ont() public void dibujar() public Point public void etCentro() setCentro(...) !" de IGeometrico "! # !" de IGeometrico "! # !" de IGeometrico "! # !" de IDibujable "! # { :* &e #ir#ulo *: } { :* &e #ir#ulo *: } { :* &e #ir#ulo *: } { :* &e #ir#ulo *: }
46

public double et@a&io() public void set@a&io(...) }

Diagramas de Clases (Inter1a$es & ,eali%a$iones)


import Aa?a.aFt.@e#tan le; public inter&ace IGeometrico { public double public double } et-rea(); etPerimetro(); et@e#tCont();

public @e#tan le

public inter&ace IDibujable { public void &ibuAar(); }


47

Diagramas de Clases (Inter1a$es & ,eali%a$iones)


5ist76!ibuAable9 elementos!ibuAar; :: ...
Algunos de estos son !-r!ulos) otros son re!tngulos) estrellas) l-neas) et!*tera000 4ero todos im$lementan la inter#az 1Di&u.a&le

&or (6!ibuAable &ibuAable < elementos!ibuAar) { :: No importa si &ibuAable es :: un #3r#ulo, re#tGn ulo, et#4tera :: 5os pue&o maneAar a to&os i ual :: porHue tienen una inter"aE en #omIn &ibuAable.&ibuAar(); }

D+l a!to de magia de las inter#a!es

el $olimor#ismoE
48

Diagramas de Clases (Que es una Clase?)

8qu es acoplamiento9 8qu es co#esin9


el acoplamiento m+s "a'o posi"le y la co%esin m+s alta posi"le suele ser el o"'etivo de todo arquitecto, dise,ador de soft-are o programador

lectura recomendada:
%ttp.//latecladeescape&com/-0/ingenieria1del1soft-are/acoplamiento1y1co%esion&%tml

49

Diagramas de Clases

#.emplos

50

Diagramas de Clases ('n e#emplo $on$eptual)

Modelo de Dominio

51

Diagramas de Clases ('n e#emplo $on$eptual)

52

Diagramas de Clases ('n e#emplo $on$eptual)

Modelo de Dominio

53

Diagramas de Clases ('n e#emplo $on$eptual)

Modelo de Dominio

54

Diagramas de Clases (Arquite$tura de las $lases *'I de C2(DA)

Arquitectura Dise9o 44

55

Diagramas de Clases (Arquite$tura del motor de 3or41lo5 Cleda6lo5)

Arquitectura Dise9o 44

56

Diagramas de Clases

A nivel de implementacin

57

Diagramas de Clases (Modelo Con$eptual)


class Dependencias +tieneEscuelas 1..* Escuela

+tieneDepartamentos 1..* Departamento acultad! "#cleo +tieneInstitutos * InstitutoDeI nvestigacin Dependencia

+tieneCentros * +tieneLabs * LaboratorioDeInvestigacin +tienePostgrados * Postgrado CentroDeInvestigacin

58

Diagramas de Clases (Modelo de Implementa$i)n)


class pel:culas 0el:cula < < < < I < I < I < I I I I titulo/ string 9 Des!ono!ido aHo/ !,ar 9 0000 dura!ion/ #loat 9 000 ti$o/ >i$o4eli!ula nueva4eli!ula() / void set>itulo(string) / void get>itulo() / string setAHo(!,ar) / void getAHo() / !,ar setDura!ion(#loat) / void getDura!ion() / #loat modi#i!a4eli!ula() / void des$liega4eli!ula() / void elimina4eli!ula() / void JenumerationK ;ipo0elicula JenumK drama sus$enso a!!i'n !omedia #studio < < < < < < < I$rodu!ida4or $rodu!!i'n 100N I I I I < < < < < < < I I I I I I I nom&re/ string !iudad/ string dire!!ion/ string dirLe&/ string #e!,aMunda!ion/ date $ais/ string tele#onos/ Lista nuevo+studio() / void modi#i!a+studio() / void !ierra+studio() / void des$liega+studio() / +studio78 set=om&re(string) / void setCiudad(string) / void setDire!!ion(string) / void setDirLe&(string) / void setMe!,aMunda!ion(date) / void set4ais(string) / void set>ele#onos(Lista) / void get=om&re() / string getCiudad() / string getDire!!ion() / string getDirLe&() / string getMe!,aMunda!ion() / date get4ais() / string get>ele#onos() / string78

I$rodu!e N

59

Diagramas de Clases

class 0rstamo de equipos Dependencia <tieneDe$artamentos Departamento 100N <se!retariaDe 1 <olicitudDe0ro1esor <$ro#esores 100N 0ro1esor N 1 <soli!itado4or <soli!ita N <autorizado4or <autoriza N #quipo <!ontrola N <olicitudDe#studiante <estudiantes 100N <soli!ita N <soli!itado4or N #studiante Dependencia #scuela 1 <se!retariaDe

<!ontrolado4or <se!retaria 1

1 <se!retaria 1

0ersonal

0ersona

60

Diagramas de Clases

class +eometr:a JenumerationK ;ipoColor JenumerationK ;ipo=elleno JenumerationK ;ipo<om2ra Dato+eomtrico < !olor/ >i$oColor JenumK ro.o verde negro

0ol: ono < < relleno/ >i$o%elleno som&ra/ >i$o"om&ra < < <de O00N <l-neas <l-neas

0unto x/ #loat / #loat 1 N 1

<esquina"u$erior1zquierda 1 <,asta

=ect7n ulo < < an!,o/ int largo/ int < <

Arco anguloDe1ni!io/ dou&le anguloDeCarrido/ dou&le

<l-neas N <l-neas 200N :ordenado; 0olil:nea

:ordenado) ,asta l-nea #inal 9 de l-nea ini!ial;

L:nea

61

Diagramas de Clases

+ecturas recomendadas:
,tt$/((PPP0i&m0!om(develo$erPorQs(rational(li&rar (!ontent(%ational+dge(se$0R(&ell(

(+n 1ngl*s)

62

,(6(,(NCIAS

Martin MoPler) UML Distilled) 4earson Addison< Lesle 2da0 +di!i'n

Coo!,) %um&aug,) Sa!o&son) +l Lengua.e Uni#i!ado de Modelado) 4earson Addison<Lesle 1ra0 +di!i'n
63

*ra$ias

!:racias$

64

También podría gustarte