边界类、控制类、实体类

本文介绍了面向对象设计中的边界类、控制类和实体类的概念和作用。边界类用于系统外部环境与内部交互,如用户界面、设备接口;控制类封装了复杂的控制逻辑,协调边界类和实体类;实体类则存储和管理持久性信息。通过区分这些类,可以提高系统适应环境变化的能力和代码的可维护性。
 

区分类的构型的意义:

区分类的构造类型有助于建立一个强壮的对象模型,这是因为对模型进行的变更往往只会影响到某一特定的部分。例如:用户界面的变更仅会影响边界类;控制类的变更仅会影响控制类。

边界类

概念

边界类是一种用于对系统外部环境与内部运作之间的交互进行建模的类。这种交互包括转换事件,并记录系统表示方式(例如接口)的变更。

实例查找边界类

常见的边界类有窗口、通信协议、打印机接口、传感器和终端等。

边界类对系统中依赖于环境的那些部分进行建模;实体类和控制类独立于系统外部环境的那部分进行建模。因此,如果更改GUI(用户图形界面)或通信协议,将只会更改边界类,对实体类和控制类则毫无影响。

由于明确了系统的边界,边界类能帮助人们更容易理解系统。在设计时,他们为确定相关服务提供了一个好的起点。例如:如果在设计之初就确定了一个打印机接口,那么就必须对打印输出的格式也进行建模。

一个系统可能会有多种边界类:

用户界面——帮助与系统用户互相进行通信的类

系统接口——与其他系统接进行通信的类。

在自动柜员机中,提款必须通过 ATM 网络(一个主角)得到验证,然后该网络再通过银行会计系统对提款进行验证。我们可以确定让一个称为 ATM 网络接口的对象来提供与 ATM 网络之间的通信。

设备接口——用来检测外部设备(如传感器)

控制类

概念

控制类用于对一个或几个用例所特有的控制行为进行建模,将用例的特有行为进行封装,具有协调性质。

生命期

当系统执行用例的时候,就产生了一个控制对象。控制对象经常在其对应用例执行完毕后消亡。

控制类意义

控制类有效地将边界对象与实体对象分开,让系统更能适应其边界内发生的变更。这些控制类还将用例所特有的行为与实体对象分开,使实体对象在用例和系统中具有更高的复用性。

控制类行为特点:

· 独立于环境(不随环境的变更而变更)。

· 确定用例中的控制逻辑(事件顺序)和事务。

· 在实体类的内部结构或行为发生变更的情况下,几乎不会变更。

· 使用或规定若干实体类的内容,因此需要协调这些实体类的行为。

· 不是每次被激活后都以同样的方式执行(事件流具有多种状态)。

确定是否需要控制类

首先,调查事件流是否能由已确定的边界类和实体类进行处理。对于主要是为了输入、检索、显示或修改信息的简单事件流来说,通常不必单独使用一个控制类,将由边界类负责协调用例。

如果事件流较复杂,而且包含一些可能会独立于接口(边界类)或系统信息库(实体类)而变更的动态行为,则应该将该事件流封装在一个单独的控制类中。通过封装事件流,同一个控制类就可能由具有不同接口和信息库(或者至少基础数据结构不同)的各种系统重复使用。

控制类事件流封装

为了简化变更,将主事件流和备选事件流封装于不同的控制类中。如果备选事件流和异常事件流完全独立,那么将它们也分开。这会方便系统以后的扩展和维护。

实例查找控制类

控制对象的示例有:事务管理器、资源协调器和错误处理器。

管理任务队列

您可从库房管理系统的执行任务用例中确定一个控制类。该控制类处理一个任务队列,保证任务按照正确的顺序来执行。一旦分配好运输工具后,它就执行队列中的下一个任务。因此,系统可以同时执行多个任务。

如果将由其对应的控制对象定义的行为分为两个控制类(Task Performer 和 Queue Handler),那么说明此行为就会更加容易。Queue Handler 对象将只处理队列顺序和对运输工具的分配。整个队列只需一个 Queue Handler 对象。一旦系统要执行某个任务,它就会产生一个新的 Task Performer 对象来执行该任务。所以,系统所执行的每个任务都需要一个 Task Performer 对象。

电话通话管理

我们首先确定一个控制类来管理通话。

用来控制电话系统中市内电话的控制类可以很快地分为两个控制类:A 行为和 B 行为,分别对应于各自的主角。

在市内通话中,有两个主角:拨打电话的 A 用户和接听电话的 B 用户。A 用户拿起话筒,听到拨号音,然后拨打电话号码。系统立即存储号码并进行分析。系统接收到号码的所有数字后,将振铃音发往 A 用户,同时向 B 用户发出振铃信号。B 用户拿起话筒后,振铃音和振铃信号都停止,而这两个用户间的通话就可以开始了。通话直到这两个用户都挂机时停止。

有两种行为必须加以控制:A 用户端行为和 B 用户端行为。出于这个原因,初始控制对象被分为两个控制对象:A 行为和 B 行为。

实体类

概念

实体类是用于对必须存储的信息和相关行为建模的类。

特点

实体对象,用于保存和更新一些现象的有关信息,例如:事件、人员或者一些现实生活中的对象。实体类通常都是永久性的,它们所具有的属性和关系是长期需要的,有时甚至在系统的整个生存期都需要。实体对象是独立于环境(主角)的。

实体类表示系统中的信息存储,它们一般用于表示系统所管理的核心概念。实体对象经常是被动和永久性的。它们的主要职责是存储和管理系统中的信息。

实例查找实体类

我们经常是从词汇表(在需求阶段制定)和业务领域模型(如果进行了业务建模,则在业务建模阶段中建立)中找寻到实体类的。

银行系统中实体类的典型示例是账户和客户。在一个网络处理系统中,典型的示例是节点和链接。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值