我只是从UML开始(Staruml 5),所以请原谅这个真正的基本问题。
假设一个人具有多种特征,每个特征都有一个名称和价值。(这只是为了使事情变得简单。)假设我相应地创建Characteristic
类。
我想在属性中生成Java类Person
,例如ArrayList(Characteristic)
。
我应该在Person
类(例如ArrayList(Characteristic)
)中添加一个属性,还是应该仅使用Person
和Characteristic
之间的聚合关系,然后将多重性指定为0 ..*?
在第一种(arrayList)方法上,我什至没有对多重性进行建模。在第二个(聚合)方法中,Java代码在类型Characteristic
的Person
中创建了一个属性,而不是"列表"属性,即它忽略了图中的多重性。
谢谢。
我同意戴夫(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
。