面向对象是一种先进的涉及方法学,也是一种认知方法学,相应的程序设计语言是SMULA67。20世纪80年代以来,Smalltalk 和C++成为人们普遍接受的面向对象程序设计语言。
面向对象设计方法是一种支持模块化设计和软件重用的式即可行的编程方法。它把程序设计的主要活动集中在建立对象和对象之间的联系上,从而完成所需要的计算。一个面向对象的程序就是相互两系的对象的集合。
现实世界可以抽象为对象和对象的集合,所以面向对象的程序设计方法学是一种更接近现实世界的、更自然的程序设计学。在传统的程序设计方法中可以认为:程序=数据结构+算法;在面向对象程序设计方法中可以认为:程序=(对象+对象+……)。
面向对象设计方法的基本思想是封装和可扩展性。
面向对象设计就是把数据结构和数据结构上的操作算法封装在一个对象之中。对象以对象名封装的数据结构和可施加在这些数据上的私有操作组成的。对象的数据结构描述了对象的状态,对象的操作是对象的行为。例如,定义了一个日期时间类,其状态由“年,月,日,时,分,秒”等属性值组成,其行为由“设置事件”、“显示时间“等操作组成。
面向对象程序设计中,操作名列在封装对象的界面上,当其他对象要启动它的某个操作时,以操作名发一条消息,该对象接收消息,执行具体的行为动作序列,完成对成员数据加工。例如,在学生管理应用系统中,以“显示学生”发一条消息,就可以把相应的代码激活,完成对学生数据的显示。
当一个面向对象的程序运行完毕时,各对象也就达到了各自的终态,输入、输出也由对象自己完成。这种全封装的计算实体给软件带来了模块性、安全性的优点。因为它基本没有数据耦合,对象没有因操作而产生边界效应,出了错可以很快的找到原因,易于维护和修改。
面向对象程序设计的可扩展性体现在继承性和行为扩展两个方面。
对象具有一种层次关系。每个对象可以有子对象。子对象可以继承父对象的数据结构和操作,继承的部分就是重用的成分。另一方面,子对象还可以增加新的数据结构和新的操作。子对象新增加的部分就是子对象对付对象发展的部分。
面向对象程序设计方法的行为扩展是值,可以方便地增加程序代码来扩展对象的行为而不会影响对象的其他操作。
面向对象程序设计方发除了封装和继承性外,还具有如多态、动态联编等特性。
面向对象程序设计方法所支持的封装、继承等特性提供了同时表示、同事管理程序和数据的统一框架。数据库研究人员通过借鉴和吸收面向对象的方法和技术,提出了面向对象数据模型,把面向对象方法和数据库技术结合起来产生了面向对象数据库系统。