Está en la página 1de 64

1

UML
Diagramas de Clases
(UML ilustrado)
Universidad de Los Andes
Demin Gutierrez
Marzo 2011
2
Di agramas de Cl ases
(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)
3
Di agramas de Cl ases
(Para qu Si rven?)
%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
(Cumplen la misma funcin en este sentido de los
diagramas ERE)
4
Di agramas de Cl ases
Advertencia
5
Nota I mportante
+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
6
Di agramas de Cl ases
Qu es un
Dominio de
Aplicacin?
Qu es un Modelo
de Dominio?
7
Di agramas de Cl ases
La maor-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
8
Di agramas de Cl ases
Qu es una Clase?
9
Di agramas de Cl ases
(Que es una Cl ase?)
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?
10
Di agramas de Cl ases
(Atri utos ! "# etos)
Atributos:
4ro$iedades relevantes de un !lase
%e$resentan su estru!tura
4ueden ser sim$les o !om$uestos
Mtodos:
Com$ortamiento aso!iado a una
!lase
11
Di agramas de Cl ases
La relacin que existe
entre el cdio ! una
clase en "ML es mu!
importante
!"ecesito que #ablemos
el mismo idioma$
12
Di agramas de Cl ases
(Que es una Cl ase?)
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 cdio es
$ava %&'
13
Di agramas de Cl ases
(Que es una Cl ase?)
%isibilidad:
& 4rivado
( 4aquete
) 4rotegido
* 46&li!o
"ombre
Atributo
%alor por
&efecto
'ipo de &ato
Multiplicidad
'ipo de
(etorno
)armetros
de *ntrada
"ombre del
Mtodo
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
14
Di agramas de Cl ases
(Que es una Cl ase?)
)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 Mtodos:
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
15
Di agramas de Cl ases
qu es un o2.eto?
qu es una instancia?
qu es instanciar?
16
Con$eptos de "# etos
(Di agramas de Cl ases)
-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
17
Di agramas de Cl ases
public class Persona {
private Strin nombre;
private char sexo;
private !ate "e#haNa#;
private Strin pro"esion;
public Persona(
Strin nombre, char sexo, !ate "e#haNa#, Strin pro"esion) {
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
18
Di agramas de Cl ases
Persona p$ = new Persona(
%Pe&ro', (M(, new !ate($), *, $+,,), %-#tor' );
Persona p. = new Persona(
%-n&rea', (/(, new !ate($0, 0, $+,1), %Ceramista');
Persona p2 = new Persona(
%Mar3a', (/(, new !ate(.2, $$, $+)1), %M4&i#o' );
Persona p0 = new Persona(
%5uis', (M(, new !ate($., $, $+**), %6neniero');
C
r
e
a
r

5
n
s
t
a
n
c
i
a
s

6
5
n
s
t
a
n
c
i
a
r
'
19
Di agramas de Cl ases
(Parametri %al es & Astra$tas & 'ti l i tari as)
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)
20
Di agramas de Cl ases
(Parametri %al es & Astra$tas & 'ti l i tari as)
public class 5ista78ipo9 {
public void insertar (8ipo t)
{ :* #;&io *: }
public void eliminar (8ipo t)
{ :* #;&io *: }
public 8ipo eliminar (int pos)
{ :* #;&io *: }
public 8ipo obtener (int pos)
{ :* #;&io *: }
public 6tera&or itera&or ()
{ :* #;&io *: }
}
:: 5a #lase se usa &e la siuiente "orma<
5ista7int9 lista!e=nteros = new 5ista7int9();
5ista7Persona9 lista!ePersonas = new 5ista7Persona9();
21
Di agramas de Cl ases
(Parametri %al es & Astra$tas & 'ti l i tari as)
public abstract class /iura>ase {

public void insertar=nCan?as(Can?as #) { :* #;&io *: }
public void eliminar!eCan?as(Can?as #) { :* #;&io *: }


:: 5os m4to&os siuientes son abstra#tos,
:: es &e#ir, no tienen implementa#i;n

public abstract double et-rea();
public abstract double etPerimetro();
public abstract double et@e#tCont();
public abstract double et!ibuAar();
}
22
Di agramas de Cl ases
((spe$i al i %a$i )n & *eneral i %a$i )n & +eren$i a)
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)
23
Di agramas de Cl ases
((spe$i al i %a$i )n & *eneral i %a$i )n & +eren$i a)
5erencia:
Dis.unta ( >rasla$ada
>otal ( 4ar!ial
24
Di agramas de Cl ases
((spe$i al i %a$i )n & *eneral i %a$i )n & +eren$i a)
public abstract class Figura {
public abstract double #al#-rea ();
public abstract void &ibuAar (Can?as #an?as);
}
public class Rectangulo
extends Figura {
:: ...
}
public class Cua&ra&o
extends Rectangulo {
:: ...
}
public class Elipse
extends Figura {
:: ...
}
public class Cir#ulo
extends Elipse {
:: ...
}
Mayo,2008 EISULA. Dpto. De Computacin. Isabel Besembel C. Base e Datos. Sem. A!08. 2"
Vista lgica o
estructural
Polimorfismo: se puee usa# el
mismo nomb#e pa#a la e$inicin e un
m%too en &a#ias clases sin impo#ta# la
#elacin ent#e las mismas.
Reescritura o
sobrecarga: pe#mite nomb#a#
ci'o i$e#ente con el mismo nomb#e
pa#a m(s e una clase e ob)etos.
Encadenamiento tardo:
pe#mite selecciona# el ci'o aecuao al
ob)eto e$inio en la in&ocacin el m%too.
Persona
!oi* +ID
!nomb#e* Caena,-./012
!i#eccion* Caena,128/00..12
!tele$ono* Caena,1-/00..12
3moi$ica,/
3esplie'a,/
Trabajador
!ca#'o* 4ipoCa#'o012
!sueloActual* Monea00..12
3esplie'a,/
Preparador
!$ec5aConcu#so* 6ec5a012
3esplie'a,/
Estudiante
!ca##e#a* 4ipoCa##e#a012
3esplie'a,/
26
,el a$i ones (-. n$ul os)
?Aso!ia!iones@
?1/1) 1/= =/M@
+so se $uede ver
me.or !on un e.em$lo
27
A-n!ulo ( %ela!i'n
>ra&a.a +n ( >iene
,el a$i ones (-. n$ul os)
/0 N
De$artamento
de Control
De$artamento
de Com$uta!i'n
4ro#esores De$artamentos
De$artamento
de 1nvestiga!i'n
de 5$era!iones
?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@
28
A-n!ulo ( %ela!i'n
Di!ta ( +s di!tada $or
,el a$i ones (-. n$ul os)
N0 M
4rograma!i'n
10
Cases de Datos
4ro#esores Materias
4rograma!i'n
20
?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@
29
,el a$i ones (-. n$ul os)
/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@
30
Di agramas de Cl ases
(Aso$i a$i ones)
Asociaciones: %e$resentan rela!iones estru!turales entre
las !lases (la #orma en que estn rela!ionadas entre si las
!lases)
Cmo se implementan?
31
Di agramas de Cl ases
(Aso$i a$i ones)
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";
}
32
Di agramas de Cl ases
(Aso$i a$i ones)
public class =stu&iante {

:: Bna lista &e asinaturas
:: (Bn estu&iante tiene mu#has asinaturas)
private 5ist7-sinatura9 asinatura5ist;
}
:: ...
public class -sinatura {
:: Bna lista &e estu&iantes
:: (Bna asinatura tiene mu#hos estu&iantes)
private 5ist7=stu&iante9 estu&iante5ist;
}
33
Di agramas de Cl ases
(Aso$i a$i ones)
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 -sinatura asinatura@e";
}
public class -sinatura {
:: Bna lista &e =st-si@ela#ion (Bna #lase rela#iCDn)
private 5ist7=st-si@ela#ion9 est-si@ela#ion5ist;
}
34
Di agramas de Cl ases
(Aso$i a$i ones)
Una rela!i'n
mu!,os a mu!,os
se $uede ver !omo
dos rela!iones uno a
mu!,os
35
Di agramas de Cl ases
(Aso$i a$i ones)
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";
}
36
Di agramas de Cl ases
(Aso$i a$i ones)
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;
}
37
Di agramas de Cl ases
(Aso$i a$i ones & Navegai l i dad)
"a6e,abilidad: %e$resentan rela!iones estru!turales entre
las !lases (la #orma en que estn rela!ionadas entre si las
!lases)
1nde#inido
=avega&le
=5
navega&le
=avega&le $or
am&os lados
38
Di agramas de Cl ases
(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?
39
Di agramas de Cl ases
(Agrega$i )n & Composi $i )n)
Composicin: +l todo no
$uede existir sin las $artes
(*jemplo Anterior)
Composicin: Las $artes no
$ueden existir sin el todo
*n contradiccin con el
ejemplo anterior:
?La $arte (La
rueda) $uede
existir sin el
todo@
40
Di agramas de Cl ases
(Agrega$i )n & Composi $i )n)
Composicin: DLas $artes =5
$ueden ser !om$artidas $or
varios todosE
Areacin: DLas $artes
$ueden ser !om$artidas $or
varios todosE
)eor a7n...
41
Di agramas de Cl ases
(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
42
Di agramas de Cl ases
(Dependen$i a)
&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
43
Di agramas de Cl ases
Qu 8 Cu7l es la
5nter1a- de una clase?
44
Di agramas de Cl ases
(I nter1a$es & ,eal i %a$i ones)
-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
FFinter#a!eGG es un estereoti$o
+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)
45
Di agramas de Cl ases
(I nter1a$es & ,eal i %a$i ones)
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
46
Di agramas de Cl ases
(I nter1a$es & ,eal i %a$i ones)
import Aa?a.aFt.Point;
import Aa?a.aFt.@e#tanle;
public class Cir#ulo implements IGeometrico, IDibujable {
private double #entro;
private double ra&io;
public double getArea() !" de IGeometrico "! #
public double get$erimetro() !" de IGeometrico "! #
public Rectangle getRect%ont() !" de IGeometrico "! #
public void dibujar() !" de IDibujable "! #
public Point etCentro() { :* &e #ir#ulo *: }
public void setCentro(...) { :* &e #ir#ulo *: }
public double et@a&io() { :* &e #ir#ulo *: }
public void set@a&io(...) { :* &e #ir#ulo *: }
}
47
Di agramas de Cl ases
(I nter1a$es & ,eal i %a$i ones)
import Aa?a.aFt.@e#tanle;
public inter&ace IGeometrico {
public double et-rea();
public double etPerimetro();
public @e#tanle et@e#tCont();
}
public inter&ace IDibujable {
public void &ibuAar();
}
48
Di agramas de Cl ases
(I nter1a$es & ,eal i %a$i ones)
5ist76!ibuAable9 elementos!ibuAar;
:: ...
&or (6!ibuAable &ibuAable <
elementos!ibuAar) {
:: No importa si &ibuAable es
:: un #3r#ulo, re#tGnulo, et#4tera
:: 5os pue&o maneAar a to&os iual
:: porHue tienen una inter"aE en #omIn
&ibuAable.&ibuAar();
}
D+l a!to de magia de las inter#a!es el $olimor#ismoE
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
49
Di agramas de Cl ases
(Que es una Cl ase?)
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
50
Di agramas de Cl ases
#.emplos
51
Di agramas de Cl ases
('n e# empl o $on$eptual )
Modelo de Dominio
52
Di agramas de Cl ases
('n e# empl o $on$eptual )
53
Di agramas de Cl ases
('n e# empl o $on$eptual )
Modelo de Dominio
54
Di agramas de Cl ases
('n e# empl o $on$eptual )
Modelo de Dominio
55
Di agramas de Cl ases
(Arqui te$tura de l as $l ases *'I de C2(DA)
Arquitectura
Dise9o 44
56
Di agramas de Cl ases
(Arqui te$tura del motor de 3or41l o5 Cl eda6l o5)
Arquitectura
Dise9o 44
57
Di agramas de Cl ases
A nivel de
implementacin
58
class Dependencias
Dependencia
Escuela
Departamento
InstitutoDeInvestigacin
CentroDeInvestigacin
LaboratorioDeInvestigacin
Postgrado
acultad! "#cleo
+tieneDepartamentos 1..*
+tieneEscuelas
1..*
+tieneI nstitutos
*
+tieneCentros
*
+tieneLabs
*
+tienePostgrados
*
Di agramas de Cl ases
(Model o Con$eptual )
59
class pel:culas
0el:cula
< titulo/ string 9 Des!ono!ido
< aHo/ !,ar 9 0000
< dura!ion/ #loat 9 000
< ti$o/ >i$o4eli!ula
I nueva4eli!ula() / void
< set>itulo(string) / void
I get>itulo() / string
< setAHo(!,ar) / void
I getAHo() / !,ar
< setDura!ion(#loat) / void
I getDura!ion() / #loat
I modi#i!a4eli!ula() / void
I des$liega4eli!ula() / void
I elimina4eli!ula() / void
JenumerationK
;ipo0elicula
JenumK
drama
sus$enso
a!!i'n
!omedia
#studio
< nom&re/ string
< !iudad/ string
< dire!!ion/ string
< dirLe&/ string
< #e!,aMunda!ion/ date
< $ais/ string
< tele#onos/ Lista
I nuevo+studio() / void
I modi#i!a+studio() / void
I !ierra+studio() / void
I 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
I get=om&re() / string
I getCiudad() / string
I getDire!!ion() / string
I getDirLe&() / string
I getMe!,aMunda!ion() / date
I get4ais() / string
I get>ele#onos() / string78
I$rodu!e
N
$rodu!!i'n
I$rodu!ida4or
100N
Di agramas de Cl ases
(Model o de I mpl ementa$i )n)
60
class 0rstamo de equipos
Dependencia
Departamento
Dependencia
#scuela
0ersonal
0ro1esor
#quipo
#studiante
0ersona
<olicitudDe0ro1esor
<olicitudDe#studiante
<tieneDe$artamentos
100N
<!ontrolado4or
1
<!ontrola N
<$ro#esores 100N
<se!retariaDe 1
<se!retaria
1
<se!retariaDe
1
<se!retaria
1
<estudiantes 100N
<soli!itado4or
N
<soli!ita
N
<soli!ita
N
<soli!itado4or
N
<autorizado4or 1
<autoriza
N
Di agramas de Cl ases
61
class +eometr:a
Dato+eomtrico
< !olor/ >i$oColor
JenumerationK
;ipoColor
JenumK
ro.o
verde
negro
JenumerationK
;ipo=elleno
JenumerationK
;ipo<om2ra
0ol:ono
< relleno/ >i$o%elleno
< som&ra/ >i$o"om&ra
0unto
< x/ #loat
< / #loat
L:nea
=ect7nulo
< an!,o/ int
< largo/ int
0olil:nea
Arco
< anguloDe1ni!io/ dou&le
< anguloDeCarrido/ dou&le
<esquina"u$erior1zquierda
1
<l-neas
200N :ordenado;
<l-neas
O00N
:ordenado) ,asta l-nea #inal 9 de l-nea ini!ial;
<de 1
<l-neas N <l-neas N
<,asta
1
Di agramas de Cl ases
62
Di agramas de Cl ases
+ecturas recomendadas:
,tt$/((PPP0i&m0!om(develo$erPorQs(rational(li&rar(!ontent(%ational+dge(se$0R(&ell(
(+n 1ngl*s)
63
,(6(,(NCI AS
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
64
*ra$i as
!:racias$

También podría gustarte