Diagramas de Clase UML

Objetivos

Al final este tema, el estudiante debe estar en capacidad de:

  • Leer correctamente un diagrama de clases
  • Dadas unas preguntas analizar si a partir de un modelo de clases sería posible obtener la respuesta y explicar las razones.
  • Construir, utilizando correctamente la sintaxis, un diagrama de clases de un problema dado.
  • Utilizar correctamente Genmymodel para construir los diagramas de clases.
  • Interpretar con respecto a la realidad lo expresado en un diagrama de clases identificando información incompleta.
  • Analizar un diagrama de clases con respecto a una realidad y construir preguntas para mejorar el entendimiento.

Contenido

Este material hace parte del curso *MISO4100 Nivelatorio de modelamiento* de la Maestría en Ingeniería de Software

Generalidades

¿Para qué sirven los diagramas de clases?

Sirven para representar aspectos estructurales de un sistema orientado a objetos. Estos diagramas son uno de los 13 tipos de diagramas pertenecientes al estándar UML 2.0

Los diagramas de clase muestran los bloques constructores de un sistema y las relaciones entre dichos bloques. Este mapa de bloques y relaciones se conoce como vista estática del sistema orientado a objetos.

La siguiente Figura muestra un ejemplo de un diagrama de clases:

Figura 1 Figura 1

Este ejemplo modela los elementos principales de una universidad a través de un diagrama de clases. El ejemplo ilustra los tipos de elementos básicos : clases y asociaciones.

Clases

Toda clase tiene un nombre explícito que, por convención, debe:

  1. Comenzar con mayúscula.
  2. Si es un nombre compuesto por varias palabras, usar CamelCase, es decir, cada nueva palabra empieza por una mayúscula. V.gr., EstudianteUniversitario

Atributos

Cada clase puede tener uno o varios atributos que aparecen en el segundo compartimento del rectángulo. La clase Estudiante del ejemplo tiene cómo atributos edad, nombre, género, etc.

Cada atributo se expresa con un nombre, una visibilidad y un tipo de dato. Por convención, el nombre del atributo comienza por minúscula, v.gr., edad. Si el nombre es compuesto se usa CamelCase, v.gr., fechaDeNacimiento.

Visibilidad

La visibilidad define si las propiedades de las clases (i.e., atributos y métodos) pueden ser vistas o usadas por otras clases. Los niveles de visibilidad son: público, privado o protegido, los cuales se representan con los íconos +, -, #, respectivamente. En el ejemplo, edad es un atributo privado.

Una propiedad privada puede ser vista y usada sólo por la clase que la contiene. Una propiedad pública puede ser vista y usada por la clase que la contiene y por cualquier otra clase. Una propiedad protegida puede ser vista y usada sólo por la clase que la contiene y por las subclases de ésta.

Tipo

El tipo de dato de un atributo puede ser primitivo o definido por el usuario. Los tipos primitivos de UML estandar son:

  • Boolean,
  • Integer,
  • UnlimitedNatural,
  • String,
  • Real.

En el ejemplo, edad es un atributo de tipo Integer. Ver más información sobre los tipos de datos en UML en UML Data Types.

Métodos

En el tercer compartimento se proponen los métodos de la clase. Cada método tiene también un nombre, una visibilidad, una lista de parámetros y un tipo de dato de retorno.

Por convención, los nombres de los métodos comienzan por minúscula. Si el nombre del método es compuesto se usa Camel Case, e.g., calcularPromedioSemestre.

Al igual que los atributos, los métodos tienen una visibilidad que puede ser pública, privada o protegida.

La lista de parámetros puede tener cero o varios parámetros de un tipo determinado. Si observamos el ejemplo, el método darNombre, de la clase Estudiante, es público, no tiene parámetros y retorna una cadena de caracteres (String). Enla misma clase, el método calcularPromedioSemestre es público. Tiene un parámetro de tipo entero (Integer) y retorna un Real.

Asociaciones

El otro elemento importante de los diagramas de clases es la asociación. Una asociación, por definición, relaciona dos clases en el diagrama y se representan usando una línea.

Nombre

Cada asociación puede tener un nombre. De estar presente, el nombre va en la mitad de la línea que la representa. El nombre de la asociación, por convención: 1) Empieza por minúscula. 2) Si el nombre es compuesto por varias palabras, se usa Camel Case. 3) Es significativo de lo que representa. En la siguiente figura hay dos asociaciones entre la clase Curso y la clase Estudiante: Una para asociar con un curso los estudiantes que lo están viendo (esVistoPor) y otra para representar los estudiantes que asisten como visitantes (visitadoPor).

Figura 2 Figura 2

Cardinalidad

En el ejemplo de la Figura 1 hay varias asociaciones. Existe una entre Curso y Salón: significa que cada uno de los objetos de la clase Curso está asociado con un (y solo uno) objeto de la clase Salón. Para indicar que sólo un curso y solo un salón están involucrados en la asociación se escribe en el extremo al lado de la clase correspondiente el número 1 (no escribir ningún numero significa que la cardinalidad es 1).

