我刚开始使用UML(StarUML 5),请原谅这个非常基本的问题。
假设一个Person有多个特征,每个特征都有一个Name和一个Value。 (这只是为了简单起见。)假设我相应地创建了Characteristic
类。
我想使用类似Person
的属性生成Java类ArrayList(Characteristic)
。
我应该向Person
类添加属性,例如ArrayList(Characteristic)
,还是应该使用Person
和Characteristic
之间的聚合关系,并将多重性指定为0。 。*?
在第一个(ArrayList)方法中,我甚至没有对多重性进行建模。在第二种(聚合)方法中,Java代码在类型Person
的{{1}}中创建属性,但不创建“类似列表”属性,即它忽略了图中的多重性。
谢谢。
答案 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
。