具有指定多重性的ArrayList或Aggregation

时间:2014-03-06 18:04:16

标签: arraylist staruml multiplicity

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

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

我想使用类似Person的属性生成Java类ArrayList(Characteristic)

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

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

谢谢。

2 个答案:

答案 0 :(得分:1)

我同意Dave,这是一种组合,一种UML关联。将组合设置为Ordered而非唯一允许将Java属性生成为List。这意味着您在设计级别具有组合,在实现级别具有List。这就是代码生成器 - 或者如果你不使用代码生成 - 那么它正确地转换了UML图。

Here's我在你的案例中设计的内容和我生成的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中import StarUML项目。

答案 1 :(得分:0)

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