网站导航:首页 -> 软件水平考试 -> 软件水平考试指导 -> 面向对象方法综述

面向对象方法综述

  八十年代末以来,随着面向对象技术成为研究的热点出现了几十种支持软件开发的面向对象方法。其中,booch, coad/yourdon, omt, 和jacobson的方法在面向对象软件开发界得到了广泛的认可。特别值得一提的是统一的建模语言uml
(unified modeling language),该方法结合了booch, omt, 和jacobson方法
的优点,统一了符号体系,并从其它的方法和工程实践中吸收了许多经过实际检验的概念和技术。uml方法自去年提出后到现在已发展到1.1版,并已提交给对象管理集团omg,申请成为面向对象方法的标准。
  面向对象方法都支持三种基本的活动:识别对象和类,描述对象和类之间的关系,以及通过描述每个类的功能定义对象的行为。
  为了发现对象和类,开发人员要在系统需求和系统分析的文档中查找名词和名词短语,包括可感知的事物(汽车、压力、传感器);角色(母亲、教师、政治家);事件(着陆、中断、请求);互相作用(借贷、开会、交叉);人员;场所;组织;设备;和地点。通过浏览使用系统的脚本发现重要的对象和其责任,是面向对象分析和设计过程的初期重要的技术。
  当重要的对象被发现后,通过一组互相关联的模型详细表示类之间的关系和对象的行为,这些模型从四个不同的侧面表示了软件的体系结构:静态逻辑、动态逻辑、静态物理和动态物理。
  静态逻辑模型描述实例化(类成员关系)、关联、聚集(整体/部分)、和一般化(继承)等关系。这被称为对象模型。一般化关系表示属性和方法的继承关系。定义对象模型的图形符号体系通常是从用于数据建模的实体关系图导出的。对设计十分重要的约束,如基数(一对一、一对多、多对多),也在对象模型中表示。
  动态逻辑模型描述对象之间的互相作用。互相作用通过一组协同的对象,对象之间消息的有序的序列,参与对象的可见性定义,来定义系统运行时的行为。booch方法中的对象交互作用图被用来描述重要的互相作用,显示参与的对象和对象之间按时间排序的消息。可见性图用来描述互相作用中对象的可见性。对象的可见性定义了一个对象如何处于向它发送消息的方法的作用域之中。例如,它可以是方法的参数、局部变量、新的对象、或当前执行方法的对象的部分。
  静态物理模型通过模块描述代码的布局。动态物理模型描述软件的进程和线程体系结构。
以下章节我们将简要介绍上述面向对象方法,并对这些方法进行比较。
***********************************************************************
  booch方法的过程包括以下步骤:
  . 在给定的抽象层次上识别类和对象
  . 识别这些对象和类的语义
  . 识别这些类和对象之间的关系
  . 实现类和对象
  这四种活动不仅仅是一个简单的步骤序列,而是对系统的逻辑和物理视图不断细化的迭代和渐增的开发过程。
  类和对象的识别包括找出问题空间中关键的抽象和产生动态行为的重要机制。开发人员可以通过研究问题域的术语发现关键的抽象。语义的识别主要是建立前一阶段识别出的类和对象的含义。开发人员确定类的行为(即方法)和类及对象之间的互相作用(即行为的规范描述)。该阶段利用状态转移图描述对象的状态的模型,利用时态图(系统中的时态约束)和对象图(对象之间的互相作用)描述行为模型。
  在关系识别阶段描述静态和动态关系模型。这些关系包括使用、实例化、继承、关联和聚集等。类和对象之间的可见性也在此时确定。

  在类和对象的实现阶段要考虑如何用选定的编程语言实现,如何将类和对象组织成模块。
  在面向对象的设计方法中,booch强调基于类和对象的系统逻辑视图与基于模块和进程的系统物理视图之间的区别。他还区别了系统的静态和动态模型。然而,他的方法偏向于系统的静态描述,对动态描述支持较少。
  booch方法的力量在于其丰富的符号体系,包括:
  . 类图(类结构-静态视图)
  . 对象图(对象结构-静态视图)
  . 状态转移图(类结构-动态视图)
  . 时态图(对象结构-动态视图)
  . 模块图(模块体系结构)
  . 进程图(进程体系结构)
  用于类和对象建模的符号体系使用注释和不同的图符(如不同的箭头)表达详细的信息。booch建议在设计的初期可以用符号体系的一个子集,随后不断添加细节。对每一个符号体系还有一个文本的形式,由每一个主要结构的描述模板组成。符号体系由大量的图符定义,但是,其语法和语义并没有严格地定义。
***********************************************************************
  rumbaugh的omt方法从三个视角描述系统,相应地提供了三种模型,对象模型,动态模型和功能模型。对象模型描述对象的静态结构和它们之间的关系。主要的概念包括: