UML类图:属性还是关联?

时间:2014-04-24 06:27:09

标签: class uml class-diagram

现在我有两个班,名为病人和医生:

Patient() {
     public:
        //functions here
    private:
    Doctor doctor;
    Date dateAdmitted;
    Date dateDischarged;
}

Doctor() {
    public:
    //functions here
    private:
    //data members here
}

在我的UML类患者类图中,我是否需要将医生和日期作为属性?或者我只是通过将它们作为关联来表示它们?

如果属性应该是:

患者

医生:医生

dateAdmitted:日期

dateDischarged:日期

2 个答案:

答案 0 :(得分:10)

根据UML语法规则,两个解决方案都是有效的 - 类属性和关联类都被称为类属性,可以显示为属性(在类内)或作为单独的类,通过链接协会。对于这两个类功能,您可以定义名称,多样性,范围等。有关详细的技术信息,请参阅UML规范。

但是,通常的做法如下:

  • 如果属性是基本数据类型(int,boolean,date等) - >节目 它在一个类中,作为属性
  • 如果财产是完全成熟的 class - >将其显示为单独的类实体并使用关联 展示他们的关系

这种做法很有意义,因为" int"," boolean"或者"日期"没有自己的自定义属性,它足以在类中显示它们(因为它们会丢失有关它们的信息)。另一方面,类具有各自的特征(属性,方法和自己的关联,概括等),因此" deserve"图上有更多空间。

结束对您问题的直接回答:将Doctor显示为图表上的单独类,通过关联与患者联系(注意显示为associationEnd名称的属性名称)。将两个日期保留在Patient类中:

enter image description here

以下图表是等效且有效的,但您可能同意第一个图表在视觉上更清晰(想象一些atts,方法和关系或Doctor类),因此建议:

enter image description here

更新(评论后)

enter image description here

注意:组合用于日期,以反映整体部分类型的强关系以及这些日期无法从其上下文中取消链接的事实。 另一个协会(患者 - 医生)是一个共同的关联,并且可以随时打破相应的链接(例如,更换患者的医生)。

答案 1 :(得分:0)

在UML中,您可以将类之间的关系建模为关联。属性应该适用于数据类型。

他们最有可能最终成为例如Java在这个阶段还没有发挥作用。