请注意:我知道聚合是一种特定类型的关联。但是,这是否是聚合?
class A{
void myfunc(){
B myB = new B();
}
}
class B{
// some code for class B, which as nothing to do with class A
}
因此,当在A类函数的范围内创建和销毁B的对象时,这两个类之间的关系是什么?
答案 0 :(得分:1)
我看到了你的问题 - 你可以多次调用该函数,每次A实例都有一个B实例。因此,它可能被误认为是1:n关联。但事实并非如此。请参阅UML标准的引文,2.5,p。 208:“一个协会声明在相关类型的实例之间可以存在链接”。您声明了一个关联,显示在“myfunc()”中。每次调用myfunc()都会创建一个属于同一声明的链接,即同一个关联。它不是一个关联1:n,它是同一个1:1关联的n个“实例”。
none
聚合。它不是属性,但显然是可导航的(一个非严格的术语)。所以,你应该把它显示为从A到B的常用箭头,没有点,如果你愿意,你可以把刻板印象“本地”放在上面。 答案 1 :(得分:1)
这是两个类之间依赖关系的明显例子,这是在运行时建立的短期关系。没有进一步的filosofy。
答案 2 :(得分:0)
由于方法中只有局部变量的引用,因此示例中A
和B
之间没有关联(因此没有聚合)。
否则,sfinnie是正确的,他的陈述(在uml-aggregation-vs-association中)"聚合在语义上太弱,以至于没有提供任何实际上有益的东西。"所以,你不应该浪费你(和我们)的时间来问这个问题。