【问题标题】:How to show the following classes and their associations in UML?如何在 UML 中显示以下类及其关联?
【发布时间】:2011-06-05 12:39:07
【问题描述】:

假设我有两个类:

public class User {
 private Phone defaultPhone;
 private List<Phone> allPhones; 
}

public class Phone {
}

我应该如何在 UML 类图中对 UserPhone 建模?

特别是:

  • 是否需要在UserPhone之间建立关联链接?
    • 如果是这样,我是否应该创建两个关联链接(一个用于defaultPhone,一个用于allPhones)?
    • 如果我在图表中显示这些关联,我是否也应该在 User 类中显示 defaultPhoneallPhones 属性,还是会显得多余?

【问题讨论】:

  • 为什么defaultPhone 需要额外的类字段,如果它成为allPhones 列表中的第一个对象不是更简单吗?您的列表中有1..* 电话。

标签: java uml


【解决方案1】:

这取决于你的图表的重点是什么。如果用户和电话之间的关系很重要,并且您还想显示有关电话类的一些详细信息,那么是的,您必须显示这些类之间的关联。否则,您可以将 defaultPhone 和 allPhones 显示为 User 类的属性。 如果您正在绘制关联,那么您将不得不关联,每个属性一个。关联的作用和多重性会有所不同。

【讨论】:

    【解决方案2】:

    我目前在上面看到的答案非常具有描述性和充分性。因此,就我而言,我只能补充一点,您可能会考虑(并不意味着在这种特定情况下最好)使用这两个类之间的复合关联,因为 User 是 Phone 对象的容器(至少从实现角度来看)。如果这些是持久对象,并且手机上的用户删除级联,那么我会使用复合。

    .. 对于 UML 类图参考,我建议这篇文章:Introduction to UML 2 Class Diagrams,一旦我发现它非常有用。

    【讨论】:

      【解决方案3】:

      是否有必要创建一个 用户和用户之间的关联链接 电话?

      UML 图的目的是什么?观众是谁?如果需要该级别的详细信息,这是必要的。只有你自己可以决定。

      如果您打算将其提供给开发人员,他将重新执行您为创建图表所做的所有输入,但这次您最终会得到实际工作代码,那么细节是必要的。

      如果您的受众是需要了解您在做什么的商务人士,也许不需要。

      如果是这样,我应该创建两个关联 链接(一个用于 defaultPhone 和一个 适用于所有手机)?

      是的,一个是关联链接,另一个是简单的参考。

      如果我在 图表,我是否也应该显示 defaultPhone 和 allPhones 属性 在用户类中,或者会是 多余的?

      如果您的图表显示了每个属性和每个方法的所有优点,那么您应该同时包含两者。

      但是,如果它不止几个类,我会说您的图表有变得如此详细以至于毫无价值的危险。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-09-29
        • 2021-04-18
        • 2013-01-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多