0

我刚从 UML (StarUML 5) 开始,所以请原谅这个非常基本的问题。

假设一个人有多个特征,每个特征都有一个名称和一个值。(这只是为了简单起见。)假设我Characteristic相应地创建了类。

我想生成Person具有类似属性的Java 类ArrayList(Characteristic)

Person我应该向类添加一个属性,比如ArrayList(Characteristic),还是应该只使用 and 之间的聚合关系Person并将Characteristic多重性指定为 0..* ?

在第一种(ArrayList)方法中,我什至没有对多重性进行建模。在第二种(聚合)方法中,Java 代码在Person类型中创建一个属性,Characteristic但不是“类似列表”的属性,即它忽略了图中的多重性。

谢谢你。

4

2 回答 2

1

我同意 Dave,这是一种组合,一种 UML 关联。将组合设置为有序而不是唯一允许将 Java 属性生成为列表。这意味着您在设计级别有一个组合,在实施级别有一个列表。那就是代码生成器——或者如果你不使用代码生成器——它可以正确地转换 UML 图。

是我在您的案例中设计的内容以及我生成的 Java 代码(请随意分叉):

public class Person
{
    /**
     * <!-- begin-user-doc -->
     * <!--  end-user-doc  -->
     * @generated
     * @ordered
     */

    public List<Characteristic> characteristic;

    /**
     * <!-- begin-user-doc -->
     * <!--  end-user-doc  -->
     * @generated
     */
    public Person(){
        super();
    }    
}

请注意,如果您想在线快速设计生成,可以在 GenMyModel中导入 StarUML项目。

于 2014-07-07T08:29:21.183 回答
0

这对我来说听起来像是一种组合关系。在我看来,使用聚合/组合的第二种方法会更好。 是关于属性与关联的有趣读物。关于 StarUML 未能正确实现关系,您最好List自己实现。

于 2014-03-11T19:36:45.090 回答