如何指示方法将返回UML中的对象集合?有没有更好的方式来解释关系,而不是将集合类作为返回类型?UML - 对象方法返回集合
回答
您可能会考虑使用“关联”。关联有三种基本类型:组合,聚合和“正常”关联。他们每个人都表达了整体对部分的不同存在依赖性,反之亦然。
通常,关联通过将两个类连接起来表示。合成和聚合在复合材料/聚合体一侧有一个菱形符号。复合/聚合由一个或多个部分组成。想象,你有两个类
:图书馆,图书(见wiki-article)
例。我们可以说图书馆是整体,并预定这部分。我们可以像这样指出它(用ASCII表示,请google用于真实图表)。
库(聚合)<> ---书(部分)
如果你想表达这些关系协会将成为你的朋友。
编辑:
正如我在评论说,我不认为这是对返回集合一个特殊的符号。然而,你是对的,返回一个集合是一种特定的语言。但是您可能会考虑返回一个数组(String[]
),这是一种更一般的方式来表示一组值,并且应该比集合更独立于语言。接下来是程序员如何实现它。他可能会使用一个C++ STL向量Collection
......重点是:返回一组值。
没错,但是我将如何表明一种方法正在返回该关联? – derekerdmann 2010-05-30 00:14:40
通常一个方法定义了一个类的__behaviour__。因此无法表达该方法通过使用类图来返回集合(除了指示其返回值)。 – Simon 2010-05-30 00:21:56
那么我只是说这个方法返回Collection
嗯,的确,在UML类图中没有明确的方式来表示集合类型。我读过一本他们批评UML的书,但他们提到,在某些UML版本中,有一些集合类型。另一件事是对象约束语言(Object Constraint Language,OCL),它与UML(如OMG标准)集成在一起,并具有自己的集合类型和良好的操作。
因为我在寻找类似问题的答案,所以我有点晚了。我写这个incase其他人正在寻找类似的答案。
你想表明一个方法返回一个特定类型的集合吗?如果是这样,对于一种方法,您应该能够将返回参数的类型和返回参数的多重性设置为0 .. *或1 .. *。这将表明该方法返回指定的类型,并且它具有您声明的任何多重性。
E.g.使用库<> --- Book example,假设在Library上有一个名为GetBooks的方法,它接受一个字符串参数,作者姓名并返回一组Book实例。 UML的会是这个样子:
图书馆 + GetBooks(AUTHORNAME:字符串):书[0 .. *]
您的UML图表工具应该支持这一点;我正在使用Magic Draw。这个UML指出GetBooks返回0或许多Book实例。现在由程序员决定如何在实现语言中实现返回参数(如上面由Simon所述)。
有一种间接的表现方式。
您可以定义另一个复合类,其复合关系为1 .. *与您的特定返回类型并将此新复合类用作返回类型。
例如,如果要返回Book类的集合,请创建一个与Book有1 .. *关联的新Books类,并使用Books类作为返回类型。
- 1. 流星 - 来自方法的返回集合对象
- 2. 将对象返回方法
- 3. 返回webmethod中的对象集合
- 4. 结合的方法来反对返回其他对象
- 5. 无法返回对象方法名称
- 6. Scriptcontrol对象返回记录集对象
- 7. .NET集合和访问对象方法
- 8. 在方法中返回一个数据集作为对象
- 9. 如何从远程方法返回结果集对象?
- 10. 返回集合
- 11. 使用executeFetchRequest返回对象的方法
- 12. 用toString()方法返回对象
- 13. 不能使对象方法返回var
- 14. 超类方法返回超类对象
- 15. 对象 - 以Swift3类返回方法
- 16. Moq返回一个方法的对象
- 17. 从方法创建并返回对象
- 18. 方法返回SBJson Objective-C的对象
- 19. 从Java方法返回对象
- 20. 返回undefined的Javascript对象方法?
- 21. jQuery Ajax方法不返回XHR对象
- 22. JavaScript对象方法返回null财产
- 23. 返回的python对象方法的Intellisense
- 24. 返回类型对象的方法
- 25. 目标C:从方法返回对象
- 26. 如何防止方法调用方修改返回的集合?
- 27. JMockit返回集合
- 28. java:返回集合
- 29. 如何确保对象方法返回预期的对象?
- 30. Nightwatch.js方法`.element()`返回“[对象的对象]”
如答案中所讨论的那样,使用返回类型没有真正的选择。但也许标签“模式”在这里有点误导。 – ShiDoiSi 2010-08-06 07:52:53