上一讲鸡啄米讲了函数重载和函数模板以后,C++和C语言相似的语法就剩下后面要讲的数组了,这一讲开始鸡啄米就要讲C++所特有的一些概念和思想了。本节编程入门教程主要讲面向对象程序设计的基本思想和特点。另外,说明一点,以后鸡啄米会加一个大的教程分类,让大家更好的对琐碎的知识进行分类,比如这一讲的大的分类叫“类与对象”,标题是面向对象设计的基本思想和特点。
在编程入门教程的前言中,鸡啄米已经简单讲到了面向对象程序设计的几个基本概念,这一讲将做更深入的讨论。
计算机技术飞速发展,软件开发技术也同样经历了各种各样的变化,从早期的面向过程的结构化程序设计,到面向对象的程序设计,其实都是在寻找一种更能够提高可扩展性和可复用性的程序设计方法,这样才能更大限度的提高软件开发效率。现在的面向对象程序设计方法(OOP)通过抽象、封装、继承等手段,已经成为目前最能提高可扩展性和可复用性的程序设计方法,能够最大限度的提高软件生产能力,降低软件开发和维护的费用。
在面向对象程序设计方法之前普遍使用的是面向过程的结构化程序设计方法,它的主要思想就是,将一个复杂问题根据功能等分成一个个子问题,然后再接着细分,直到分解成具体的语句,这种方法固然有很多优点,但是有个比较大的缺点就是,这种方法中数据和函数是分开的,如果我们要修改数据结构,则有关的函数都必须修改,这样不但维护成本比较大,而且很容易遗漏一些应该修改的地方。
面向对象程序设计方法是对面向过程程序设计方法的继承和发展。这种程序设计方法认为,现实世界是由一些互相关联的实体组成的,这些实体就是面向对象方法中的对象,而对一些对象的共性的抽象描述,就是面向对象程序设计方法中最核心的概念--类。面向对象的程序设计方法就是运用面向对象的思维来描述现实问题,再用计算机语言解决该问题,这里的解决就是靠类和对象实现的,是对现实问题的高度概括、分类和抽象。
鸡啄米下面讲下面向对象程序设计方法的基本特点:抽象、封装、继承和多态。
1.抽象
面向对象方法中的抽象是指对具体问题即对象进行概括,抽出一类对象的共性并加以描述的过程。面向对象的软件开发中,首先应该对要解决的问题抽象成类,然后才是解决问题的过程。抽象有两个方面:数据抽象和行为抽象。数据抽象是描述某类对象的属性或状态,,行为抽象是描述某类对象的共同行为或共同功能。
鸡啄米就拿时钟给大家举个例子,要实现有关时钟的程序,首先要对时钟进行抽象。时钟有时、分、秒,我们用三个整型变量来存储,这就是数据抽象。时钟有显示时间和设置时间等功能,这就是行为抽象。用C++语言描述就是:
时钟(Clock):
数据抽象:
int Hout; int Minute; int Second;
行为抽象:
ShowTime(); SetTime();
上面并不是真正的C++代码,只是简单的列出了数据成员和函数成员的代码片段。
2.封装
把抽象出来的数据成员和函数成员结合形成一个整体,就是封装。封装的时候,我们可以把一些成员作为类和外界的接口,把其他的成员隐藏起来,以达到对数据访问权限的控制,这样可以使程序的各个部分改变时最低程度的影响其他部分,程序会更安全。
把数据和函数封装为一个可复用的模块,开发时可以利用已有的成果而不必每次都重复编写。我们只需要通过类提供的外部接口访问模块,并不需要知道内部的细节。C++中就是利用类的形式来实现封装的。下面是鸡啄米上面提到的时钟的具体封装形式及时钟类:
class Clock // class是关键字 Clock是类名 { public: // 提示下面是外部接口 void SetTime(int NewH,int NewM,int NewS); // 行为,函数成员 void ShowTime(); // 行为,函数成员 private: // 特定的访问权限 int Hour,Minute,Second; // 属性,数据成员 };
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-29266-1.html
想去存