欢迎来到天天文库
浏览记录
ID:26884383
大小:377.82 KB
页数:61页
时间:2018-11-29
《c的面向对象基础》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、15.1 概述15.2 类和对象15.3 构造函数和析构函数15.4 继承与派生第15章C++的面向对象基础15.1概述C++不仅扩充了C面向过程的功能,而且增加了面向对象的功能,这就使C++成为能适应面向对象程序设计的现代大型语言。C++不是简单地对C做了某些改进,而是在C成功的基础上进行了一场革命。赋予C以新的生命力。客观世界中任何一个事物都可以看成一个对象。或者说,客观世界是由千千万万个对象组成的,它们之间通过一定的渠道相互联系,如图15.1示意。在实际生活中,人们往往在一个对象中进行活动,或者说对象是进行活动的基本单位。作为对象,它应该至少有
2、两个要素:一是从事活动的主体;二是活动的内容。要进行活动,或者是事先安排好一个活动计划,或者由外界临时通知。图15.1图15.2从计算机的角度看,一个对象应该包括两个要素:一是数据;二是需要进行的操作。对象就是一个包含数据以及与这些数据有关的操作的集合。图15.2表示一个对象是由数据和操作代码组成的。传统的面向过程程序设计是围绕功能进行的,用一个函数实现一个功能。所有的数据都是公用的,一个函数可以使用任意一组数据,而一组数据又能被多个函数所使用(见图15.3)。程序设计者必须考虑每一个细节,什么时候对什么数据进行操作。当程序规模较大、数据很多、操作种
3、类繁多时,程序设计者往往感到难以应付。图15.3面向对象程序设计采用新的思路。它面对的是一个个对象。所有的数据分别属于不同的对象。实际上,每一组数据都是有特定的用途的,是某种操作的对象。把相关的数据和操作放在一起,形成一个整体,与外界相对分隔。面向对象程序设计方法的一个重要特点就是“封装性”,把数据和操作代码封装在一个对象中。程序设计者的任务包括两个方面:一是设计对象,即决定把哪些数据和操作封装在一起;二是在此基础上怎样通知有关对象完成所需的任务。这时他如同一个总调度,不断地向各个对象发出命令,让这些对象活动起来,完成自己范围内的操作。各个对象的操作
4、完成了,整体任务也就完成了。显然,对一个大型任务来说,面向对象程序设计方法将是十分有效的,它能大大降低程序设计人员的工作难度,减少出错机会。15.2类和对象每一个实体都是对象。有一些对象是具有相同的结构和特性的。在C++中对象的类型称为“类”(class)。类代表了某一批对象的共性和特征。可以说:类是对象的抽象,而对象是类的具体实例。正如同结构体类型和结构体变量的关系一样,人们先声明一个结构体类型,然后用它去定义结构体变量。同一个结构体类型可以定义出多个不同的结构体变量。在C++中也是先声明一个“类”类型,然后用它去定义若干个同类型的对象。对象就是一
5、个“类”类型的变量。类是用来定义对象的一种抽象数据类型,或者说它是产生对象的模板。它的性质和其他数据类型(如整型、实型、枚举类型、结构体类型)相同。在一开始时弄清对象和类的关系是十分重要的。C++对C的改进,最重要的就是增加了“类”这样一种数据类型。所以C++开始时被称为“带类的C”。所有面向对象的语言都提供了这种数据类型。在C++中怎样声明一个“类”类型呢?其方法和声明一个结构体类型是相似的。下面是我们已熟悉的声明一个结构体类型:structstudent{intnum;charname[10];charsex;};structstudentstu
6、dent1,student2;上面声明了一个名为student的结构体类型并定义了两个结构体变量student1和student2。可以看到它只包括数据(变量),没有包括操作。如果希望对结构体变量中各成员赋值或输出它们的值,需要另外编写有关的操作语句。结构体变量中各成员在本作用域中都是“敞开”的,大家都可以用,而且不受任何限制。这就造成程序的不安全。现在我们声明一个类:classstud//以class开头{intnum;charname[10];charsex;//以上3行是数据成员voiddisplay()//这是成员函数{cout<<"num:
7、"<8、d中的成员都对外界隐蔽,外界不能调用它们。只有本类中的函数display可以调用同一类中的数据。在本类中没有
8、d中的成员都对外界隐蔽,外界不能调用它们。只有本类中的函数display可以调用同一类中的数据。在本类中没有
此文档下载收益归作者所有