三种面向对象方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
三个著名的面向对象开发方法
摘要
主要介绍了3种典型的面向对象开发方法,并对它们进行了比较。面向对象的方法是一种分析方法、设计方法和思维方法。面向对象方法学的出发点和所追求的基本目标是使人们分析、设计与实现一个系统的方法尽可能接近人们认识一个系统的方法。
关键字:面向对象;开发方法;OMT;BOOCH;JACOBSON;
1.引言
面向对象的方法是一种分析方法、设计方法和思维方法。面向对象方法学的出发点和所追求的基本目标是使人们分析、设计与实现一个系统的方法尽可能接近人们认识一个系统的方法。也就是使描述问题的问题空间和解决问题的方法空间在结构上尽可能一致。其基本思想是:对问题空间进行自然分割,以更接近人类思维的方式建立问题域模型,以便对客观实体进行结构模拟和行为模拟,从而使设计出的软件尽可能直接地描述现实世界,构造出模块化的、可重用的、维护性好的软件,同时限制软件的复杂性和降低开发维护费用。
面向对象程序设计方法起源于六十年代末期的simnia语言.Smalltalk语言的出现,进一步发展和完善了面向对象的程序设计语言,从此面向对象与开发方法开始结合,出现
了面向对象的开发方法.自80年代后期以来,相继出现了多种面向对象开发方法,现将其中几种典型的方法作一比较分析.
2.三种典型的面向对象开发方法
2.1 OMT/Rumbaugh
OMT(Object Modeling Technique)方法提出于1987年,曾扩展应用于关系数据库设计.1991年Jim Rumbaugh正式把OMT应用于面向对象的分析和设计.这种方法是在
实体关系模型上扩展了类、继承和行为而得到的.OMT覆盖了分析、设计和实现3个阶段,包括一组相互关联的类(class )、对象(object)、一般化(generalization)、继承(inheritance)、链(link)、链属性(link attribute)、聚合(aggregation)、操作(operation)、事件(event)、场景(scene)、属性(attribute)、子系统(subsystem)、模块(module)等概念.
OMT方法把分析时收集的信息构造在3种模型中,这些模型贯穿于每个步骤,在每个步骤中被不断地精化和扩充.对象模型用ER图描述问题域中的列象及其相互关系,用类和关系来刻画系统的静态结构,包括系统中的对象、对象之间的关系、类的属性和操作等特征.动态模型用事件和对象状态来刻画系统的动态特性,包括系统对象的事件序列、状态和操作.功能模型按照对象的操作来描述如何从输入给出输出的结果,描述动态模型的动作所定义对象操作的意义。
OMT方法包含分析、系统设计、对象设计和实现4个步骤,它定义了3种模型,这些模型贯穿于每个步骤,在每个步骤中被不断地精化和扩充。这3种模型是:对象模型,用类和关系来刻画系统的静态结构;动态膜型,用事件和对象状态来刻画系统的动态特性;功能模型,按照对象的操作来描述如何从输人给出输出结果。分析的目的是建立可理解的现实世界模型。系统设计确定高层次的开发策略。对象设计的目的是确定对象的细节,包括定义对象的界面、算法和操作。实现对象则在良好的面向对象编程风格的编码原则指导下进行。
开发的四个阶段如下:
(1)分析。基于问题和用户需求的描述,建立现实世界的模型。分析阶段的产物有:
●问题描述
●对象模型=对象图+数据词典
●动态模型=状态图+全局事件流图
●功能模型=数据流图+约束
(2)系统设计。结合问题域的知识和目标系统的系统结构(求解域),将目标系统
分解为子系统。
(3)对象设计。基于分析模型和求解域中的体系结构等添加的实现细节,完成系统设计。主要产物包括:
●细化的对象模型
●细化的动态模型
●细化的功能模型
(4)实现。将设计转换为特定的编程语言或硬件,同时保持可追踪性、灵活性和可扩展性。
OMT方法的一般过程包括分析建立可理解的现实世界模型、系统设计(确定高层次的开发策略和划分子系统)、对象设计(确定对象细节并引入新的中间结果)和实现对象4个步骤.OMT强调对“现实” 的模型化.这里的“现实”是指所面对的实际应用问题,即分析模型是对实际问题的抽象.分析模型中对象之间的关系反映了实际问题中对象之间的关系.
2.2 OOD/Booch
OOD(Object Oriented Design)方法是Grady Booch从1983年开始研究,1991年后走向成熟的一种方法。
OOD主要包括下述概念:类(class)、对象(object)、使用(uses)、实例化(instantiates)、继承(inherits)、元类(meta class)、类范畴(class category)、消息(message)、域(field)、操作(operation)、机制(mechanism)、模块(module)、子系统(subsystem)、过程(process)等。其中,使用及实例化是类间的静态关系,而动态对象之间仅有消息传递的连接。元类是类的类。类范畴是一组类,它们在一定抽象意义上是类同的。物理的一组类用模块来表达。机制是完成一个需求任务的一组类构成的结构。
Booch方法在面向对象的设计中主要强调多次重复和开发者的创造性。方法本身是一组启发性的过程式建议。OOD的一般过程:在一定抽象层次上标识类与对象;标识类与对象的语义;标识类与对象之间的关系(如继承、实例化、使用等);实现类与对象。
Booch方法的过程包括以下步骤:
(1)在给定的抽象层次上识别类和对象。
(2)识别这些对象和类的语义。
(3)识别这些类和对象之间的关系。
(4)实现类和对象。
这四种活动不仅仅是一个简单的步骤序列,而是对系统的逻辑和物理视图不断细化的迭代和渐增的开发过程。
类和对象的识别包括找出问题空间中关键的抽象和产生动态行为的重要机制。开发人员可以通过研究问题域的术语发现关键的抽象。语义的识别主要是建立前一阶段识别出的类和对象的含义。开发人员确定类的行为和类及对象之间的互相作用。该阶段利用状态转移图描述对象的状态的模型,利用时态图和对象图描述行为模型。
在关系识别阶段描述静态和动态关系模型。这些关系包括使用,实例化,继承,关联和聚集等。类和对象之间的可见性也在此时确定。
在类和对象的实现阶段要考虑如何用选定的编程语言实现,如何将类和对象组织成模块。在面向对象的设计方法中,Booch强调基于类和对象的系统逻辑视图与基于模块和进程的系统物理视图之间的区别。还区别了系统的静态和动态模型。然而,他的方法偏向于系统的静态描述,对动态描述支持较少。
Booch方法的力量在于其丰富的符号体系,包括:
●类图(类结构:静态视图)