simbologia objetos multiplicidad diagrama clases clase asociacion uml associations

objetos - Multiplicidad de asociación UML



diagrama uml java (3)

Tengo una pregunta acerca de las asociaciones, para ser exactos, me pregunto acerca de las multiplicidades, las comprendo, pero por ejemplo, si tuviera:

--------- --------- | |1 * | | |CLASS |----------| STUDENT | | | | | --------- ---------

dosis que significa que en CUALQUIER punto durante la existencia del sistema debe haber al menos 1 estudiante asignado a la clase, o esas multiplicidades deben ser verdaderas, si el sistema está funcionando normalmente.

Estoy haciendo esta pregunta, porque me preguntaba sobre el momento de creación de un objeto. Primero creamos una clase vacía, luego la llenamos con estudiantes. Durante algún tiempo, la clase está vacía, pero solo durante la creación y la población, entonces tiene al menos un alumno. Porque si cambiaría de 1 a 0..1, sugeriría que puede haber una clase vacía, no es falso (este momento de poblar) pero luego no quiero permitir clases sin estudiantes.

EDITAR: cambió 0 .. * a 0..1, debería ser como está ahora, perdón por la confusión.


dosis que significa que en CUALQUIER punto durante la existencia del sistema debe haber al menos 1 estudiante asignado a la clase

Significa que hay exactamente una clase asignada a varios estudiantes.

Cada extremo de la asociación tiene un límite de multiplicidad superior y un límite de multiplicidad inferior, pero la mayoría de los editores de UML solo mostrarán un valor si los límites superior e inferior son iguales. Si desea permitir (cero o uno) a muchos, puede escribirlo así:

0..1 * -----------

Lo que realmente querrás aquí es una relación de muchos a muchos ... los estudiantes pueden estar en muchas clases y las clases pueden contener muchos estudiantes.


dosis que significa que en CUALQUIER punto durante la existencia del sistema debe haber al menos 1 estudiante asignado a la clase, o esas multiplicidades deben ser verdaderas, si el sistema está funcionando normalmente.

Buena pregunta. Significa que, cuando el sistema está en un estado estable, cada estudiante DEBE estar asociado con exactamente una clase. Eso, a su vez, plantea otra pregunta: ¿qué constituye un "estado estable"? UML en general no formaliza esto. Intuitivamente, significa cuando no hay actividad en progreso que esté cambiando activamente de estado. Algunos perfiles de UML ponen más rigor alrededor de esto. Por ejemplo, el UML ejecutable dice que el sistema puede violar las restricciones de cardinalidad mientras se está ejecutando la acción de un estado. Sin embargo, cuando la acción de estado se completa, debe dejar el sistema en un estado válido, es decir, donde se cumplen todas las restricciones de cardinalidad.

Las bases de datos proporcionan una buena analogía aquí. Las restricciones de base de datos (como las claves no nulas y externas) deben ser verdaderas cuando el sistema es estable. Durante la ejecución de una transacción, las restricciones pueden ser violadas temporalmente. Sin embargo, cuando la transacción se completa, debe dejar el db en un estado válido.

Así que para su ejemplo como se muestra:

  • Es válido que exista una clase sin alumnos cuando el sistema está estable ( * dice 0 o más, por lo que la clase no necesita tener alumnos)
  • No es válido que exista un estudiante sin ser asignado a una clase cuando el sistema es estable (''1'' significa exactamente uno). Por lo tanto, cualquiera que sea la ''transacción'' que crea el Estudiante, también debe asociar al Estudiante con una Clase.

hth


No, el * significa que no hay al menos un estudiante en cada clase en cualquier momento. Pero en la otra dirección, mirando de Estudiante a Clase, la multiplicidad significa que cualquier estudiante está exactamente en una Clase.

Por motivos de modelado, es posible que desee cambiar la multiplicidad 1 también a *, pero esto depende de su contexto.