#sockets #uml #class-diagram
#сокеты #uml #диаграмма классов
Вопрос:
Я создал параллельную систему, в которой есть критический раздел, который включает доступ для чтения и записи к текстовому файлу.
Сначала класс Auctioneer создает текстовый файл и записывает в него число 50. Затем аукционист разрешает следующему узлу, одному из трех экземпляров класса Bidder, открыть файл и изменить текущую ставку. Затем класс участника торгов разрешает следующему узлу, другому участнику торгов делать ставки, затем другому участнику торгов, а затем этот участник торгов позволяет аукционисту просмотреть файл. Я разрешил узлам по очереди использовать сокеты сервера. Каждый узел ожидает доступа с использованием метода ServerSocket.accept() и позволяет следующему узлу войти в его критическую секцию, создавая объект сокета с сокетом, который прослушивает следующий nde.
Каждый из этих узлов работает независимо в отдельных средах Java и взаимодействует только с серверными сокетами.
Каждый узел кольца полагается на предыдущий узел, потому что для того, чтобы этот узел мог получить доступ к ресурсу, предыдущий узел должен передать токен текущему узлу. Я не уверен, как я буду представлять такие отношения в соответствии с UML.
Насколько я понимаю, диаграммы классов не должны включать несколько экземпляров одного и того же класса, таких как приведенный ниже пример с 3 участниками торгов.
Это правильный способ представления отношений, которые я описал? Если нет, какой способ будет лучше соответствовать UML?
Комментарии:
1. Каждый участник торгов связан с одним (или несколькими?) Другими участниками торгов, Что является рефлексивным циклом на уровне класса.
2. Если бы вы использовали объектную диаграмму ISO для диаграммы классов, вы бы тоже это сделали.
Ответ №1:
Диаграммы классов, как следует из названия, представляют классы объектов, а не отдельные объекты, то есть экземпляры этих классов. Более того, диаграмма классов является структурной: она не сообщает, как объекты взаимодействуют или ожидают друг друга, но как связаны классы.
Таким образом, в случае тура диаграмма классов будет представлять один класс участника торгов. Чтобы представить конкретный пример с экземплярами и то, как они связаны, вы могли бы рассмотреть диаграмму объектов. Там вы могли бы очень хорошо представлять разные экземпляры одного и того же класса.
Однако, если вас интересуют взаимодействия между классами (например, токены, которыми они обмениваются), вам лучше рассмотреть диаграмму взаимодействия, такую как диаграмма последовательности.