Indice
Notas del autor
Este apunte asume que el lector conoce la idea o concepto de tipos de objeto asociativos y ha
tenido algun tipo de experiencia básica en el uso de tipos de objetos asociativos o clases asociativas.
tenido algun tipo de experiencia básica en el uso de tipos de objetos asociativos o clases asociativas.
Tipos de objetos asociativos. Clases asociativas.
Introducción
Dentro del universo del modelo del dominio, existen un gran número de asociaciones distintas de las
asociaciones binarias o asociaciones "normales". Una de ellas, es la clase asociativas o tipo de
objeto asociativo.
asociaciones binarias o asociaciones "normales". Una de ellas, es la clase asociativas o tipo de
objeto asociativo.
Las clases asociativas ( o tipos de objetos asociativos) son clases y asociaciones a la vez. Suele ser
muy difícil darse cuenta de su presencia en las primeras iteraciones del desarrollo de un modelo
conceptual; pero a no desesperar, la experiencia ayuda a detectarlas más rápido.
muy difícil darse cuenta de su presencia en las primeras iteraciones del desarrollo de un modelo
conceptual; pero a no desesperar, la experiencia ayuda a detectarlas más rápido.
La intención primaria para distinguir una clase asociativa es el hecho de la información que brinda al
lector.
lector.
A continuación, presentaré un ejemplo de tipo de objeto asociativo y su “equivalente” con
asociaciones binarias (o binarizadas).
asociaciones binarias (o binarizadas).
Caso 1 de ejemplo
Un cliente realiza la solicitud de un servicio que ofrece la organización. Esta solicitud se conserva
para posteriores requerimientos de información. Veamos los diferentes modelos
para posteriores requerimientos de información. Veamos los diferentes modelos
Ejemplo 1.a Asociaciones y tipos de objeto asociativo
Ejemplo 1.b. Asociaciones binarizadas
Observe que:
la lectura con la clase asociativa es más robusta, ya que, si hubiera más asociaciones,
el lector no entendería que las asociaciones del ejemplo 1.b se leen en conjunto la lectura con la clase asociativa es más robusta, ya que, si hubiera más asociaciones,
con las clases.cuando se establece la asociación, se crea un objeto de la clase asociativa y además,
cuando se destruye un objeto, se pierde la asociación.
la existencia de los objetos de la clase asociativa depende de la existencia previa de los objetos de
la existencia de los objetos de la clase asociativa depende de la existencia previa de los objetos de
las clases con los que se asocia, Estos objetos deben existir en todas las clases que participan de la
asociación del tipo de objeto asociativa.
De todos modos, las clases asociativas son fácilmente descubiertas cuando el analista tiene cierta
experiencia, por lo que también es sano, que Ud. no se torture y deje que la clase asociativa clame
por aparecer en el modelo. Nota: suelen aparecer más de un clase asociativa en un modelo real.
experiencia, por lo que también es sano, que Ud. no se torture y deje que la clase asociativa clame
por aparecer en el modelo. Nota: suelen aparecer más de un clase asociativa en un modelo real.
Aquí van algunas ideas para descubrirlas.
Descubriendo clases asociativas
Desde atributos
Es posible que al principio no lo veas, excepto que sea casual; pero cuando comenzás a definir
atributos comienzan a visualizarse las clases asociativas. En general, primero se detecta la
asociación y luego, con los atributos se vislumbra la clase.
atributos comienzan a visualizarse las clases asociativas. En general, primero se detecta la
asociación y luego, con los atributos se vislumbra la clase.
Ejemplos
Aquí se presentan algunos casos, pero ojo no todos derivan en clases asociativas.
Ejemplo 1. Compra Repuestos
Estamos trabajando en el modelo del dominio de un Casa de repuestos.
Un cliente compra repuestos. Un repuesto es comprado por ninguno, 1 o más clientes. El modelo del
dominio en cuestión resulta tan sencillo como se describe a continuación:
dominio en cuestión resulta tan sencillo como se describe a continuación:
Ampliemos un poco el problema, resulta que existe un requerimiento que dice que el sistema debe
informar las compras realizadas por un cliente, cuando el director de compras lo solicite. Pensemos
el DD:
informar las compras realizadas por un cliente, cuando el director de compras lo solicite. Pensemos
el DD:
e. Sol_Cliente = CUIL
s. Compras_Cliente = datos_cliente(e) + 1{ fecha_compra + 1 {nombre-repuesto + cantidad }n}n
¿Si el modelo del dominio representa la memoria, dónde ubicaría los datos de la estructura
mencionada, la fecha-compra, nombre-repuesto y cantidad?
mencionada, la fecha-compra, nombre-repuesto y cantidad?
Recuerde que las asociaciones no pueden recordar atributo...piense.
El dato nombre-repuesto es una atributo del repuesto, pero: ¿y la fecha de compra?¿y la cantidad?
¿Son características del repuesto, o del cliente, o no corresponde a ninguno de los dos?
¿Son características del repuesto, o del cliente, o no corresponde a ninguno de los dos?
La conclusión es que no tiene un mejor lugar, pero son datos de la compra, pero la compra es una
asociación. Por lo que ahí tenemos la punta de la presencia de una clase-asociación, o bien, una
clase asociativa.
asociación. Por lo que ahí tenemos la punta de la presencia de una clase-asociación, o bien, una
clase asociativa.
Ejemplo 2. Comentarios en noticias
Nuestro nuevo contexto es un diario digital. Una empresa gráfica estaba en el negocio de los
impresos, pero ahora es totalmente digital. Este hecho permite cumplir con una meta de la
organización, en donde el lector puede participar interactuando con comentarios en las noticias.
impresos, pero ahora es totalmente digital. Este hecho permite cumplir con una meta de la
organización, en donde el lector puede participar interactuando con comentarios en las noticias.
Digamos que un lector lee noticias. Un lector comenta noticias.
¿Dónde ubicaría el comentario?
Voy a pensar en dos situaciones:
- No se quien comenta pero si sobre cuál noticia y que se comenta.
- Se quién hace el comentario, cuál es el comentario y sobre cuál noticia.
Observe que la solución “a” no necesita una nueva clase, pero en cambio la segunda si.
Solución a
Solución b
Ejemplo 3. Inscripción
Ahora estamos en una institución educativa. Resulta que estamos pensando un sistema que permita
que el alumno se inscriba en las asignaturas. Simplemente eso, no la compliquemos más.
que el alumno se inscriba en las asignaturas. Simplemente eso, no la compliquemos más.
Ahora supongamos, que necesitamos saber cuando se produjo la inscripción para saber cuántos
anotados hay.
anotados hay.
Obvio que necesito la fecha de inscripción. Observe que este atributo debe ser alojado en la
asociación, pero no es posible por ser asociación, entonces lo transformamos en clase asociativa.
asociación, pero no es posible por ser asociación, entonces lo transformamos en clase asociativa.
Hasta aquí descubrimos clases asociativas a partir de la presencia de atributos.
A partir de ciclos de vida de asociaciones
Uno puede imaginar que se crea una asociación entre 2 o más objetos, entonces nace una
asociación. Si la asociación también es clase, entonces cuando nace la asociación nace al menos un
objeto que se asocia con los objetos de las otras clases. Así mismo, cuando elimino un objeto
también estoy eliminando la asociación que los une con los objetos de las otras clases.
asociación. Si la asociación también es clase, entonces cuando nace la asociación nace al menos un
objeto que se asocia con los objetos de las otras clases. Así mismo, cuando elimino un objeto
también estoy eliminando la asociación que los une con los objetos de las otras clases.
Los objetos del tipo asociativo están asociados al menos a 2 objetos distintos. No existe un objeto
del tipo asociativo en donde participa un solo objeto.
del tipo asociativo en donde participa un solo objeto.
Un ciclo de vida de un objeto refiere al momento en que se crea un objeto (nacimiento), su
modificación en el tiempo (evolución o crecimiento) y su destrucción o eliminación (muerte).
modificación en el tiempo (evolución o crecimiento) y su destrucción o eliminación (muerte).
Un alumno hace inscripción de asignatura.
La asignatura tiene un ciclo de vida. Similar el alumno, pero qué pasa con la inscripción.
La inscripción surgió cuando quise decir algo entre alumno y asignatura, y solo sobrevivirá mientras
me interese lo que puedo decir.
me interese lo que puedo decir.
Si no me interesa más lo que tengo que decir entre asignatura y alumno se tendrá que destruir la
inscripción. Luego de destruir la inscripción el alumno sigue existiendo y la asignatura también, pero
no lo que puedo decir entre ambas.
inscripción. Luego de destruir la inscripción el alumno sigue existiendo y la asignatura también, pero
no lo que puedo decir entre ambas.
Ahora me pregunto: puedo tener una inscripción habiendo destruido su asignatura, o a su alumno.
Respuesta: NOOOOOOOOOOOOOOO
Conclusión: Inscripción es asociativo de asignatura y alumno...GRRRRR.
Síntomas para pensar...
Cuando se habla de síntomas (señal o signo de que una cosa está ocurriendo o va a ocurrir), no
implica necesariamente enfermedad. Por lo que ahora te propongo una situación especial donde se
presentan síntomas de presencia de clases asociativas. Esto es, cuando existen asociaciones cuya
multiplicidad en ambos extremos de la asociación es *, entonces alerta, puede haber presencia de
una clase asociativa.
implica necesariamente enfermedad. Por lo que ahora te propongo una situación especial donde se
presentan síntomas de presencia de clases asociativas. Esto es, cuando existen asociaciones cuya
multiplicidad en ambos extremos de la asociación es *, entonces alerta, puede haber presencia de
una clase asociativa.
Errores comunes
- Una clase asociativa es parte (o asociativa) de dos asociaciones distintas.
- Una clase es asociativa de una única clase
- .Hacer asociativa una clase que dio origen a otra que es asociativa y esta última clase
Historial de versiones
Fecha
|
Versión
|
Autor
|
Descripción
|
Julio-2019
|
1.03
|
ALRO
|
Completado de introducción. Agregado de caso 1. Agregado de errores
comunes |
Marzo-2019
|
1.02
|
ALRO
|
Mejora de descripción de ejemplos. Armado de ejercicios relacionados para
ampliación de práctica. |
Junio-2018
|
1.01
|
ALRO
|
Revisión de texto, adaptación de encabezados y pie de página. Agregado de
historial de versiones |
Mayo-2016
|
1.00
|
ALRO
|
Primera versión
|