虽然面向对象开发方法和结构化开发方法有很大不同,但前期的系统需求调查是完全相同的。在《结构化开发方法》一课中,项目经理小王的系统需求调查结果事件列表,完全可以应用到面向对象分析中,下表是小王在名片自动识别APP项目案例中的需求调查事件列表。

有了需求事件列表,就可以归纳和抽象出系统相关角色了。需要注意的是,角色不是指具体的人和事务,而是表示人或事物在系统中所扮演的角色。例如图书管理系统有管理员和借书者两个角色,小张既可以是管理员角色,也可以是借书者角色。从事件列表中归纳和抽象出来的角色就是系统中要识别的对象。
表1-3的事件涉及的角色有使用者(用户)、名片、百度图像识别接口、数据库。对识别的角色编号,可以采用字母R开头加序号的编号规则,例如R001,R002等。下表是角色列表。

识别出角色后,就可以建立角色用例图了,角色用例图从系统的角度描述了角色(对象)的行为及角色间的关系。类似数据流图要配备数据字典一样,角色用例图也要配备用例规约,用例规约描述了用例图中每个用例的用例名称、参与角色、与其它用例间的关系、前置条件、后置条件、操作流程、输入与输出数据项等内容。下图是表1-4角色的系统用例图。

名片识别APP角色用例图
在上图所示的角色用例图中,分别列出了使用者、名片、百度AI接口、数据库角色的用例。角色使用者有【注册】、【登录】、【添加名片】三个用例,其中【注册】和【登录】用例依赖于角色数据库的【存取信息】用例;角色名片有【扫描名片】和【识别名片】两个用例,其中【识别名片】用例依赖于角色百度AI接口的【调用百度AI接口用例】和角色数据库的【存取信息】用例;角色数据库有【存取信息】用例;角色百度AI接口有【调用百度AI接口】用例。
角色用例图确定后,还需要对每个用例配置用例规约,用例规约内容组成没有强制要求,以能够为面向对象设计提供充分的参考依据为原则。下面给出角色数据库【存取信息】用例的用例规约。
角色用例模型分析完成后,下一步的工作就是分析系统中的对象及对象间的关系,描述模型使用UML建模语言中的类图。类图描述了系统对象的名称、属性及行为,以及对象与对象之间的关系。一般说来,前面分析的系统角色就是系统中的对象。当然角色还可以细分,例如数据库角色就可以细分为使用者数据库角色和名片数据库角色,细分后的角色可以继承原有角色的所有行为和属性,这也体现了对象的继承关系。下图是名片识别APP的类图。

名片识别APP类图
至此,分析阶段的用例和类图的建模已经完成,后续还需要根据用例和类图模型建立界面模型。例如,User类有登录、注册、添加名片的行为,就需要为User类提供执行这些行为的界面模型。有很多图像绘制工具支持界面模型的建模,如常用的PhotoShop等工具。

登录界面模型