es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo representar las relaciones entre instancias de la misma clase en un sistema concurrente?

Hice un sistema concurrente que tiene una sección crítica que implica acceso de lectura y escritura a un archivo de texto (TXT).

Primero, una clase Auctioneer crea un archivo TXT y escribe el número 50 en él. Luego, el Auctioneer permite que el siguiente nodo, una de las tres instancias de la clase Bidder, abra el archivo y cambie la oferta actual. La clase Bidder luego permite que el siguiente nodo, otro Bidder, haga una oferta, luego otro Bidder y luego ese Bidder permite al Auctioneer mirar el archivo.
Permití que los nodos se turnaran utilizando sockets del servidor. Cada nodo espera acceso utilizando el método ServerSocket.accept() y permite que el siguiente nodo entre a su sección crítica creando un objeto Socket con el socket en el que el siguiente nodo está escuchando.

Cada uno de estos nodos se ejecuta de forma independiente en entornos Java separados y solo se comunican con sockets del servidor.

Cada nodo del anillo depende del nodo anterior porque para que ese nodo acceda al recurso, el nodo anterior debe pasarle el token. No estoy seguro de cómo representaría ese tipo de relación de manera compatible con UML.

Según mi entendimiento, los diagramas de clases no deberían incluir varias instancias de la misma clase, como el ejemplo a continuación con 3 bidders.

¿Es esta la forma correcta de representar la relación que he descrito? Si no, ¿cuál sería una forma mejor/compatible con UML?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Según los estándares UML, no se recomienda representar múltiples instancias de la misma clase en un diagrama de clases. En cambio, una mejor manera de representar la relación entre los nodos en tu escenario sería utilizar un diagrama de colaboración o un diagrama de secuencia.

    Un diagrama de colaboración representaría los objetos involucrados en la interacción y los mensajes intercambiados entre ellos. En tu escenario, los objetos incluirían al Subastador y a las tres instancias del Postor. Los mensajes intercambiados entre ellos serían la solicitud de acceso a la sección crítica y el token pasado del nodo anterior al nodo actual.

    Un diagrama de secuencia se centraría en la secuencia temporal de los mensajes intercambiados entre los objetos. Mostraría cómo un nodo solicita acceso y recibe el token del nodo anterior en la secuencia.

    En ambos casos, el enfoque estaría en la interacción y comunicación entre los nodos en lugar de la estructura de clases. Sin embargo, aún es recomendable tener un diagrama de clases para mostrar la relación entre las clases involucradas en el sistema.

Comments are closed.