2010-05-29 68 views
5

如何指示方法将返回UML中的对象集合?有没有更好的方式来解释关系,而不是将集合类作为返回类型?UML - 对象方法返回集合

+0

如答案中所讨论的那样,使用返回类型没有真正的选择。但也许标签“模式”在这里有点误导。 – ShiDoiSi 2010-08-06 07:52:53

回答

4

您可能会考虑使用“关联”。关联有三种基本类型:组合,聚合和“正常”关联。他们每个人都表达了整体对部分的不同存在依赖性,反之亦然。

通常,关联通过将两个类连接起来表示。合成和聚合在复合材料/聚合体一侧有一个菱形符号。复合/聚合由一个或多个部分组成。想象,你有两个类

:图书馆,图书(见wiki-article

例。我们可以说图书馆是整体,并预定这部分。我们可以像这样指出它(用ASCII表示,请google用于真实图表)。

库(聚合)<> ---书(部分)

如果你想表达这些关系协会将成为你的朋友。

编辑:

正如我在评论说,我不认为这是对返回集合一个特殊的符号。然而,你是对的,返回一个集合是一种特定的语言。但是您可能会考虑返回一个数组(String[]),这是一种更一般的方式来表示一组值,并且应该比集合更独立于语言。接下来是程序员如何实现它。他可能会使用一个C++ STL向量Collection ......重点是:返回一组值。

+0

没错,但是我将如何表明一种方法正在返回该关联? – derekerdmann 2010-05-30 00:14:40

+0

通常一个方法定义了一个类的__behaviour__。因此无法表达该方法通过使用类图来返回集合(除了指示其返回值)。 – Simon 2010-05-30 00:21:56

+0

那么我只是说这个方法返回Collection (用Java)?我认为在UML中通常避免使用这种语言特定的表示法。 – derekerdmann 2010-05-30 00:51:33

0

嗯,的确,在UML类图中没有明确的方式来表示集合类型。我读过一本他们批评UML的书,但他们提到,在某些UML版本中,有一些集合类型。另一件事是对象约束语言(Object Constraint Language,OCL),它与UML(如OMG标准)集成在一起,并具有自己的集合类型和良好的操作。

7

因为我在寻找类似问题的答案,所以我有点晚了。我写这个incase其他人正在寻找类似的答案。

你想表明一个方法返回一个特定类型的集合吗?如果是这样,对于一种方法,您应该能够将返回参数的类型和返回参数的多重性设置为0 .. *或1 .. *。这将表明该方法返回指定的类型,并且它具有您声明的任何多重性。

E.g.使用库<> --- Book example,假设在Library上有一个名为GetBooks的方法,它接受一个字符串参数,作者姓名并返回一组Book实例。 UML的会是这个样子:

图书馆 + GetBooks(AUTHORNAME:字符串):书[0 .. *]

您的UML图表工具应该支持这一点;我正在使用Magic Draw。这个UML指出GetBooks返回0或许多Book实例。现在由程序员决定如何在实现语言中实现返回参数(如上面由Simon所述)。

0

有一种间接的表现方式。

您可以定义另一个复合类,其复合关系为1 .. *与您的特定返回类型并将此新复合类用作返回类型。

例如,如果要返回Book类的集合,请创建一个与Book有1 .. *关联的新Books类,并使用Books类作为返回类型。