欢迎来到天天文库
浏览记录
ID:58891012
大小:657.50 KB
页数:105页
时间:2020-09-30
《C++课件第6章:类与对象.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第六章类与对象东南大学生物科学与医学工程学院夏小俊内容提要6.1类与对象传统的面向过程的程序设计是围绕功能进行的,用函数实现一个个功能。面向过程编程的特点是数据和函数分开。一个函数可以使用任何一组数据,而一组数据又能被多个函数所使用。程序=算法+数据结构面向对象的编程面向对象程序设计是围绕类和对象进行的,用一个个类和对象去表现现实世界。每一组数据都是有特定的用途的,是某种操作的对象。也就是说,一组操作调用一组数据。对象=算法+数据结构程序=(对象+对象+对象+……)+消息(方法)对象对象(object)是客观世界某一类事物的实例(insta
2、nce),或者说,客观世界是由千万个对象组成的。对象拥有自己的属性和行为,如电脑的各种硬件构成了电脑的静态特征,又称为属性(attribute)。同时,电脑又可以有运行软件、编辑信息等操作,这些动态特征称为行为(behavior)。与传统的结构体相比,对象的意义更深刻。类在C++中对象的类型称为类(class)。类代表了某一批对象的共性和特征。类是对象的抽象,而对象是类的具体实例(instance)。面向对象的程序设计具有以下三个特点:1.封装性(ecapsulation)2.继承(iniheritance)与派生性(derivation)
3、3.多态性(polymorphism)从传统的结构体到类传统的结构体封装了数据成员,类当中则包括函数成员,与现实世界更吻合;传统的结构体成员数据读写无限制,类当中则提供了权限设置,保护了数据的安全性;传统的结构体无继承特性,类则可以通过派生和继承简化程序编写,并提供多态性。类的定义classclassname{private://私有成员列表;public://公有成员列表;protected://保护成员列表;};//这里的分号不能缺少类中的权限设定符public(公共的)说明成员能从外部进行访问。private(私有的)说明成员不能从外
4、部进行访问。每种说明符可在类体中使用多次。访问限定符的作用域是从该说明符出现开始到下一个说明符之前或类体结束之前结束。如果在类体起始点无访问说明符,系统默认定义为私有(private)。类的封装与接口类把数据(事物的属性)和函数(事物的行为——操作)封装为一个整体;通常数据成员被说明成私有的,函数成员被说明成公有的;从外部对数据成员进行操作,通常只能通过公有函数来完成,内部数据受到了良好的保护;成员函数可以直接使用类定义中的任一成员,可以处理数据成员,也可调用函数成员。例:圆类circle-1classcircle{private:doub
5、ler;public:voidsetr(doubleR){r=R;}例:圆类circle-1doublegetr(){returnr;}voidprint(){cout<<“圆的半径是:"<6、的公有函数才能间接访问私有和保护成员。通过特定函数来改变成员数据,可以通过参数检查机制来保证数据操作的合理性。例:voidsetr(doubleR){if(R>0)r=R;}类外函数定义通常在类定义中,成员函数仅作声明。函数定义通常在类的说明之后进行,格式如下:返回值类型类名::函数名(参数表){……}//函数体其中运算符“::”称为作用域解析运算符(scoperesolutionoperator),它指出该函数是属于哪一个类的成员函数。例:圆类circle-2classcircle{private:doubler;public:voids7、etr(doubleR);doublegetr();voidprint();};例:圆类circle-2voidcircle::setr(doubleR){r=R;}doublecircle::getr(){returnr;}voidcircle::print(){cout<<"圆的半径是:"<8、储空间。数据区代码区对象1对象2数据区代码区对象n......数据区代码区对象的独立存储方案注意:区别同一个类的各个不同的对象的属性是由数据成员决定的,不同对象的数据成员的内容是
6、的公有函数才能间接访问私有和保护成员。通过特定函数来改变成员数据,可以通过参数检查机制来保证数据操作的合理性。例:voidsetr(doubleR){if(R>0)r=R;}类外函数定义通常在类定义中,成员函数仅作声明。函数定义通常在类的说明之后进行,格式如下:返回值类型类名::函数名(参数表){……}//函数体其中运算符“::”称为作用域解析运算符(scoperesolutionoperator),它指出该函数是属于哪一个类的成员函数。例:圆类circle-2classcircle{private:doubler;public:voids
7、etr(doubleR);doublegetr();voidprint();};例:圆类circle-2voidcircle::setr(doubleR){r=R;}doublecircle::getr(){returnr;}voidcircle::print(){cout<<"圆的半径是:"<8、储空间。数据区代码区对象1对象2数据区代码区对象n......数据区代码区对象的独立存储方案注意:区别同一个类的各个不同的对象的属性是由数据成员决定的,不同对象的数据成员的内容是
8、储空间。数据区代码区对象1对象2数据区代码区对象n......数据区代码区对象的独立存储方案注意:区别同一个类的各个不同的对象的属性是由数据成员决定的,不同对象的数据成员的内容是
此文档下载收益归作者所有