class 和它在另一个对象的创建中创建的对象的 UML 关系?
UML relationship of class and object it creates inside the creation of another object?
例如,在java中:
public class App {
public void method() {
Object1 o1 = new Object1(new Object2(parameters));
}
}
我知道App和Object1有组合关系
但是 App 和 Object2 呢?也是作文吗?
在方法中使用 class 不足以建立关联
您的 class App
没有 class Object1
或 Object2
的字段。它只是在方法的实现中使用 Object1
和 Object2
。这不足以建立关联:App
和 ObjectX
之间没有概念关系;这只是一个实现细节。而且由于组合是一种特殊的关联,所以也没有组合。
使用class意味着依赖
因为你的App
使用了Object1
和Object2
,所以有一个«use»
dependency:App
需要知道这些classes。您可以用开放的虚线箭头显示这种依赖关系。
但是,您示例中的依赖性仅在方法实现级别,而不是 class 本身级别。您可以以其他方式实现该方法。因此,我建议不要在您的模型中表现出这种不稳定的依赖性。如果 class 定义本身将使用这样的对象(例如,如果一个方法将 return 一个 ObjectX
或使用一个 ObjectX
参数),则依赖性是可取的。
术语:并非所有作品都是作品!
如前所述,这里没有合成。尽管如此,这个词还是有歧义的:
- 可能意味着 object compostion。这只是关于具有另一个 class.
字段的对象
- 可能意味着 UML composition。这是一种具有排他性所有权的特殊协会
例如,在java中:
public class App {
public void method() {
Object1 o1 = new Object1(new Object2(parameters));
}
}
我知道App和Object1有组合关系
但是 App 和 Object2 呢?也是作文吗?
在方法中使用 class 不足以建立关联
您的 class App
没有 class Object1
或 Object2
的字段。它只是在方法的实现中使用 Object1
和 Object2
。这不足以建立关联:App
和 ObjectX
之间没有概念关系;这只是一个实现细节。而且由于组合是一种特殊的关联,所以也没有组合。
使用class意味着依赖
因为你的App
使用了Object1
和Object2
,所以有一个«use»
dependency:App
需要知道这些classes。您可以用开放的虚线箭头显示这种依赖关系。
但是,您示例中的依赖性仅在方法实现级别,而不是 class 本身级别。您可以以其他方式实现该方法。因此,我建议不要在您的模型中表现出这种不稳定的依赖性。如果 class 定义本身将使用这样的对象(例如,如果一个方法将 return 一个 ObjectX
或使用一个 ObjectX
参数),则依赖性是可取的。
术语:并非所有作品都是作品!
如前所述,这里没有合成。尽管如此,这个词还是有歧义的:
- 可能意味着 object compostion。这只是关于具有另一个 class. 字段的对象
- 可能意味着 UML composition。这是一种具有排他性所有权的特殊协会