将用例行为分配到对象类
  识别上述对象类之后,通过建立交互图,我们将用例的行为分布到这些对象类中。
  时序图表示完成某项行为的对象类和这些对象类之间传递消息的时间顺序,其组成如图4.17所示。

图4.17 时序图的组成

  其中,对象生命线是一条垂直的虚线,表示对象存在的时间;控制焦点是一个细长的矩形,表示对象执行一个所经历的时间段;消息是对象之间的一条水平箭头线,表示对象之间的通信。
  以学生课程注册系统中的用例"注册课程"为例,图4.18表示其中创建课程登记表的时序图。


点击看图

图4.18 用例"注册课程"中创建课程登记表的时序图

  协作图包含一组对象和以消息交换为纽带的关联,用于描述系统的行为是如何由系统的成分合作实现的。协作图与时序图是同构的,二者表示的都是同样的系统交互活动,只是各自的侧重点不同而已,图4.19表示"注册课程"中创建课程登记表的协作图。


点击看图

图4.19 用例"注册课程"中创建课程登记表的协作图

  通过对用例建立交互图,我们实现了将系统责任分配到对象类中,即交互图中的每一个消息就是消息接收对象的一个服务。最后,审查和整理对象图,删除一些不必要的冗余操作,分解或合并某些对象类。
定义属性
对于每个对象,我们从以下方面考虑并发现对象的属性:
  (1) 按照一般常识,找出对象的某些属性,如人员的姓名、性别、年龄、地址等;
  (2) 认真研究问题域,找出对象的某些属性,如商品的条形码、学生的学号等;
  (3) 根据系统责任的要求,找出对象的某些属性;
  (4) 考虑对象需要系统保存和管理的信息,找出对象的相应属性,如"课程"需要保存和管理的信息;
  (5) 对象为了在服务中实现其功能,需要增设一些属性;
  (6) 识别对象需要区别的状态,考虑是否需要增加一个属性来区别这些状态;
  (7) 确定属性表示整体与部分结构和实例连接。
  对于初步发现的属性,检查这些属性是否系统使用的特征、是否描述了对象本身的特征、是否可以通过继承得到、是否可以从其他属性直接导出等,对这些属性进行整理和筛选。