1. Diagrama de clases
UML
Clara Patricia Avella Ibáñez
Tunja – Boyacá – Colombia
Docente universitaria
cpavella@gmail.com
2. Por qué usar un diagrama
de clases?
Es una de las primeras y más usadas
herramientas de generación automática de
código.
Ha sido el diagrama más importante en
todos los métodos orientados a objetos,
porque constituye la guía para convertir el
diseño lógico del sistema en lenguaje de
código.
4. Clases
NombreDeLaClase
Atributos
Operaciones
(métodos) - privado: el atributo sólo es visible por los
métodos de la clase
+ público: el atributo es visible dentro y fuera de
la clase
# protegido: el atributo es visible por los
métodos de la clase y por métodos de clases
derivadas de esta clase, cuando hay herencia.
Accesibilidad nombreDelAtributo :
tipoDeDato
Accesibilidad
Utilizar singular
5. Clases
NombreDeLaClase
Atributos
Operaciones
(métodos) - privado: el método sólo es visible por los otros
métodos de la clase.
+ público: el método es visible dentro y fuera de
la clase
# protegido: el método es visible por los métodos
de la clase y por métodos de clases derivadas de
esta clase, cuando hay herencia.
Accesibilidad
Accesibilidad nombreDelMétodo(parámetro1: tipoDeDato,
parámetro2: tipoDeDato, parámetroN: tipoDeDato) :
tipoDeDatoDeRetornoDelMétodo
7. Paquetes
Agrupan lógicamente las clases que tienen alguna relación entre sí.
Se pueden agrupar por clases que conforman módulos y submódulos
de la aplicación.
Se pueden agrupar por tipo de funcionalidad. Ej. Paquete con las
clases de la lógica del negocio, paquete con las clases de la Interfaz
Gráfica de usuario, paquete con las clases que manejan persistencia
de datos.
Paquete X Paquete Y
9. Relaciones
Clase A
Las clases pueden conectarse con otras clases de diferentes
formas, estas conexiones se llaman relaciones.
Clase B
Clase A Clase B Clase A Clase B
Clase A Clase B Clase B
Clase A
10. Relaciones
ClaseA
Indica que una clase
invoca uno o varios
métodos que se
encuentran en la clase
con la cual se
relaciona.
ClaseB
Uso
La clase A usa a la clase B
La clase A invoca uno o varios
métodos de la clase B
11. Relaciones
public class ClaseA
{
public static void main(String args[])
{
ClaseB objeto1 = new ClaseB( );
objeto1.metodo1( );
}
}
ClaseA ClaseB
Uso Ejemplo en código java:
+main(args)
: void
+metodo1()
:void
public class ClaseB
{
// atributos
public void metodo1( )
{
// acá van las instrucciones del método
}
}
La clase A usa
(invoca) el
método1 de la
clase B
12. Relaciones
Herencia
Clase A
Clase B
Relación Los objetos de la
Clase B toman los
atributos y métodos
de la Clase A como
si fueran propios
La Clase B (subclase o
clase derivada)
hereda de la Clase A
(superclase o clase
general)
16. Relaciones
Agregación
Clase A Clase B
*
Se utiliza para expresar que
una clase contiene muchos
objetos de otra clase
En este caso se expresa que
la clase A contiene muchos
objetos de la clase B
El * indica la
multiplicidad de
la relación, es
decir, cuántos
objetos de la
clase B son
conocidos por la
clase A
Ejemplos de
Multiplicidad:
1 uno
1, 2 uno o dos
5 cinco
0..* entre cero y muchos
* entre cero y muchos
1..* entre 1 y muchos
5..10 entre cinco y diez
18. Relaciones
Agregación
Curso
- nrc: int
- nombre: string
Estudiante
-id: int
-nombre: string
-apellido:s tring
5..30
Un curso contiene
entre 5 y 30
estudiantes
Ejemplo
19. Relaciones
Composición
Universidad
- nit: string
- nombre: string
Carrera
-id: int
-nombre: string1..*
Es una relación de
agregación fuertemente
ligada, es decir que por lo
menos debe existir un
objeto de la clase contenida
en la clase contenedora
para que exista la relación.
En el ejemplo: Una
Universidad por lo menos
debe tener una Carrera
para existir
Su paso a código fuente se
maneja de la misma forma que
la relación de agregación.
20. RelacionesAsociación
Cuando los objetos de una clase tienen alguna referencia con objetos de
otra clase se utiliza una relación de asociación. Se representa por una
línea continua.
Clase A Clase BClase A Clase B
Cada objeto de la Clase A conoce
una referencia de la clase B, pero
la clase B no conoce a la clase A.
1
Cada objeto de la Clase A conoce una
referencia de la clase B y cada objeto
de la clase B pertenece a una
referencia de la clase A.
conoce > 1
La relación de Asociación debe tener:
Dirección: indica qué clase tiene la referencia a qué clase
-> <-
Si no hay flecha indica que las dos clases se conocen entre sí.
Multiplicidad (el mismo concepto manejado en agregación)
Nombre: sirve para identificar la relación en el diagrama
conoce 1 < pertenece a
21. Relaciones
Profesor
- codigo: int
- nombre: String
- apellido: String
Curso
-id: int
-nombre: String
1..3
Un profesor orienta
entre 1 y 3 cursos
Asociación
orienta
Ejemplo
22. Relaciones
Ciudad
- codigo: int
- nombre: string
Estudiante
-id: int
-nombre: string
-apellido:s tring
1
Un estudiante tiene una
ciudad de nacimiento y
una ciudad de residencia
Asociación
ciudad de
Nacimiento
1ciudad de
Residencia
Ejemplo
23. Referencias bibliográficas
• Knoernschild, Kirk. Java Design Objects, UML and process.
Addison Wesley, 2001. ISBN 0-201-75044-9
• Roques, Pascal. UML in practice. The art of modeling
software systems demostrated through worked examples
and solutions. Jhon Wiley & Sons, Ltd. Editorial, 2004.
• http://www.dcc.uchile.cl/~psalinas/uml/modelo.html