Modelo de Dominio
Definiciones previas
UML
Es un lenguaje de modelado con símbolos elementos de diagramas que permiten describir clases, actividades, flujos de trabajo, estados y relaciones entre todos estos.
Modelo lógico/estático
Abarca modelo de dominio (MD) y modelo de clases no conceptuales
Modelo de dominio
- También llamado modelo de clases conceptuales
- Es una vista general de los conceptos de más alto nivel del negocio como está en un momento dado
- Tiene como propósito el análisis y es el punto de partida para el modelo de clases
Clase conceptual
- Es la clasificación o reconocimiento de un patrón sobre un concepto o idea (física o abstracta) como una "persona" o un "producto", o una "venta"
- Muchas veces se necesita más de una clase para representar un concepto
- Intensión: Es la descripción semántica de lo que la clase representa
- La intensión de una clase "venta" puede ser la siguiente:
- "Representa un hecho de una transacción de una compra. Sucede un día y una hora"
- La intensión de una clase "venta" puede ser la siguiente:
- Extensión: Es un objeto, una instancia de la clase
- Matemática, Geografía con extensiones, objetos e instancias de la clase Materia
- Imagen: Un ejemplo visual de la clase
- Atributos: Es donde se representa la información que gestiona el sistema que analizamos
-
Cuando un atributo tiene -a su vez- atributos propios que son relevantes al dominio, podemos ascenderlo a clase conceptual y conectarlo con una asociación
-
Ejemplo:
-
Multiplicidad (Cuántos valores puede tener [1..n] o si es opcional [0..1])
- Legajo es obligatorio, Mail es opcional, y Teléfono puede haber varios:
- Legajo es obligatorio, Mail es opcional, y Teléfono puede haber varios:
-
Asociaciones
- Son las relaciones entre las clases conceptuales, conectadas con líneas (sin flechas) y un texto que indica su dirección y tipo de relación (nombre de la asociación)
- Este tipo de relación puede ser cualquier cosa, y dos clases pueden ser asociadas varias veces:
- Multiplicidad: Es bidireccional y debe pensarse como tal:
- Si tomo una (solo una) instancia de la Clase A, ¿cuántas instancias de la Clase B puedo llegar a encontrar vinculadas por la asociación S?
- Si tomo una (solo una) instancia de la Clase B, ¿cuántas instancias de la Clase A puedo llegar a encontrar vinculadas por la asociación S?
Tipos de asociaciones
- Binarias simples
- Recursivas:
- Una misma clase se asocia a sí misma mediante distintos roles
- Herencia/generalización:
- "X es una Y"
- Composición: (Rombo oscuro)
- En la composición, los componentes no tienen sentido sin el todo
- "Los dedos de una mano no necesitan existir sin una mano"
- Agregación: (Rombo vacío)
- Los componentes forman parte de un todo opcional
- "Un circuito está formado de varias ciudades, pero las ciudades pueden existir sin el circuito"
- Clase asociativa
Clase asociativa
- Al igual que un atributo, una asociación también puede ser promovida a clase si esta tiene metadatos relevantes
- Se une a la línea principal de asociación mediante línea punteada
- La multiplicidad sigue siendo entre clases, no para con la clase asociativa