UML Y BASES DE DATOS
Resumido por: Francisco R. Young.
DIAGRAMA DE CLASES.
DIAGRAMA DE CLASES.
En ingeniería de
software, un diagrama de clases en Lenguaje Unificado de
Modelado (UML) es un tipo de diagrama de estructura estática que describe
la estructura de un sistema mostrando las clases del sistema, sus atributos,
operaciones (o métodos), y las relaciones entre los objetos.
Elementos
UML proporciona mecanismos
para representar los elementos de la clase, como atributos y métodos, así como
información adicional sobre ellos.
Visibilidad
Para especificar la
visibilidad de un elemento de la clase (es decir, cualquier atributo o método),
se coloca uno de los siguientes signos delante de ese elemento:
+
|
Público
|
-
|
Privado
|
#
|
Protegido
|
/
|
Derivado (se puede
combinar con otro)
|
~
|
Paquete
|
Ámbitos
El Lenguaje de Modelado
Unificado (UML) especifica dos tipos de ámbitos para los elementos: instancias y clasificadores y
estos últimos se representan con nombres subrayados.
- Los elementos clasificadores se
denotan comúnmente como “estáticos” en muchos lenguajes de programación.
Su ámbito es la propia clase.
- Los valores de los atributos son los
mismos en todas las instancias
- La invocación de métodos no afecta al
estado de las instancias
- Los elementos instancias tienen
como ámbito una instancia específica.
Los valores de los atributos
pueden variar entre instancias
La invocación de métodos
puede afectar al estado de las instancias(es decir, cambiar el valor de sus
atributos)
Para indicar que un elemento
posee un ámbito de clasificador, hay que subrayar su nombre. De lo contrario,
se asume por defecto que tendrá ámbito de instancia.
Relaciones
Una relación es un término
general que abarca los tipos específicos de conexiones lógicas que se pueden
encontrar en los diagramas de clases y objetos. UML presenta las siguientes
relaciones:
Relaciones a nivel de instancia.
Enlace
Un enlace es la relación más
básica entre objetos.
Asociación
Ejemplo de diagrama de
clases con una asociación de dos clases.
Una
asociación representa a una familia de enlaces. Una asociación binaria (entre
dos clases) normalmente se representa con una línea contínua. Una misma
asociación puede relacionar cualquier número de clases. Una asociación que
relacione tres clases se llama asociación ternaria
A
una asociación se le puede asignar un nombre, y en sus extremos se puede hacer
indicaciones, como el rol que desempeña la asociación, los nombres de las clases
relacionadas, su card5na35dad, su visibilidad, y otras propiedades.
Hay cuatro tipos diferentes de asociación: bidireccional, unidireccional, agregación (en la que se incluye la composición) y reflexiva. Las asociaciones unidireccional y bidireccional son las más comunes
Hay cuatro tipos diferentes de asociación: bidireccional, unidireccional, agregación (en la que se incluye la composición) y reflexiva. Las asociaciones unidireccional y bidireccional son las más comunes
Por ejemplo, una clase vuelo
se asocia con una clase avión de forma bidireccional. La asociación representa
la relación estática que comparten los objetos de ambas clases.
Agregación.
La agregación es
una variante de la relación de asociación “tiene un”: la agregación es más
específica que la asociación. Se trata de una asociación que representa una
relación de tipo parte-todo o parte-de.
Como se puede ver en la
imagen del ejemplo, un Profesor 'tiene una clase a la que enseña.
Al ser un tipo de
asociación, una agregación puede tener un nombre y las mismas indicaciones en
los extremos de la línea. Sin embargo, una agregación no puede incluir más de
dos clases; debe ser una asociación binaria.
Una agregación se
puede dar cuando una clase es una colección o un contenedor de otras clases,
pero a su vez, el tiempo de vida de las clases contenidas no tienen una dependencia
fuerte del tiempo de vida de la clase contenedora (de el todo).
Es decir, el contenido de la clase contenedora no se destruye automáticamente
cuando desaparece dicha clase.
En UML, se representa
gráficamente con un rombo hueco junto a la clase contenedora
con una línea que lo conecta a la clase contenida. Todo este conjunto es,
semánticamente, un objeto extendido que es tratado como una única unidad en
muchas operaciones, aunque físicamente está hecho de varios objetos más pequeños.
Diagramas
- El diagrama de clases puede tener como
ejemplo: una clase que sería un objeto o persona misma en la cual se
especifica cada acción y especificación.
- Propiedades de objetos que tienen
propiedades y/u operaciones que contienen un contexto y un dominio, los primeros
dos ejemplos son clases de datos y el tercero clase de lógica de negocio,
dependiendo de quién diseñe el sistema se pueden unir los datos con las
operaciones.
- El diagrama de clases incluye mucha más
información como la relación entre un objeto y otro, la herencia de
propiedades de otro objeto, conjuntos de operaciones/propiedades que son
implementadas para una interfaz gráfica.
- Presenta las clases del sistema con sus
relaciones estructurales y de herencia.
- El diagrama de clases es la base para
elaborar una arquitectura MVC o MVP.
EL
DIAGRAMA DE MODELADO DE CLASES Y SU RELACIÓN CON BASES DE DATOS.
Dado que las aplicaciones de
software interactúan con cantidades de datos cada vez mayores, las estructuras
y el diseño de bases de datos son una parte fundamental de los proyectos de
desarrollo de software. Existen aplicaciones con las que se puede importar
tablas de BD relacionales para crear diagramas de base de datos UML, modificar
diagramas de tablas de datos ya existentes y generar scripts de cambios SQL
para sincronizar la base de datos. También se puede diseñar tablas y relaciones
de BD nuevas desde cero y generar scripts CREATE SQL.
Lenguaje de Modelado
Unificado: UML y las bases de datos
Este lenguaje de modelado se
caracteriza por:
- Fácil de usar, se apoya en muchos diagramas
(gráficos).
- Es fácil traducirlo al modelo de DBMS.
En la siguiente imagen se observa que el lenguaje UML, puede ser
traducido en relaciones (o tablas) de una base de datos.
- Son cinco los conceptos claves:
1. Clases
2. Asociaciones
3. Clases
de asociación
4. Subclases
5. Composición
y Agregación
- Los diseños pueden ser traducidos
automáticamente a relaciones o tablas
Clases
Cada clase se convierte en
una relación (o tabla) con su clave primaria
Según las clases descritas
anteriormente tenemos las siguientes relaciones:
Estudiante(sID−−−−,sNombre,GPA)
Universidad(cNombre−−−−−−−−,estado,inscripción)
Asociaciones
Relación con la clave de
cada lado.
Se obtendrán las mismas
relaciones del ejemplo anterior, pero se agregará una nueva relación con las
claves primarias de ambas clases.
Aplicado(sID,cNombre)
Claves para las relaciones
de asociación
Depende
de la cardinalidad
Cardinalidad 1-1
·
Cada objeto de A está asociado con un objeto
de B, y cada objeto de B está asociado con un objeto de A.
·
Cualquiera de las dos tablas relacionadas
implementará una columna con el ID de la otra tabla.
·
Esta columna será la clave foránea para
relacionarlas.
Cardinalidad 1-n
·
Cada objeto A está asociado con más objetos
B, pero cada objeto B está asociado con un objeto A.
·
Implementando la clave foránea ID en
la tabla “muchos” a la tabla “uno”.
. Por ejemplo:
Ahora al tener una
cardinalidad 1-n, se debe agregar la clave primaria Atr1_clase1 de
la Clase1 a la Clase2 (que es la que posee la
multiplicidad “muchos”), quedando como clave foránea de la Clase2.
Finalmente, las relaciones
quedan de la siguiente manera:
Clase1(Atr1_clase1−−−−−−−−−−,Atr2_clase1)
Clase2(Atr1_clase2−−−−−−−−−−,Atr2_clase2,Atr1_clase1)
Si la relación hubiese sido
de 0..1-n, el atributo Atr1_clase1sería NULL.
Ahora se mostrará otro
ejemplo:
Las relaciones para este
ejemplo serían:
Estudiante(sID−−−−,sNombre,GPA,cNombre)
Universidad(cNombre−−−−−−−−,estado,inscripción)
Al poseer este tipo de
cardinalidad (1-n), se agrega a la claseEstudiante (muchos) la
clave primaria cNombre de la claseUniversidad.
Cardinalidad n-m
·
Cada objeto A está asociado con más objetos
B, y a su vez, cada objeto B está asociado a más objetos A.
·
En el modelo relacional se usa una tabla
auxiliar asociativa para representar la relación.
·
Dicha tabla tendrá al menos dos columnas,
cada una representando la clave foránea a las dos tablas que relaciona.
·
Con lo anterior se transforma la relación n-m
a dos relaciones (1-n, 1-m).
Ejemplo
Supongamos que tenemos 0..2
en el lado derecho, por lo que los estudiantes pueden solicitar hasta un máximo
de 2 universidades. ¿Existe todavía una forma de “plegarse” la relación de
asociación en este caso, o que tenemos una relación independienteAplicado?
- Sí, hay una manera.
- No, si no es 0..1 ó 1..1 aplicado entonces
se requiere.
La alternativa correcta es
(a), puesto que se debería crear la relación Estudiante(sID, sNombre, GPA,
cNombre1, cNombre2), suponiendo que se permiten valores nulos.
Clase de asociación
Las clases de asociación
permiten añadir atributos, operaciones y otras características a las
asociaciones.
Las relaciones de estas
clases quedan de la siguiente manera:
Estudiante(sID−−−−,sNombre,GPA)
Universidad(cNombre−−−−−−−−,estado,inscripción)
Aplicado(sID,cNombre,Fecha,Decisión)
Otro ejemplo que detalla más
claramente las clases de asociación
El diagrama permite apreciar
que una Persona puede trabajar para una sola Compañía.
Necesitamos conservar la información sobre el período de tiempo que trabaja
cada empleado para cada Compañía.
Para lograrlo, añadimos un atributo Período a
la asociación Empleo.
Subclases
Si la clase “A” hereda de la
clase “B”, entonces “B” es la superclase de “A”. “A” es
subclase de
“B”. Los objetos de una subclase pueden ser usados en las
circunstancias donde son usados los objetos de la superclase correspondiente.
Esto se debe al hecho que los objetos de la subclase comparten
el mismo comportamiento que los objetos de la superclase.
- Las relaciones de las subclases
contienen una clave de la superclase más atributos especializados.
S(K−−,A)
S1(K−−,B)
S2(K−−,C)
- Las relaciones de las subclases
contienen todos los atributos.
S(K−−,A)
S1(K−−,A,B)
S2(K−−,A,C)
- Una relación que contiene todos los
atributos de la superclase y la subclase.
S(K−−,A,B,C)
Ejemplo de subclases
Las relaciones de este ejemplo
son:
Estudiante(sID−−−−,sNombre)
Est_extranjeros(sID−−−−,País)
Est_nacionales(sID−−−−,Estado,SS#)
AP_Estudiante(sID−−−−)
AP_Curso(Curso#−−−−−−−,Titulo)
Tomó(sID,Curso#,Año,Nota)
Composición y Agregación
Composición
La composición es un tipo de
relación estática, en donde el tiempo de vida del objeto incluido está
condicionado por el tiempo de vida del que lo incluye (el objeto base se
construye a partir del objeto incluido, es decir, es parte/todo).
Ejemplo
Las relaciones se definen de
la siguiente manera:
Universidad(cNombre−−−−−−−−,Estado)
Departamento(dNombre−−−−−−−−,Edificio,cNombre)
Agregación
La agregación es un tipo de
relación dinámica, en donde el tiempo de vida del objeto
incluido es independiente
del que lo incluye (el objeto base utiliza al incluido para su funcionamiento).
Ejemplo
Las relaciones son de la
misma manera que el ejemplo anterior pero al poseer una diferente cardinalidad el valor del atributo cNombre de la clase Departamento,
puede tómar el valor NULL.
Ejemplo
de diagrama de clases.
- · El señor Roberto Young tiene una pequeña
tienda desde la cual hace entregas de pedidos a domicilio y mantiene un
registro de clientes frecuentes.
- · Los pedidos pueden ser incluso vía web, y
pueden ser pagados a través de tarjetas tipo Vme VISA, de débito utilizando el mismo
sistema, cupones y obviamente también en efectivo.
- · Por tratarse de una tienda de productos
importados de China los proveedores son especiales ya que en su mayoría son
importadores y exportadores de nacionalidad china por lo que también es
recomendable llevar un registro de los mismos y de los productos que ofrecen.
- · El señor Young pretende desarrollar una base
de datos a partir de un diagrama de clases UML, en donde estén incluidos los
datos de los clientes proveedores, pedidos y productos.
Ejemplo
de diagrama de clases.
- · El señor Roberto Young tiene una pequeña tienda desde la cual hace entregas de pedidos a domicilio y mantiene un registro de clientes frecuentes.
- · Los pedidos pueden ser incluso vía web, y pueden ser pagados a través de tarjetas tipo Vme VISA, de débito utilizando el mismo sistema, cupones y obviamente también en efectivo.
- · Por tratarse de una tienda de productos importados de China los proveedores son especiales ya que en su mayoría son importadores y exportadores de nacionalidad china por lo que también es recomendable llevar un registro de los mismos y de los productos que ofrecen.
- · El señor Young pretende desarrollar una base de datos a partir de un diagrama de clases UML, en donde estén incluidos los datos de los clientes proveedores, pedidos y productos.
El propósito de esta entrada es el de introducir los aspectos básicos de la transición de un diagrama de clases uml a una base de datos
ResponderEliminarInformación clara y completa
ResponderEliminar