▶5.1.1.1 面向对象软件开发方法简介
面向对象软件开发方法起源于面向对象的编程语言,它包括面向对象分析(OOA)、面向对象设计(OOD),面向对象实现(OOI)、面向对象测试(OOT)和面向对象系统维护(OOSM)。
一般认为,面向对象语言起源于20世纪60年代末出现的Simula语言,该语言引入了数据抽象和类的概念,但真正为面向对象程序设计奠定基础的是Smalltalk语言,它首先采用了“面向对象”一词。在Smalltalk语言中一切都是对象,Smalltalk的目标是软件尽可能以“自治”的单元来设计。直到今天,Smalltalk还被认为是最纯粹的面向对象语言之一。
Smalltalk的发布引起了人们的广泛关注,使得在20世纪80年代出现了各种面向对象语言蓬勃发展的局面。其中,有的是对传统语言的扩充,使之支持面向对象,如Object—C(1986年)、C++(1986年)等;有的是新开发的完全支持面向对象的语言,如Self(1987年)、Eiffe(1987年)等。
各种面向对象语言的出现和应用直接导致了面向对象的广泛应用。1986年,Grady Booch首先提出了“面向对象设计”这个概念。之后,投入到面向对象研究的人越来越多,一方面,面向对象方法向软件开发的前期阶段发展,包括面向对象设计、面向对象分析;另一方面,面向对象技术在越来越广泛的软硬件领域得以发展,如面向对象数据库、面向对象操作系统、面向对象开发环境、面向对象计算机体系结构等。
20世纪90年代以后,面向对象分析和面向对象设计方法逐渐走向实用,一些专家按照面向对象思想,对系统分析和设计工作的步骤、方法、图形工具等进行了详细的研究,提出了许多不同的实施方案,其中有P.Coad和E.Yourdon方法、Booch方法、J.Rambough的OMT方法和Ivar Jacobson的OOSE方法,以及集Booch,OMT和OOSE三者优点于一身的统一建模语言UML。
面向对象之所以能够如此迅速地发展,走向实用,并渗透到软硬件各个领域,绝不是人们吹捧的结果。关键在于面向对象看待现实世界的方式和现实世界的组织方式是一致的,它能够直接将问题域的结构映射到系统模型中。同时,面向对象从一开始就支持重用,这一点也为它的发展奠定了基础,因为重用能降低软件开发和维护的成本,提高软件质量。另外,由于面向对象语言所具有的“自治”特点,使得面向对象系统的可扩展性和维护性大大提高。正因为如此,人们相信在21世纪,面向对象方法和编程将占据支配地位。
▶5.1.1.2 面向对象软件开发方法特点
面向对象软件开发方法的基本思想是从现实世界中客观存在的事物(即对象)出发来构造软件系统,并在系统构造中尽可能地运用人类的自然思维方式。开发一个软件是为了解决某些问题,这些问题所涉及的业务范围称作该软件的问题域。面向对象软件开发方法强调直接以问题域(客观世界)中的事物为中心来思考问题、认识问题,并根据这些事物的本质特征,把它们抽象地表示为系统中的对象,作为系统的基本构成单位。这可以使系统直接地映射问题域,保持问题域中的事物及其相互关系的本来面貌。
面向对象方法的主要特点如下:(www.xing528.com)
(1)从问题域中客观存在的事物出发来构造软件系统,用对象作为对这些事物的抽象表示,并以此作为系统的基本构成单位。
(2)事物的静态特征(即可能用一些数据来表达的特征)用对象的属性表示,事物的动态特征(即事物的行为)用对象的操作表示。
(3)对象的属性与操作结合为一体,成为一个独立的实体,对外屏蔽其内部细节(称作封装)。
(4)对事物进行分类,把具有相同属性和操作的对象归为一类,类是这些对象的抽象描述,每个对象是它的类的一个实例。
(5)通过在不同程度上运用抽象的原则(较多或较少地忽略事物之间的差异),可以得到较一般的类和较特殊的类。特殊类继承一般类的属性和操作,面向对象软件开发方法支持对这种继承关系的描述与实现,从而简化系统的构造过程及其文档。
(6)复杂的对象可以用简单的对象作为其构成部分(称作聚合)。
(7)对象之间通过消息进行通信,以实现对象之间的动态联系。
(8)通过关联表达对象之间的静态关系。
从以上可以看出,在使用面向对象软件开发方法的系统中,以类的形式进行描述并通过对类的引用而创建的对象是系统的基本构成单位。这些对象对应着问题域中的各个事物,它们内部的属性与操作刻画了事物的静态特征和动态特征。对象类之间的继承关系、聚合关系、消息和关联如实地表达了问题域中事物之间实际存在的各种关系。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。