【问题标题】:How can I represent relationships between instances of the same class in a concurrent system如何表示并发系统中同一类的实例之间的关系
【发布时间】:2023-03-25 19:45:01
【问题描述】:

我创建了一个并发系统,它有一个关键部分,涉及对 TXT 文件的读写访问。

首先,Auctioneer 类创建一个 TXT 文件并将数字 50 写入其中。然后,Auctioneer 允许下一个节点(投标人类的三个实例之一)打开文件并更改当前投标。投标人类然后允许下一个节点,另一个投标人投标,然后另一个投标人,然后那个投标人允许拍卖人查看文件。 我允许节点轮流使用服务器套接字。每个节点使用ServerSocket.accept() 方法等待访问,并通过使用下一个nde 正在侦听的套接字创建Socket object 来允许下一个节点进入其临界区。

这些节点中的每一个都在单独的 java 环境中独立运行,并且只与服务器套接字通信。

环的每个节点都依赖于前一个节点,因为为了该节点访问资源,前一个节点需要将令牌传递给当前节点。我不确定如何以符合 UML 的方式表示这种关系。

据我了解,类图不应包含同一类的多个实例,例如下面的示例,其中包含 3 个投标人。

这是表示我所描述的关系的正确方式吗?如果不是,哪种方式更好/符合 UML?

【问题讨论】:

  • 每个投标人都与一个(或多个?)其他投标人有关联,这是类级别的自反循环。
  • 如果您使用对象图 ISO,您也可以使用类图。

标签: sockets uml class-diagram


【解决方案1】:

类图,顾名思义,代表对象的类而不是单个对象,即这些类的实例。此外,类图是结构化的:它不说明对象如何交互或相互等待,而是说明类之间的关系。

因此,在巡回案例中,类图将代表一个投标者类。为了用实例和它们之间的关系来表示一个具体的例子,你可以考虑一个对象图。在那里,您可以很好地表示同一类的不同实例。

但是,如果您对类之间的交互(例如它们交换的令牌)感兴趣,则最好考虑使用交互图,例如序列图。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-03
    • 2016-09-12
    • 1970-01-01
    • 1970-01-01
    • 2018-08-07
    • 1970-01-01
    相关资源
    最近更新 更多