对面向对象程序设计的思考
2019-11-23毛红粉陈兰兰郝珂丽孙新杰
毛红粉 陈兰兰 郝珂丽 孙新杰
摘 要:随着近些年来计算机软件开发的大众化,面向对象的思想成为了一个迅速发展起来并逐渐被更多人所需要的思想研究领域。面向对象的思想对于我们计算机系的学生来说,是我们必须要掌握的一项基本的学科技能。在一个学期的面向对象编程学习过程中,综合了面向对象的三个特点,探讨了如何准确掌握面向对象思想。
关键词:计算机软件;思想研究;面向对象
1 面向对象的特性
1.1 继承性
设计语言中的继承主要指链接类的层次模型,它允许并鼓励类的重用。[1]一个基类A(也称作父类)它派生出了B类(子类),对于基类A来说,它有可供子类继承的部分,也有属于自己的不能被子类所继承的部分。这就类似于遗传方面,例如一个孩子和她父母都是大眼睛双眼皮,这就是说这个孩子继承了他父母的可供子类继承的部分;而例如当马和驴杂交产生骡子时,马和驴都是可育的,但是骡子却不具备这种能力,这就是说父类有属于自己的不能被子类进行继承的部分。继承可以从两个大方面进行探讨,一种是单继承,一种是多继承。如下图所示,就很好的解释了继承关系。
在上图中,生物均具有会呼吸的特性,水生生物和陆生生物均继承了生物会呼吸的特性,这属于单继承;与此同时水生生物又具有会游泳的特性,鱼是水生生物,它继承了水生生物的特性,同时它还拥有生物的特性,会游泳会呼吸,这属于多继承;鲸鱼和鲤鱼均属于鱼类,继承他们父类鱼的特性,但是鲸鱼用肺呼吸,鲤鱼用鳃呼吸;马和驴杂交产生骡子时,马和驴都是可育的,但是骡子却不具备这种能力;青蛙属于水陆两栖动物,继承自水生生物和陆生生物。
总而言之,继承是传递的,子类继承自父类,我们称之为间接继承。
1.2 封装性
封装是很容易理解的,它类似于我们现实生活中的打包,将每个成员所共有的封装起来然后定义其中一个成员的时候,在调出我们已经封装了的数据,对它进行重定义。一个类它可以分为三种属性:公有属性,私有属性,保护属性,即有三种成员函数:公有,私有和保护。举个例子,一个班级里有50个学生,在这个学生类中,我们可以把学生学号,姓名定义为学生类的私有成员,它不可被子类进行访问;对于年龄来说,作为每个成员所共有的,我们就可以将它单独封装起来,在结合每个成员不同的需求对他进行重定义。这种可以用友元函数来实现,以下面程序为例:
#include
using namespace std;
class beta;
class alpha
{
private:
int data;
public:
alpha():data(5){ }
friend int frifunc(alpha,beta);
};
class beta
{
private:
int data;
public:
beta():data(7){ }
friend int frifunc(alpha,beta);
};
int frifunc(alpha a,beta b)
{ return(a.data + b.data); }
int main()
{
alpha aa;
beta bb;
cout << frifunc(aa,bb)<< endl;
return 0;
}
运行结果为:12
在上述程序中,定义了两个类一个为beta类,一个为alpha;在alpha中定义了其私有成员整型的data,及其公有构造函数和一个友元函数frifunc,并给构造函数赋初值为5;在beta中也定义了其私有成员整型的data,及其公有构造函数和一个友元函数frifunc,并给构造函数赋初值为7;接着对于友元函数重定义,让它返回a.data与b.data之和,并将这个结果在主函数中输出。一个类的友元可以存取该类的私有成员,节省了成员函数调用的开销,[2]封装可以使得编程更加简便,其在面向对象编程中有不可或缺的作用。
1.3 多态性
多态在面相对象中指的是在同一个方法中,一段程序能够被多种类型对象使用,从而产生不同的结果。使用多态,不仅可以解决方法同名的问题,还可以使程序变得更加灵活,从而使程序的可扩展性和维护性得到了有效地提高。
2 基于面向对象的发展趋势
面向对象是从20世纪90年代发展起来的,而且很快的应用在各个层面,目前它的发展日趋成熟,而且面向对象的性能和优势也更有利于人们接受。面向对象应用在软件方面,使得软件的功能、灵活性、透明性日益增强。
2.1 人工智能语言
面向对象的技术目前已经广泛应用于人工智能语言方面,在人工智能語言方面面向对象的技术和分析方法的优势更容易的展现在人工智能应用的各个层次。在将来,面向对象将会更加会应用在各个系统。
2.2 数据库
面向对象技术在数据库的应用使得数据库的共享更加便利。虽然面向对象在数据库方面使得数据库的结构更加复杂,但是他的理解更加便于人们接受,而且面向对象使得数据库有了许多特点,例如代码共享、模块性、更加易于设计等诸多方面的特征,更加使面向对象在数据库的应用日益成熟。
2.3 并行处理
什么是并行处理呢,简单来说并行处理其实也是并发处理的具体化。并行处理和并发处理他们都是计算机领域的处理方式,并行处理使用面向对象中的消息和并行处理自己消息其实是有点不同的,但是并行处理应用到对象的消息其实使得并行处理在计算机内部更加快捷。应用面向对象的并行处理方式会在今后的发展更加成熟。
2.4 软件工程
目前有許多软件工程的开发都应用了对象,而使用对象让软件的发展更进一步,虽然目前有许多语言都应用了对象,例如C++等,但是对象的应用使得人们对其他语言进行重新开发,例如Cabol、Basic等语言。面向对象的应用让软件工程的开发更上一层楼。
3 大学生如何准确掌握面向对象的思想
对于我们计算机系的学生来说,面向对象的思想是我们学科学习中需要学生们掌握的一项基本的思想。准确掌握面向对象的思想,有助于我们编程能力的提高。对于学生来说,无论学习那一方面的知识都离不开上课认真听,下课多练习。关于大学生如何准确掌握面向对象的思想我们分了三个方面来讨论:
3.1 课前预习
基于C++的面向对象程序设计是从C语言的基础上发展起来的,其本质与C语言还是有很多的相似之处,在有了C语言程序设计的基础之下,理解C++不算太困难;但是C++程序设计又不像JAVA程序设计一样是一个单纯的面向对象的学科,所以在进行C++程序设计时要求我们处理好面向过程和面向对象的关系;在我们预习的时候,可以先将书本上的程序敲下来,这样面向对象的思想就会在我们的脑海里形成一个初步的认识。
3.2 课上练习
在课堂上,我们应该从学习算法开始,尽可能早些掌握面向对象的概念,把学与用结合起来,学生能立即体会到类概念对可视化编程和软件的再利用的重要性。在课前预习时,我们会遇到各种问题,而且也只是对面向对象程序语言设计有一个初步的了解,但并深刻,所以这个时候,在课堂上,尽可能地通过老师的讲解来理解课前遇到的各种专业问题,并进一步的对面向对象的类、构造函数等各个知识点进行深刻理解。认真听课,解决课前预习的问题,在老师讲课的同时,要了解面向对象的c++课程,教师的代码要理解每个代码的含义,也可以写出程序的知识。
3.3 课后复习
当我们接触一个新的事物的时候,不可能一下子全部掌握,所以需要在课后勤加练习,争取达到学以致用的目的。我们学习面向对象的思想,是为我们编程能力的提高打基础的。这就要求我们需要深入的了解面向对象的思想,而这的关键就是我们能否从客观的事物中抽象出类来。只有从客观事物中抽象出合理的、实用的类来,才有可能实现面向对象的程序设计。在课后,我们要讲课堂上老师讲的知识点并重新消化,如果不进行,我们所学到的将只会是一些比较容易理解的,而那些难的知识点我们是不会理解的,所以在课下要复习课堂上的,同时也要对书上的代码多编写几遍,以便于我们掌握的更加透彻。
4 结语
在面向对象的学习过程中,我们对于面向对象的概念、特性、发展趋势以及目前应用方面有了更多的熟知。而面向对象的思想对于我们计算机系的学生来说,是我们必须要掌握的一项基本的学科技能。继承性、多态性和封装性让面向对象在计算机等各个领域应用更多,在计算机领域,不单单只有面向对象一种程序设计,还有面向过程等方法的程序设计,多方法的程序设计让计算机、人工智能等领域的发展更快。不同方法的程序设计才能早就计算机、人工智能等领域的发展。
参考文献:
[1]米文丽.探究C++面向对象程序设计的几点思考[J].福建电脑,2016,32(03):149+127.
[2]张学文,章长钐,刘宇.C++语言的封装性[J].微计算机信息,1998(04):67-69.
基金:六盘水师范学院大学生科研项目(LPSSYDXS18018)