与华大学出版社 TSINGHUA UNIVERSITY PRESS 第2章面向对象方法学引论 21面向对象方法学概述 22面向对象的概念 23面向对象建模 24对象模型 2.5动态模型
第2章 面向对象方法学引论 2.1 面向对象方法学概述 2.2 面向对象的概念 2.3 面向对象建模 2.4 对象模型 2.5 动态模型
些大学出版社 TSINGHUA UNIVERSITY PRESS 2.6功能模型 2.73种模型之间的关系 28小结 习题
2.6 功能模型 2.7 3种模型之间的关系 2.8 小结 习题
些大学出版社 TSINGHUA UNIVERSITY PRESS 传统的软件工程方法学曾经给软件产业带来巨 大进步,部分地缓解了软件危机,使用这种方法学 开发的许多中、小规模软件项目都获得了成功。但 是,人们也注意到当把这种方法学应用于大型软件 产品的开发时,似乎很少取得成功。 在20世纪60年代后期出现的面向对象编程语言 Simula-67中首次引入了类和对象的概念,自20世 纪80年代中期起,人们开始注重面向对象分析和设 计的研究,逐步形成了面向对象方法学。到了20世 纪90年代,面向对象方法学已经成为人们在开发软 件时首选的范型。面向对象技术已成为当前最好的 软件开发技术
传统的软件工程方法学曾经给软件产业带来巨 大进步,部分地缓解了软件危机,使用这种方法学 开发的许多中、小规模软件项目都获得了成功。但 是,人们也注意到当把这种方法学应用于大型软件 产品的开发时,似乎很少取得成功。 在20世纪60年代后期出现的面向对象编程语言 Simula-67中首次引入了类和对象的概念,自20世 纪80年代中期起,人们开始注重面向对象分析和设 计的研究,逐步形成了面向对象方法学。到了20世 纪90年代,面向对象方法学已经成为人们在开发软 件时首选的范型。面向对象技术已成为当前最好的 软件开发技术
些大学出版社 TSINGHUA UNIVERSITY PRESS 21面向对象方法学概述 211面向对象方法学的要点 面向对象方法学的出发点和基本原则,是尽可 能模拟人类习惯的思维方式,使开发软件的方法与 过程尽可能接近人类认识世界解决问题的方法与过 程,也就是使描述问题的问题空间(也称为问题域 与实现解法的解空间(也称为求解域在结构上尽可 能一致
面向对象方法学的出发点和基本原则,是尽可 能模拟人类习惯的思维方式,使开发软件的方法与 过程尽可能接近人类认识世界解决问题的方法与过 程,也就是使描述问题的问题空间(也称为问题域) 与实现解法的解空间(也称为求解域)在结构上尽可 能一致。 2.1 面向对象方法学概述 2.1.1 面向对象方法学的要点
些大学出版社 TSINGHUA UNIVERSITY PRESS 客观世界的问题都是由客观世界中的实体及实 体相互间的关系构成的。我们把客观世界中的实体 抽象为问题域中的对象(obec)。因为所要解决的 问题具有特殊性,因此,对象是不固定的。一个雇 员可以作为一个对象,一家公司也可以作为一个对 象,到底应该把什么抽象为对象,由所要解决的问 题决定
客观世界的问题都是由客观世界中的实体及实 体相互间的关系构成的。我们把客观世界中的实体 抽象为问题域中的对象(object)。因为所要解决的 问题具有特殊性,因此,对象是不固定的。一个雇 员可以作为一个对象,一家公司也可以作为一个对 象,到底应该把什么抽象为对象,由所要解决的问 题决定
些大学出版社 TSINGHUA UNIVERSITY PRESS 从本质上说,用计算机解决客观世界的问题, 是借助于某种程序设计语言的规定,对计算机中的 实体施加某种处理,并用处理结果去映射解。我们 把计算机中的实体称为解空间对象。显然,解空间 对象取决于所使用的程序设计语言。例如,汇编语 言提供的对象是存储单元;面向过程的高级语言提 供的对象,是各种预定义类型的变量、数组、记录 和文件等等。一旦提供了某种解空间对象,就隐含 规定了允许对该类对象施加的操作
从本质上说,用计算机解决客观世界的问题, 是借助于某种程序设计语言的规定,对计算机中的 实体施加某种处理,并用处理结果去映射解。我们 把计算机中的实体称为解空间对象。显然,解空间 对象取决于所使用的程序设计语言。例如,汇编语 言提供的对象是存储单元;面向过程的高级语言提 供的对象,是各种预定义类型的变量、数组、记录 和文件等等。一旦提供了某种解空间对象,就隐含 规定了允许对该类对象施加的操作
些大学出版社 TSINGHUA UNIVERSITY PRESS 从动态观点看,对对象施加的操作就是该对象 的行为。在问题空间中,对象的行为是极其丰富多 彩的,然而解空间中的对象的行为却是非常简单呆 板的。因此,只有借助于十分复杂的算法,才能操 纵解空间对象从而得到解。这就是人们常说的“语 义断层”,也是长期以来程序设计始终是一门学问 的原因。 通常,客观世界中的实体既具有静态的属性又 具有动态的行为。然而传统语言提供的解空间对象 实质上却仅是描述实体属性的数据,必须在程序中 从外部对它施加操作,才能模拟它的行为
从动态观点看,对对象施加的操作就是该对象 的行为。在问题空间中,对象的行为是极其丰富多 彩的,然而解空间中的对象的行为却是非常简单呆 板的。因此,只有借助于十分复杂的算法,才能操 纵解空间对象从而得到解。这就是人们常说的“语 义断层” ,也是长期以来程序设计始终是一门学问 的原因。 通常,客观世界中的实体既具有静态的属性又 具有动态的行为。然而传统语言提供的解空间对象 实质上却仅是描述实体属性的数据,必须在程序中 从外部对它施加操作,才能模拟它的行为
些大学出版社 TSINGHUA UNIVERSITY PRESS 众所周知,软件系统本质上是信息处理系统。 数据和处理原本是密切相关的,把数据和处理人为 地分离成两个独立的部分,会增加软件开发的难度。 与传统方法相反,面向对象方法是一种以数据或信 息为主线,把数据和处理相结合的方法。面向对象 方法把对象作为由数据及可以施加在这些数据上的 操作所构成的统一体。对象与传统的数据有本质区 别,它不是被动地等待外界对它施加操作,相反, 它是进行处理的主体。必须发消息请求对象主动地 执行它的某些操作,处理它的私有数据,而不能从 外界直接对它的私有数据进行操作
众所周知,软件系统本质上是信息处理系统。 数据和处理原本是密切相关的,把数据和处理人为 地分离成两个独立的部分,会增加软件开发的难度。 与传统方法相反,面向对象方法是一种以数据或信 息为主线,把数据和处理相结合的方法。面向对象 方法把对象作为由数据及可以施加在这些数据上的 操作所构成的统一体。对象与传统的数据有本质区 别,它不是被动地等待外界对它施加操作,相反, 它是进行处理的主体。必须发消息请求对象主动地 执行它的某些操作,处理它的私有数据,而不能从 外界直接对它的私有数据进行操作
些大学出版社 TSINGHUA UNIVERSITY PRESS 面向对象方法学所提供的“对象”概念,是让 软件开发者自己定义或选取解空间对象,然后把软 件系统作为一系列离散的解空间对象的集合。应该 使这些解空间对象与问题空间对象尽可能一致。这 些解空间对象彼此间通过发送消息而相互作用,从 而得出问题的解。也就是说,面向对象方法是一种 新的思维方法,它是把程序看作是相互协作而又彼 此独立的对象的集合。每个对象就像一个微型程序, 有自己的数据、操作、功能和目的。这样做就向着 减少语义断层的方向迈了一大步,在许多系统中解 空间对象都可以直接模拟问题空间的对象,解空间 与问题空间的结构十分一致,因此,这样的程序易 于理解和维护
面向对象方法学所提供的“对象”概念,是让 软件开发者自己定义或选取解空间对象,然后把软 件系统作为一系列离散的解空间对象的集合。应该 使这些解空间对象与问题空间对象尽可能一致。这 些解空间对象彼此间通过发送消息而相互作用,从 而得出问题的解。也就是说,面向对象方法是一种 新的思维方法,它是把程序看作是相互协作而又彼 此独立的对象的集合。每个对象就像一个微型程序, 有自己的数据、操作、功能和目的。这样做就向着 减少语义断层的方向迈了一大步,在许多系统中解 空间对象都可以直接模拟问题空间的对象,解空间 与问题空间的结构十分一致,因此,这样的程序易 于理解和维护
些大学出版社 TSINGHUA UNIVERSITY PRESS 概括地说,面向对象方法具有下述4个要点: (1)认为客观世界是由各种对象组成的,任何事物 都是对象,复杂的对象可以由比较简单的对象以某 种方式组合而成。按照这种观点,可以认为整个世 界就是一个最复杂的对象。因此,面向对象的软件 系统是由对象组成的,软件中的任何元素都是对象, 复杂的软件对象由比较简单的对象组合而成。 由此可见,面向对象方法用对象分解取代了传 统方法的功能分解
概括地说,面向对象方法具有下述4个要点: (1) 认为客观世界是由各种对象组成的,任何事物 都是对象,复杂的对象可以由比较简单的对象以某 种方式组合而成。按照这种观点,可以认为整个世 界就是一个最复杂的对象。因此,面向对象的软件 系统是由对象组成的,软件中的任何元素都是对象, 复杂的软件对象由比较简单的对象组合而成。 由此可见,面向对象方法用对象分解取代了传 统方法的功能分解