背景


上篇文章中我们以图形编辑软件为例说明了对象图,但是很明显光有Canvas和Shape软件是没有办法工作的。它们只是被动的数据,需要融入更大的流程中才能发挥作用。


应用例



如果用语言描述的话图形编辑软件(以下称编辑软件)大概应该是如下


1.用户通过目视从屏幕上的到编辑对象的当前状态。

2.用户通过鼠标进行操作(键按下,键释放,拖动)

3.系统架构接受用户的操作转换成事件并分发给编辑软件

4.编辑软件接受事件后根据目前的状态进行相应的处理

5.通知架构更新表示内容

6.系统架构调用编辑软件的更新处理。

7.编辑软件调用系统架构将编辑对象表示在屏幕上

8.用户看到屏幕上的表示内容

9.回到步骤1继续直到软件退出。


上面的描述可以有很多种表达方式,本文以Qt环境开发为例,使用对象图对编辑软件的协作来建模。




EA&UML日拱一卒--类图::协作(collaboration)_UML

协作图说明

用户,屏幕,操作/时间,系统架构,编辑软件,编辑对象。


用户


用户是我们系统以外的部分,但是有时所有操作的发起者和编辑结果的确认者,不需要实现但是需要建模。我们用以下的图标来表示。



EA&UML日拱一卒--类图::协作(collaboration)_系统架构_02

屏幕

屏幕的责任是负责表示编辑结果,严格的讲包括硬件,操作系统和Qt表示架构。对于编辑软件建模来将,同样属于需要建模不需要实现的部分。可以看作统一看作Screen并用下面的图标来表示。


EA&UML日拱一卒--类图::协作(collaboration)_系统架构_03

系统架构

系 统架构负首先责接受用户操作并转发给编辑软件的处理模块。系统架构包括从接受用户操作的硬件,操作系统,负责转发用户操作事件的Qt架构。另外架构也负责 编辑软件发出的更新请求并负责在适当的时机调用编辑软件的表示功能。也用户,屏幕类似这也属于需要建模不需要实现的部分,我们用以下图形表示。


EA&UML日拱一卒--类图::协作(collaboration)_系统架构_04

操作/事件


操作/事件可以看作是协作的参数,因此并不会有对应的图形。

编辑软件

在Qt架构架构中可以由QWidget的子类负责处理用户操作和表示事件。目前称之为view而没有制定类型类型可以将来指定。

编辑数据

编辑数据就是编辑软件的工作成果。

当然我们也知道,一个完整的软件除了编辑功能还有保存文件,打开文件等等,这里给出保存功能的例子,其他大家可以自己发挥。


EA&UML日拱一卒--类图::协作(collaboration)_UML_05

总结

1.使用协作图可以

  • 明确系统全体构成
  • 明确交互/协作
  • 明确实现部分和既有部分的边界

2.对于系统需要建模,不需要实现的的用户,表示,处理,数据等可以考虑使用:

  • Actor
  • Boudary
  • Control
  • Entity


阅读更多新文章,请扫描下面二维码,关注公众号【面向对象思考】


EA&UML日拱一卒--类图::协作(collaboration)_EA_06