面向对象的设计思想是在原来结构化程序设计方法基础上的一个质的飞跃,是一种新的程序设计理念,是软件开发的一种方法,其本质是把数据和处理数据的过程当成一个整体—对象。本节将讲述面向对象的程序的一些基本概念。
面向过程其实是最为实际的一种思考方式,实际上,面向对象的方法也含有面向过程的思想。可以说面向过程是一种基础的方法,它考虑的是实际的实现。一般的面向过程是从上往下逐步求精,所以面向过程最重要的是模块化的思想方法。与面向对象相比,面向对象的方法主要是把事物对象化,对象包括属性与行为。当程序规模不是很大时,面向过程的方法还会体现出一种优势,因为程序的流程很清楚,用模块与函数的方法很好组织。
面向过程的程序设计方法主要由以下三种逻辑结构组成:
□顺序结构。顺序结构是一种线性、有序的结构,它依次执行各语句模块。
□循环结构。循环结构是重复执行一个或几个模块,直到满足某一条件为止。
□选择结构。选择结构是根据条件成立与否选择程序执行的通路。
采用面向过程的程序设计方法,程序结构清晰,易于阅读、测试、排错和修改。由于每个模块执行单一功能,模块间联系较少,使程序编制比过去更简单,程序可靠性更强,而且增加了可维护性,每个模块可以独立编制、测试。
面向对象编程(Object Oriented Programming, OOP)是一种计算机编程架构。OOP的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成。OOP达到了软件工程的三个主要目标,即重用性、灵活性和扩展性。
面向对象程序的主要结构特点有两个:一个是程序一般由类的定义和类的使用两部分组成,在主程序中定义各对象并规定它们之间传递消息的规律;另一个是程序中的一切操作都是通过面向对象发送消息来实现的,对象接收到消息后,启动有关方法完成相应的操作。
面向对象设计的最大优点就是软件具有可重用性。当人们对软件系统的要求有所改变时,不需要程序员做大量的工作就能使系统做相应的变化。
面向对象程序设计中的概念主要包括对象和类,分别介绍如下:
1)对象。从概念上讲,对象代表着正在创建的系统中的一个实体。在日常生活中,对象就是我们认识世界的基本单元。对象是现实世界中的一个实体,整个世界就是由各种各样的对象构成的。例如,一个人、一辆汽车、一个足球等。
2)类。类是对象的模板,是对一组具有共同的属性特征和行为特征的对象的抽象。例如,由一个个大学生构成的“大学生”类,其中的每一个大学生是“大学生”类的一个对象。一个类的所有对象都有相同的数据结构,并且共享相同的实现代码。类和对象之间的关系是抽象和具体的关系。
面向对象系统中最主要的特性是封装性、继承性和多态性,分别介绍如下:
1)封装性。在面向对象程序设计中,数据的抽象是在确定类时强调对象的共同点而忽略了它们的不同点的结果。数据的封装则是隐藏了数据的内部实现细节的结果,将数据抽象的外部接口与内部的实现细节清楚地分开。
2)继承性。以面向对象程序设计的观点来看,继承所表达的是对象与类之间的关系,这种关系使得某类对象可以继承另外一类的特征和能力。继承机制为程序提供了一种组织、构造和重用类的手段。继承使一个类(基类)的数据结构和操作被另一个类即派生类重用,在派生类中只需描述其基类中没有的数据和操作。这样一来,就避免了公用代码的重复开发,减少了代码和数据冗余。
3)多态性。面向对象程序设计中的多态性,是指不同的对象收到相同的消息时所产生的多种不同的行为方式。C++语言支持两种多态性,即编译时的多态性和运行时的多态性。编译时的多态性通过重载来实现;运行时的多态性通过虚函数来实现。程序运行的到底是函数的哪个版本,需要在运行时通过对象发送的消息来确定。