Как я могу представлять отношения между экземплярами одного и того же класса в параллельной системе

#sockets #uml #class-diagram

#сокеты #uml #диаграмма классов

Вопрос:

Я создал параллельную систему, в которой есть критический раздел, который включает доступ для чтения и записи к текстовому файлу.

Сначала класс Auctioneer создает текстовый файл и записывает в него число 50. Затем аукционист разрешает следующему узлу, одному из трех экземпляров класса Bidder, открыть файл и изменить текущую ставку. Затем класс участника торгов разрешает следующему узлу, другому участнику торгов делать ставки, затем другому участнику торгов, а затем этот участник торгов позволяет аукционисту просмотреть файл. Я разрешил узлам по очереди использовать сокеты сервера. Каждый узел ожидает доступа с использованием метода ServerSocket.accept() и позволяет следующему узлу войти в его критическую секцию, создавая объект сокета с сокетом, который прослушивает следующий nde.

Каждый из этих узлов работает независимо в отдельных средах Java и взаимодействует только с серверными сокетами.

Каждый узел кольца полагается на предыдущий узел, потому что для того, чтобы этот узел мог получить доступ к ресурсу, предыдущий узел должен передать токен текущему узлу. Я не уверен, как я буду представлять такие отношения в соответствии с UML.

Насколько я понимаю, диаграммы классов не должны включать несколько экземпляров одного и того же класса, таких как приведенный ниже пример с 3 участниками торгов.

одна из возможных диаграмм классов

Это правильный способ представления отношений, которые я описал? Если нет, какой способ будет лучше соответствовать UML?

Комментарии:

1. Каждый участник торгов связан с одним (или несколькими?) Другими участниками торгов, Что является рефлексивным циклом на уровне класса.

2. Если бы вы использовали объектную диаграмму ISO для диаграммы классов, вы бы тоже это сделали.

Ответ №1:

Диаграммы классов, как следует из названия, представляют классы объектов, а не отдельные объекты, то есть экземпляры этих классов. Более того, диаграмма классов является структурной: она не сообщает, как объекты взаимодействуют или ожидают друг друга, но как связаны классы.

Таким образом, в случае тура диаграмма классов будет представлять один класс участника торгов. Чтобы представить конкретный пример с экземплярами и то, как они связаны, вы могли бы рассмотреть диаграмму объектов. Там вы могли бы очень хорошо представлять разные экземпляры одного и того же класса.

Однако, если вас интересуют взаимодействия между классами (например, токены, которыми они обмениваются), вам лучше рассмотреть диаграмму взаимодействия, такую как диаграмма последовательности.