UML中的“创建”与“实例化”依赖关系

时间:2015-10-17 23:37:48

标签: uml

根据UML规范,我们可以通过<<Create>><<Instantiate>>刻板印象来表示两个类之间的依赖关系。

你知道这些刻板印象之间有什么区别吗?

用UML规范2.5(第22.3章标准刻板印象)编写:

  1. <<Create>>

      

    表示客户端分类器创建的用法依赖项   供应商分类器的实例

  2. <<Instantiate>>

      

    分类符之间的用法依赖性,表示对该操作的操作   客户创建供应商的实例

3 个答案:

答案 0 :(得分:2)

迈克尔杰西Chonoles 是的,«create»用于序列图。这是对消息的刻板印象。 “创建”也是分类器中行为特征的刻板印象,表明它是该分类器实例的构造函数(或非面向对象项的等价物)。

当依赖时使用«Create»时,它与“实例化”似乎没什么不同。就个人而言,我使用依赖«实例化»。我的意思是通过调用构造函数(这是我将模型转换为代码的方式)来实现真正的面向对象实例化。当它是一种不同类型的创作时,我会使用“创建”,无论是更多的间接,概念还是非面向对象的特征。

以下是一些例子。我会用«创建»来说MSWord - &gt;«创建»一个文档,一个建模者«创建»一个模型。虽然我通常不会对此进行详细建模,但我会使用«Create»来表示组件«Create»一个新的数据库记录,数据库管理器«Create»一个新的数据库,一个程序员«Create»一个新的应用程序。或者在(非oo)数组中创建一个新元素。这些可以在不直接调用传统的面向对象的构造函数的情况下发生 - 并且不能直接转换为代码。

另一方面,如果我对一个人进行婚姻操作,它可能会“实例化”婚姻关联类对象。

因为我的大多数建模都是概念性的,所以在实践中,我倾向于使用“创造”。虽然,即使这样,它也不常出现。

答案 1 :(得分:1)

我注意到&lt;&lt;创建&gt;&gt;刻板印象不仅可以应用于&#34;用法&#34;依赖也要 &#34; BehavioralFeature&#34; (参见UML规范中的第22.2节)。

在UML&#34; BehavioralFeature&#34;对应于类或接口中的特定方法。

因此,如果我们在一个类中使用&lt;&lt;来标记特定方法创建&gt;&gt;或&lt;&lt;毁灭&gt;&gt; 我们的意思是它创建/销毁这个类的实例。

我们可以在用&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;创建&gt;&gt; 并使用&lt;&lt;标记用法依赖项创建&gt;&gt;。

如果我们用&lt;&lt;标记用法依赖关系创建&gt;&gt;然后 这意味着客户端类中的特定方法会创建供应商类的实例。 因此,我们在客户类的主体中创建了一个Supplier实例。 客户和供应商在这里紧密联系。

另一方面,如果我们用&lt;&lt;标记用法依赖关系实例化&gt;&gt;然后 客户端类将供应商的创建委托给其他对象。 因此,他间接创造了供应商。 在这种情况下,客户和供应商是松散耦合的。 例如,如果我们通过其中一种创建模式创建供应商,则会发生这种情况:对象池,原型,工厂方法等。

注意:

总的来说,与规格的差异并不十分清楚。 希望在它的未来版本(超过2.5版本)中我们有更明确的定义。

答案 2 :(得分:0)

指导我学习SyML / UML的人在大型公司中从事SyML / UML的MSBE工作已经很多年了。

我问他如何绘制一个显示以下内容的图:

“系统引导进程”(从ROM)加载并运行“系统MAIN进程/应用程序”。

他说我应该使用《创建》用法依赖项。

据我所见:

  • 您使用«Create»来表明一个进程运行着“大”事情-例如 启动整个外部流程/软件项目/应用程序。

  • 使用«Instantiate»可以显示给定过程中的代码 段实例化一个类中的“创建”对象实例 定义。