图6 “选择建设项目”可选流1的顺序图
图6 所示的顺序图是选择建设项目用例的“可选流1”中对象之间的交互序列。也就是用户不使用系统列出的建设项目,而是查询建设项目从中选择。在此顺序图中的对 象有某个质监机构的工作人员、选择建设项目窗体的一个实例、TProject类的一个对象。某个质监机构的工作人员激活选择建设项目窗体的一个实例。该窗 体创建TProject类的一个对象。接着窗体调用对象方法,获得的所有建设项目,并且调用自身的方法将这些建设项目进行加载,供质监机构的工作人员选 择。某个质监机构的工作人员将查询信息提供给窗体进行查询,窗体调用对象的查询方法获得建设项目。窗体调用自身的加载方法,将查询得到的建设项目加载到窗 体上,供质监机构的工作人员选择。质监机构的工作人员选择某个建设项目之后,窗体调用对象的方法将用户选择的建设项目标识为当前的建设项目,以后所有的操 作将在这个建设项目上进行。
图7 “选择建设项目”可选流2的顺序图
图7 所示的顺序图是“选择建设项目”用例的可选流2中对象之间的交互序列。也就是不选择建设项目而新建一个建设项目。在此顺序图中的对象有某个质监机构的工作 人员、选择建设项目窗体的一个实例、TProject类的一个对象。某个质监机构的工作人员激活选择建设项目窗体的一个实例。该窗体创建TProject 类的一个对象。接着窗体对象的方法,获得所有的建设项目,并且调用自身的方法将这些建设项目进行加载,供质监机构的工作人员选择。某个质监机构的工作人员 不进行选择,新建建设项目,窗体调用对象的新建建设项目的功能。该功能在新建建设项目用例中描述。
2.4 整理分析类
整理分析类主要是依据用例实现部分的一系列的交互图。我们已经获得了分析类,在用例实现中我们在交互图中使用了这些类。但是这些类还没有属性、职责。我们需要对他们进行整理,完成分析类的属性、职责以及类之间的关系,并在类图中将他们展示出来。
职责是分析类响应消息并完成特定功能的能力,包括对外提供服务和维护自身的信息。由于消息和职责存在着对应关系,根据消息就可以确定职责。在交互模型中对象之间的交互通过消息进行。将交互图中将和该类有关的消息进行整理确定类的职责。
类之间并不是孤立的,利用类之间的关系就可以找到另一个类。利用协作图中对象之间的连接就是分析类之间的关联方式之一。分析类之间完整的关联关系要根据所有事件序列中对象间的连接加以归纳。
属性是分析类的基本内容。属性的基本来源是用例的事件流描述。如果对分析类及方法的描述比较明确,属性就比较容易获取。要分析属性也要结合分析类的方法,因为职责会使用属性去完成功能。
在整理分析类的过程中一定要注意分析类不仅仅参与了一个用例,它可能参与了很多的用例,因此在分析属性、职责及类之间关联的时候要考虑每个用例的情况,进行归纳总结。通过整理分析类绘制的类图仅仅是分析阶段的类图还需要在后续阶段继续完善和细化。
图8 分析类Project
图8就是整理出的一个分析类Project类的示例,当然这个类不仅仅是从选择建设项目这个用例获取的信息,它是综合了所有相关的用例分析的结果。