Java 在创建另一个对象的过程中创建的类和对象的UML关系?

Java 在创建另一个对象的过程中创建的类和对象的UML关系?,java,uml,Java,Uml,例如,在java中: public class App { public void method() { Object1 o1 = new Object1(new Object2(parameters)); } } 我知道App和Object1之间存在组合关系 但是App和Object2呢?它也是一种组合吗?在方法中使用类对于关联来说是不够的 您的类App没有类Object1或Object2的字段。它只是在方法的实现中使用Object1和Object2。这

例如,在java中:

public class App {

    public void method() {

        Object1 o1 = new Object1(new Object2(parameters));
    }

}
我知道App和Object1之间存在组合关系

但是App和Object2呢?它也是一种组合吗?

在方法中使用类对于关联来说是不够的 您的类
App
没有类
Object1
Object2
的字段。它只是在方法的实现中使用
Object1
Object2
。这不足以建立关联:在
App
ObjectX
之间没有概念关系;这只是一个实现细节。由于作文是一种特殊的联想,所以也没有作文

使用类意味着依赖关系 由于您的
App
使用
Object1
Object2
,因此有一个
«使用»
App
需要了解这些类。您可以用一个开放的虚线箭头来显示此依赖关系

但是,您的示例中的依赖关系仅在方法实现的级别上,而不在类本身的级别上。否则,您可以实现该方法。因此,我建议不要在您的模型中显示这种不稳定的依赖关系。如果类定义本身将使用此类对象(例如,如果方法将返回
ObjectX
或使用
ObjectX
参数),则建议使用依赖关系

术语:并非所有的作文都是作文! 如前所述,这里没有构图。然而,这个词是模棱两可的:

  • 这可能意味着。这只是关于对象具有另一个类的字段
  • 这可能意味着。这是一种特殊的专有所有权关联

两者都是依赖关系,而不是组合关系。这是因为在
方法中使用了Object2,所以它是一种依赖关系吗?所以,如果o1是在
方法
之外创建的变量,那么它将是一个组合@如果存在结构关系,Geertbellekenst只是一个组合。此处的关系是暂时的,仅在执行
方法期间存在,这是否回答了您的问题?谢谢@Christophe。“因此,我建议不要在您的模型中显示这种不稳定的依赖关系”,因为它是“不稳定的”;一个非易失性实现是否会将其转化为App和Object1之间的实际组合关系?@AMoses否,我使用术语“volatile”表示实现可以独立于类的结构特征而改变。您的方法实现描述了类的行为,类图描述了独立于类的行为的类的结构。UML2.5没有«使用»,只有
用法
。这是传统,不是吗?@qwerty_所以你真的让我犹豫了。我认为“使用依赖性”仍然在依赖性虚线上用
«使用»
标签标注。我更喜欢在guillemet之间提供现成的关键字,而不是在我的答案中提供没有guillemet的元模型元素。我不认为这是传统,除非UML2.5.1规范的第746页在我没有注意到的情况下被替换。@qwerty_所以现在我被再保险了:第39页,有一个标题:“图7.20«使用»依赖关系的示例”;-)