首页 百科知识 建立对象模型

建立对象模型

时间:2022-10-09 百科知识 版权反馈
【摘要】:面向对象分析首要的工作,是建立问题域的对象模型。这个对象模型描述了现实世界中的“类与对象”以及它们之间的关系,表示了目标系统的静态数据结构。因此,用面向对象方法开发绝大多数软件时,都首先建立对象模型,然后再建立另外两个子模型。误把关联类的属性当成一般对象的属性。如果某个性质依赖于某个关联类的存在,则该性质是关联类的属性,在分析阶段不应该把它作为一般对象的属性。

8.3.2 建立对象模型

面向对象分析首要的工作,是建立问题域的对象模型。这个对象模型描述了现实世界中的“类与对象”以及它们之间的关系,表示了目标系统的静态数据结构。静态数据结构对应用细节依赖较少,比较容易确定;当用户的需求变化时,静态数据结构相对来说比较稳定。因此,用面向对象方法开发绝大多数软件时,都首先建立对象模型,然后再建立另外两个子模型。

一、确定类与对象

系统分析员的主要任务就是通过分析找出系统类与对象。分为以下几个步骤:

1.找出候选的类与对象(步骤1)

大多数客观事物可分为以下5类:

(1)可感知的物理实体。例如,飞机、汽车、书、房屋等等。

(2)人或组织的角色。例如,医生、教师、雇主、雇员、计算机系、财务处等等。

(3)应该记忆的事件。例如,飞行、演出、访问、交通事故等等。

(4)两个或多个对象的相互作用,通常具有交易或接触的性质,例如,购买、纳税、结婚等等。

(5)需要说明的概念。例如,政策、保险政策、版权法等等。

找类的方法:

①把需求陈述中的名词作为类与对象的候选者。

②把隐含的类与对象提取出来。

通常,在需求陈述中不会一个不漏地写出问题域中所有有关的类与对象,因此,分析员应该根据领域知识或常识进一步把隐含的类与对象提取出来。例如,在ATM系统的需求陈述中虽然没写“通信链路”和“事务日志”,但是,根据领域知识和常识可以知道,在ATM系统中应该包含这两个实体。

2.筛选出正确的类与对象(步骤2)

删除不正确或不必要的类与对象:冗余、无关、笼统、属性、操作、实现。

二、确定关联

1.初步确定关联

(1)直接提取动词短语得出的关联。

(2)需求陈述中隐含的关联。

(3)根据问题域知识得出的关联。

2.筛选

筛选时主要根据下述标准删除候选的关联:

(1)已删去的类之间的关联。

(2)与问题无关的或应在实现阶段考虑的关联。应该把处在本问题域之外的关联或与实现密切相关的关联删去。

(3)瞬时事件。如果用动作表述的需求隐含了问题域的某种基本结构,则应该用适当的动词词组重新表示这个关联。

(4)三元关联(转化为二元关联)。

(5)派生关联。

三、进一步完善

应该进一步完善经筛选后余下的关联,通常从下述几个方面进行改进:

(1)正名。

(2)分解。

(3)补充。

(4)标明重数。

四、确定属性

属性是对象的性质,借助于属性我们能对类与对象和结构有更深入、更具体的认识。

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

1.分析

通常,在需求陈述中用名词词组表示属性。

在分析过程中,应该首先找出最重要的属性,以后再逐渐把其余属性增添进去。在分析阶段不要考虑那些纯粹用于实现的属性。

2.选择

认真考察经初步分析而确定下来的那些属性,从中删掉不正确的或不必要的属性。通常有以下几种常见的情况:

(1)误把对象当成属性。例如,在邮政目录中,“城市”是一个属性,而在人口普查中却应该把“城市”当成对象。

(2)误把关联类的属性当成一般对象的属性。如果某个性质依赖于某个关联类的存在,则该性质是关联类的属性,在分析阶段不应该把它作为一般对象的属性。

(3)把限定误当成属性。正确使用限定词往往可以减少关联的重数。如果把某个属性值固定下来以后能减少关联的重数,则应该考虑把这个属性重新表述成一个限定词。

(4)误把内部状态当成了属性。如果某个性质是对象的非公开的内部状态,则应该从对象模型中删掉这个属性。

(5)过于细化。在分析阶段应该忽略那些对大多数操作都没有影响的属性。

(6)存在不一致的属性。类应该是简单而且一致的。如果得出一些看起来与其他属性毫不相关的属性,则应该考虑把该类分解成两个不同的类。

五、识别继承关系

可以使用两种方式建立继承(即泛化)关系:

自底向上:抽象出现有类的共同性质泛化出父类,这个过程实质上模拟了人类归纳思维的过程。

自顶向下:把现有类细化成更具体的子类,这模拟了人类的演绎思维过程。从应用域中常常能明显看出应该做的自顶向下的具体化工作。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