
1.1 面向对象的基础知识
面向对象(Object-Oriented,简称OO)方法作为一种独具优越性的新方法正引起全世界越来越广泛的关注和高度的重视,被誉为“研究高技术的好方法”,更是当前计算机界关心的重点。
面向对象的实质是主张从客观世界固有的事物出发来构造系统,提倡采用人类在现实生活中常用的思维方法来认识、理解和描述客观事物,强调最终建立的系统能够映射问题域,也就是说,系统中的对象以及对象之间的关系能够如实地反映问题域中固有事物及其关系。
OO方法起源于面向对象的编程语言(简称OOPL)。20世纪50年代后期,在用FORTRAN语言编写大型程序时,常出现变量名在程序不同部分发生冲突的问题。鉴于此,ALGOL语言的设计者在ALGOL 60中采用以“Begin…End”为标识的程序块,使块内变量名是局部的,以避免它们与程序中块外的同名变量相冲突。这是编程语言中首次提供封装(保护)的尝试。此后程序块结构广泛地应用于高级语言如Pascal、Ada、C之中。
20世纪60年代中后期,Simula语言在ALGOL基础上研制开发,它将ALGOL的块结构概念向前发展一步,提出对象的概念,并使用类,同时也支持类继承。20世纪70年代,Smalltalk语言诞生,它以Simula的类为核心概念,很多内容借鉴于Lisp语言。由Xerox公司经过对Smautalk 72、76持续不断的研究和改进之后,于1980年推出商品化的产品,它在系统设计中强调对象概念的统一,引入对象、对象类、方法、实例等概念和术语,采用动态联编和单继承机制。
从20世纪80年代起,人们在原来的基础上提出的有关信息隐蔽和抽象数据类型等概念,以及由Modula 2、Ada和Smalltalk等语言所奠定的基础,再加上客观需求的推动,进行了大量的理论研究和实践探索,不同类型的面向对象语言逐步地发展和建立并完整起来。
20世纪80年代以来,人们将面向对象的基本概念和运行机制运用到其他领域,获得了一系列相应领域的面向对象的技术。面向对象方法已被广泛地应用于程序设计语言、形式定义、设计方法学、操作系统、分布式系统、人工智能、实时系统、数据库、人机接口、计算机体系结构以及并发工程、综合集成工程等,在许多领域的应用都得到了很大的发展。
1986年在美国举行了首届“面向对象编程、系统、语言和应用(OOPSLA’86)”国际会议,使面向对象受到世人瞩目,其后每年都举行一次,这进一步标志OO方法的研究已普及全世界。
面向对象的核心概念包括领域、类及类型、消息和服务、接口、封装、抽象、继承、组件图等。以下将分别展开论述。