En la Figura 2, en las asociaciones esVistoPor y visitadoPor la cardinalidad de la clase Estudiante y de la clase Curso es múltiple (representada por el símbolo *). Significa que dado un objeto de la clase Curso, este tiene una asociación con un conjunto de objetos de la clase Estudiante. En el otro sentido significa que: un estudiante puede estar asociado con varios objetos de la clase Curso.

La cardinalidad del rol puede ser un entero o una expresión. Por ejemplo:

  • 1
  • 1..5 mínimo 1 máximo 5
  • 0..1 cero o uno
  • * cero o muchos
  • 1..* uno o muchos

Roles

En el ejemplo anterior el conjunto de estudiantes destino de la asociación esVistoPor se llama estudiantes. Este nombre se llama el rol de la clase Estudiante en la asociación.

La navegabilidad es indicada por la punta de la flecha. En el ejemplo de la Figura 1, la punta de la flecha indica que en una asociación entre un objeto de la clase Curso y un objeto de la clase Salon, el objeto curso tiene acceso al objeto salón (se toma la dirección hacia la cual apunta la flecha).

De aquí deducimos que Salon no tiene acceso a Curso ya que la asociación no apunta en esa dirección.

La ausencia de punta de flecha en ambas terminaciones de la relación suele significar, generalmente, que hay navegabilidad en ambos sentidos.

Tipos de Asociaciones

La figura 3 muestra los distintos tipos de asociaciones que puede haber entre dos clases en un diagrama de clases UML:

Figura 3: Tipos de asociaciones Figura 3: Tipos de asociaciones

Asociación de agregación o compartida (shared)

Su notación correspondiente es un rombo vacío. En la Figura 2, la asociación entre Curso y Estudiantes es de este tipo. Supongamos que tenemos los objetos c1 y c2 de la clase Curso y algunos objetos de la clase Estudiante que llamaremos e1, e2 , e3 y e4 Ahora representaremos dos colecciones de estudiantes. Estudiantes1 será una colección asociada, atraves de esVistoPor, con el curso c1 y que contiene los objetos e1, e2 y e3. Estudiantes2 será una colección asociada con el curso c2 que contiene los objetos e3 y e4.

Figura 4

Figura 4. Ejemplo asociación de agregación.

Note que el objeto e3 es compartido por las colecciones estudiantes1 y estudiantes2 de los objetos C1 y c2.

Asociación compuesta o de agregación fuerte (composite)

Su notación correspondiente es un rombo relleno. En la Figura 2, la asociación entre Universidad y Programa es de este tipo. Significa que si tenemos dos universidades u1 y u2; los programas de la universidad u1 no pueden ser programas de la universidad u2. La Figura 5 ilustra el caso:

Figura 5

Figura 5. Ejemplo asociación "composite" o de agregación fuerte

Decimos que en las asociaciones de agregación fuerte se tienen dos propiedades: 1. Exclusividad (como en el ejemplo anterior) y 2. Existencialidad que significa que si se destruye elk objeto de origen (en el ejemplo u1) se destruyen los objetos destino (en el ejemplo p1, p2 y p3).

Ejercicios

  1. Hacer un diagrama de clases para modelar un sistema de archivos. Un directorio es un archivo que contiene archivos. Los archivos pueden ser terminales o directorios. Cada archivo tiene un nombre y un tamaño.
  2. Hacer un diagrama de clases para modelar las clases y sus relaciones del siguiente (fragmento) enunciado: " Un concierto de música se presenta en varias funciones, por cada función se sabe el día, la hora y el lugar. Los lugares de los conciertos tienen un nombre y una capacidad. Del concierto se sabe el nombre.
  3. Hacer un diagrama de clases para modelar un portafolio de obras de arte. Cada obra tiene un tipo (escultura, pintura, video,…), uno o más autores, una fecha de creación, un valor estimado. Adicionalmente cada obra tiene asociado un conjunto de fotografías y/o videos para exhibirla en el portafolio. A partir del portafolio se crean exposiciones de las obras en galerías. Cada exposición tiene unas fechas, un lugar y una descripción. Para una exposición se selecciona un conjunto de obras el portafolio que se van a presentar.
  4. Una empresa se identifica a través de su nombre y un NIT. Una empresa tiene empleados y departamentos: Un empleado se registra bajo un nombre y se lleva la cuenta de sus años de servicio. Los departamentos reciben un nombre de acuerdo a sus funciones. Los empleados trabajan para un departamento. Adicionalmente un departamento necesita un empleado que ejerza la función de revisor y uno que ocupe la dirección. Los empleados deben estar afiliados al régimen de retiro de la empresa, al que pueden hacer aportes voluntarios u obligatorios. Por otra parte, una empresa cuenta con un Fondo de Empleados, un departamento al que los empleados pueden o no estar afiliados.

Material Complementario

results matching ""

    No results matching ""