带有指定多重性的ArrayList或聚合



我只是从UML开始(Staruml 5),所以请原谅这个真正的基本问题。

假设一个人具有多种特征,每个特征都有一个名称和价值。(这只是为了使事情变得简单。)假设我相应地创建Characteristic类。

我想在属性中生成Java类Person,例如ArrayList(Characteristic)

我应该在Person类(例如ArrayList(Characteristic))中添加一个属性,还是应该仅使用PersonCharacteristic之间的聚合关系,然后将多重性指定为0 ..*?

在第一种(arrayList)方法上,我什至没有对多重性进行建模。在第二个(聚合)方法中,Java代码在类型CharacteristicPerson中创建了一个属性,而不是"列表"属性,即它忽略了图中的多重性。

谢谢。

我同意戴夫(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();
    }    
}

请注意,如果您想快速设计在线生成。

这听起来像是我的组成关系。我认为,使用聚合/组成的第二种方法,最好选择。这是关于属性与协会的一本有趣的阅读。关于Staruml未能正确实施关系,您可能会自己实施List

相关内容

  • 没有找到相关文章

最新更新