第10章面向对象讲解

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第10章面向对象分析

10.1面向对象分析的基本过程

不论采用哪种软件工程方法开发软件,需求分析的主要工作都是:理解需求、表达需求和验证需求,下面的图概括地表示了参照当前系统建立目标系统的过程。

图:参照当前系统建立目标系统

面向对象分析(Object-Oriented Analysis,简称OOA)的关键就是识别出对象与类,并分析它们之间的关系,最终建立对象模型、动态模型和功能模型。

10.1.1 概述

系统分析员要善于学习、勇于实践,更重要的是一切从实际出发。

[[注注]]“OOA 就是抽取和整理用户需求并建立问题域精精确确模模型型的过程。”(P231)——这在一开始能做到吗?——扯蛋

10.1.2 3个子模型与5个层次

面向对象建模需建立包含系统的三个要素:1)静态结构(对象模型)、2)交互次序(动态模型)、3)数据交换(功能模型)。

建立系统模型的过程是一个迭代(iterations )式的自顶向下的求精过程。对于一个大型复杂系统来说对对象象模模型型一般由下述5个层次组成:

图10.2 复杂问题的对象模型的5个层次

其中主题层是指从一个更高(高于“类”)的抽象层次来描述对象模型(即从一个相当高的层次上描述总体模型),通过划分“主题”把一个复杂系统的对象模型分解成几个不同的概念范畴。

其实上述5个层次就是OOA中建立对象模型的5项主要工作:找出类和对象,识别结构(类或对象之间的关系),识别主题、定义属性、定义服务。我们知道动态模型和功能模型中都包含了对象模型中的操作,因此人们在定义每个类中的服务前,往往先建立起动态模型和功能模型,这样说来OOA大体上可按下列顺序进行:

(1)确定类和对象

(2)确定关联

(3)划分主题

(4)定义属性

(5)确定继承关系

(6)建立动态模型

(7)建立功能模型

(8)定义服务

需要注意地是在这里我们根本不强调顺序,更不是谈什么步骤。

10.2需求陈述

需求陈述的主要任务是准确地回答“系统必须做什么?”,而不是“系统应该怎么做?”

10.2.1书写要点

10.2.2例子

我们用“ATM系统”(ATM是Automatic Teller Machine的缩写,意即自动柜员机)的开发作为OOA&OOD的实例。

图10.2ATM 系统

10.3建立对象模型

10.3.1确定类与对象

1. 找出候候选选的类与对象(例:P236 ATM 系统)

一般来说,大千世界中的客观事物可分为5类:

1)可感知的物理实体,如:飞机,汽车,房屋

2)人或组织的角色,如:教师,医生,计算机系,学生处

3)应该记忆的事件,如:飞行,演出,访问,交通事故

4)对象的相互作用,如:购买,结婚,纳税

5)概念,如:政策,刑法,泛化,集合

2. 筛选出正确的类与对象

我们需要确定的类与对象是:

(1) 应该记录的对象

(2) 需要它提供服务的对象

同时要关注下述6个方面:

1) 冗余: 去掉冗余的类(如“用户”)

2) 无关: 去掉无关的类(如“储蓄所”)

3) 笼统: 去掉笼统的类(如“银行”)

4) 属性: 区分属性和类(某个性质若具有很强的

独立性应当作为“类”)

5) 操作: 区分操作和类(本身具有属性且需独立存

在的“操作”应当作为“类”)

6) 实现: 忽忽略略实实现现内内容容(应当去掉仅和实现有关

的“类”,如“事务日志”)

10.3.2确定关联

对象之间的相互依赖、相互作用的关系就是关联。在分析的起始阶段,我们不必花过多的精力去区分关联和聚集,聚集不过是一种特殊的关联,是关联的一个特例。

1. 初步确定关联

通过分析动词词组我们可以得出大多数关联(例:P238 ATM 系统)

2. 筛选

筛选时要关注下述5个方面:

1)已删去的类之间的关联也要删除

2)无关的或在在实实现现阶阶段段考考虑虑的的关关联联要要删删除除

3)描述瞬时事件的关系不应作为关联(关联应该描述问题域的静态结构)

4)三个或三个以上对象的关联要作分解或描述成限定关联

5)冗余关联要删除

3. 进一步完善

完善时要关注下述4个方面:

1)正名:选择更明确的名字作为关联名

2)分解:分解已确定的类以适用关联

3)补充:及时补充遗漏关联

4)标明重数:但无需花过多精力

图10.3ATM系统原始的类图

10.3.3划分主题

按问题领域而不是用功能分解来高度概括主题

10.3.4确定属性

属性是类中所定义的数据,它表明了对象的性质。

一般来说,确定属性的过程包括分析和选择两个步骤:1. 分析

通常用名词词组表示属性,如:“汽车的颜色”、“光标的位置”,而用形容词表示可枚举的具体属性,如:“红色的”、“白色的”。

在分析阶段应该仅考虑与具体应用直接相关的属性,而不不要要考考虑虑那那些些纯纯粹粹用用于于实实现现的的属属性性。。

2. 选择

选择时要关注下述6个方面:

1) 区分对象与属性(仅关注其值的是属性);

2) 区分关联类属性与对象属性(例:依赖某个

关联链的性质是关联类属性);

3) 区分限定词和属性(能用限定词更好)

4) 区分内部状态和属性(例:某性质是对象的

内部状态)

5) 忽略无影响的属性(在分析阶段应该忽略对

大多数操作无影响的属性)

6) 注意属性的相关性(分解该“类”)

相关文档
最新文档