在UML类图中,什么是边界类、控制类和实体类?

109

我现在使用NetBeans作为我的首选IDE,并且它有一个UML建模的插件。在类图中,有一些被称为Boundary ClassControl ClassEntity Class的模型元素。然而,我找不到一个好的定义,但我在这个网站上找到了关于UML类图的信息。


维基百科解释了关于实体-边界-控制模式及相关概念的一切所需知识。如果您需要了解更多信息,它提供了大量的额外阅读来源。 - Christophe
6个回答

254
鲁棒性图表是在用例之后、类图之前编写的。它们有助于确定用例步骤的角色。您可以使用它们来确保您的用例足够健壮,以表示正在构建的系统的使用要求。
它们涉及以下内容:
  1. 操作者
  2. 用例
  3. 实体
  4. 边界
  5. 控制器
模型-视图-控制器模式用于用户界面,实体-控制器-边界(ECB)模式用于系统。如果有帮助的话,ECB的以下方面可以被比作MVC的抽象版本:

UML notation

实体 (模型)
代表系统数据的对象,通常来自领域模型。 边界 (视图/服务协作者)
与系统参与者(例如用户外部服务)进行接口的对象。窗口、屏幕和菜单是与用户进行接口的边界的示例。 控制器 (控制器)
在边界和实体之间起到中介作用的对象。它们充当边界元素和实体元素之间的粘合剂,实现管理各个元素及其交互所需的逻辑。重要的是要理解,您可以决定在设计中将控制器实现为除对象以外的其他内容 - 例如,许多控制器都足够简单,可以实现为实体或边界类的方法。 它们之间的交流有四条规则:
  1. 参与者只能与边界对象交谈。
  2. 边界对象只能与控制器和参与者交谈。
  3. 实体对象只能与控制器交谈。
  4. 控制器可以与边界对象和实体对象交谈,也可以与其他控制器交谈,但不能与参与者交谈。
允许的交流:
         Entity    Boundary   Control
Entity     X                     X
Boundary                         X
Control    X          X          X

17
根据评论,这个答案没有帮助人们理解“实体边界控制”和MVC之间的区别。其中一个区别在于,“Boundary(边界)”不是一个“View(视图)”,它是系统的一个元素,用于管理与设计区域外部元素的通信,无论该区域是什么。例如,在您的系统中,PayPal REST API门面可能是一个边界元素。此外,您的子系统可能有自己的边界。相比之下,视图始终是视图,并且始终面向用户。 - DavidS
4
这个回答确实包含了相同的意思:"边界:与系统角色(例如用户或外部服务)进行接口的对象"。无论如何,我的观点是它们是不同的:ECB不是MVC的“简化版”。 - DavidS
1
一个要点是,这些模式在UML规范中似乎没有定义... - granier

25

这通常与OOAD和业务建模一起使用。Neil的定义是正确的,但它基本上与MVC完全相同,只是针对业务进行了抽象化。 "Good summary"做得很好,因此我不会在这里复制它,因为那不是我的工作,它更详细,但符合Neil的要点。

好摘要 - 概念:Entity-Control-Boundary Pattern

OOAD


3
MVC 只适用于视图层。 - Alex78191
3
很不幸,该链接已经失效。答案应该包含信息,而不仅仅是链接。 - Johan van den Broek
2
@ted-johnson 有没有更新的链接的机会?谢谢! - Narshe
更新了一个类似网站的链接,该网站有相关内容。 - Ted Johnson

20

这些是分析中使用的类别刻板印象。

  • 边界类是系统边界上的类 - 您或其他系统与之交互的类

  • 实体类是您典型的业务实体,如“人”和“银行账户”

  • 控制类实现一些业务逻辑或其他功能


5

Boundary Control Entity(边界控制实体)模式有两个版本:
- 旧的结构版本,描述在127页(其中实体作为数据模型元素,控制作为函数,边界作为应用程序接口)
- 新的对象模式


作为对象模式:
- 边界是“其他世界”的接口
- 控制是任何内部逻辑(例如DDD模式中的服务)
- 实体是对象的持久化服务(类似于DDD模式中的仓库)
所有类都拥有操作(请参见Fowler无血统领域模型反模式)
所有它们都是MVC模式中的模型组件。规则如下:
- 只有边界为“其他世界”提供服务
- 边界只能调用控制
- 控制可以调用任何人
- 实体不能调用任何人(!),只能被调用。

jz


5

实际上,健壮性图(或分析图,有时也称为)只是专门的类图。它们是UML的一部分,并且从一开始就存在(请参阅Jacobson的书《统一软件开发过程》-“三位好友”系列之一)。上述书籍在第183-185页有这三个类的良好定义。


2
记录一下,实体-边界-控制模式源自用例驱动的软件开发,并且比Scott Ambler的鲁棒性图表早得多,后者只是重新使用了这个概念。
该模式不是UML的一部分,但与UML密切相关,因为它由Ivar Jacobson(他在1992年发起了这个模式)、Grady Booch和Jim Rumbaugh等UML的创始人推广...以及统一过程(UP、RUP)。在UML中,它只是像其他任何一种构造型一样的构造型。 维基百科解释得最好,控制类对应于用例,边界类对应于用例和参与者之间的关联,而实体则对应于被确定为参与用例的领域对象。
大多数UML工具使用的圆形符号都是Jacobson发明的预定义BCE构造型。鲁棒性规则只是上述用例映射的转换。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接