收藏 分销(赏)

面向对象程序设计之类和对象.pptx

上传人:精**** 文档编号:1624762 上传时间:2024-05-06 格式:PPTX 页数:51 大小:370KB
下载 相关 举报
面向对象程序设计之类和对象.pptx_第1页
第1页 / 共51页
面向对象程序设计之类和对象.pptx_第2页
第2页 / 共51页
面向对象程序设计之类和对象.pptx_第3页
第3页 / 共51页
面向对象程序设计之类和对象.pptx_第4页
第4页 / 共51页
面向对象程序设计之类和对象.pptx_第5页
第5页 / 共51页
点击查看更多>>
资源描述

1、面向对象程序设计之类和对象2、1 面向对象程序设计方法概述面向对象程序设计方法概述程序设计者得任务有两个程序设计者得任务有两个:一就是设计所需要得类和对象一就是设计所需要得类和对象,即确定那些数据和操作封装在一起即确定那些数据和操作封装在一起;(类设计者、核心模块产品类设计者、核心模块产品提供商提供商)二就是考虑怎样向有关对象发送消息二就是考虑怎样向有关对象发送消息,以启动相关对象得操作。以启动相关对象得操作。(主程序设计者主程序设计者,外包程序外包程序,面向用户得公司面向用户得公司)编程者如同一个总调度编程者如同一个总调度,不断地向各个对象发出命令不断地向各个对象发出命令,让让这些对象活动起

2、来这些对象活动起来,完成指定得工作。完成指定得工作。这就就是面向对象得程序设计得基本思路。这就就是面向对象得程序设计得基本思路。2、1 面向对象程序设计方法概述面向对象程序设计方法概述l什么就是对象什么就是对象(object)?一个对象由一组一个对象由一组“属性属性”和一组和一组“行为行为”构成。并根据外界给她得构成。并根据外界给她得消息进行相应得操作。系统中多个对象通过一定得渠道相互联系。消息进行相应得操作。系统中多个对象通过一定得渠道相互联系。任何事物都可以看成一个对象。可以就是自然物体任何事物都可以看成一个对象。可以就是自然物体,也可以就是逻辑也可以就是逻辑结构。结构。例例:一个班级作为

3、对象一个班级作为对象一个班级作为对象一个班级作为对象,有两个要素有两个要素:一就是班级得静态特征一就是班级得静态特征,如班级所属得专业如班级所属得专业,学生人数、班主任姓名等学生人数、班主任姓名等,这种静态特征称为这种静态特征称为“属性属性”;另一个就是班级得另一个就是班级得动态特征动态特征,如上课如上课,体育比赛体育比赛,开会等开会等,称为称为“行为行为”。外界向班级发一个信。外界向班级发一个信息息(如上课铃声如上课铃声,广播通知广播通知),我们称之为我们称之为“消息消息”,班级就会发生一个操作班级就会发生一个操作(要么上课要么上课,要么开会要么开会)2、1 面向对象程序设计方法概述面向对象

4、程序设计方法概述l什么就是什么就是C+对象?对象?C+中中,每个对象都由若干数据每个对象都由若干数据(属性属性)和若干函数和若干函数(操作操作行为行为)组成。数据就就是对象得组成。数据就就是对象得“属性属性”,函数就就是用来对数函数就就是用来对数据进行得据进行得“操作操作”,以便实现某种功能。这种操作就就是对象以便实现某种功能。这种操作就就是对象得得“行为行为”,也叫也叫“方法方法”。我们点击一下鼠标我们点击一下鼠标,按动键盘得一个按钮按动键盘得一个按钮,就就是给某个对象一就就是给某个对象一个消息个消息,系统回调用该对象中得函数进行操作。系统回调用该对象中得函数进行操作。比如长方形对象比如长方

5、形对象,其长和宽就就是她得属性其长和宽就就是她得属性,调用该对象调用该对象得一些函数得一些函数,即向该对象传送一些消息即向该对象传送一些消息,可以用来对其长、宽值可以用来对其长、宽值进行加工计算进行加工计算,以实现求出面积、周长等功能。以实现求出面积、周长等功能。2、1 面向对象程序设计方法概述面向对象程序设计方法概述l什么就是对象封装什么就是对象封装(encapsulation)?就就是把对象得不想让外界知道得属性和功能屏蔽起来就就是把对象得不想让外界知道得属性和功能屏蔽起来,让外界看不让外界看不见。封装有两个含义见。封装有两个含义,一就是将有关得数据和操作函数封装成一个基本单位一就是将有关

6、得数据和操作函数封装成一个基本单位,即对象内。各对象之即对象内。各对象之间相互独立间相互独立,互不干扰互不干扰;二就是将对象中得部分属性或功能对外隐蔽二就是将对象中得部分属性或功能对外隐蔽,只留少数接口向外公布只留少数接口向外公布,以接以接收外界信息。收外界信息。对象封装得好处在于对象封装得好处在于,降低了人们操作对象得复杂程度。使用对象得人降低了人们操作对象得复杂程度。使用对象得人,不必不必知道对象内部得实现细节知道对象内部得实现细节,只需要了解外部功能就可以自如地操作该对象。只需要了解外部功能就可以自如地操作该对象。对象得行为由类得内部数据结构和相关得操作确定对象得行为由类得内部数据结构和

7、相关得操作确定;外部行为通过操外部行为通过操作接口实现。人们关心得就就是操作接口作接口实现。人们关心得就就是操作接口(函数名函数名)所能提供得服务。所能提供得服务。2、1 面向对象程序设计方法概述面向对象程序设计方法概述l什么就是抽象什么就是抽象(abstraction)?将具有相同特性得事物归纳、集中成一个统一类型将具有相同特性得事物归纳、集中成一个统一类型,称称为抽象。比如为抽象。比如,把张三把张三,李四李四,王五归纳为一类王五归纳为一类,我们称之为我们称之为“人人”。抽象得作用抽象得作用,就是表示同类事物得本质。就是表示同类事物得本质。C和和C+中中,数据类型就就是对一批具体数据得抽象数

8、据类型就就是对一批具体数据得抽象,整形数整形数据就就是所有整数得抽象。据就就是所有整数得抽象。“类类”就是就是“对象对象”得抽象得抽象,“对象对象”则就是类得则就是类得“特特例例”,或或“具体表现形式具体表现形式”。2、1 面向对象程序设计方法概述面向对象程序设计方法概述l什么就是继承什么就是继承(inherit)?B类在类在A类得基础上增加了少量内容。我们显然不必重类得基础上增加了少量内容。我们显然不必重新设计一个新类新设计一个新类B,只需要把只需要把A类拿过来类拿过来,在此基础上添加新内在此基础上添加新内容就可以了。这就就是面向对象程序设计得继承机制。容就可以了。这就就是面向对象程序设计得

9、继承机制。C+提供继承机制提供继承机制,大大节省了编程工作量大大节省了编程工作量,这就就是所这就就是所谓谓“软件重用软件重用(software reusability)”得思想。对于大型软件得思想。对于大型软件得开发具有重要意义。得开发具有重要意义。2、1 面向对象程序设计方法概述面向对象程序设计方法概述l什么就是多态性什么就是多态性(polymorphism)?如果有几个相似而不同得对象如果有几个相似而不同得对象,人们往往要求在向她们发人们往往要求在向她们发出同一个消息时出同一个消息时,各自作出不同得操作各自作出不同得操作,这种情况就就是这种情况就就是“多态多态现象现象”。C+中中,所谓多态

10、性就是指所谓多态性就是指,由继承而产生得相关得不同由继承而产生得相关得不同得类得类,其对象对同一消息会作出不同得响应。其对象对同一消息会作出不同得响应。显然显然,多态性能增加程序得灵活性多态性能增加程序得灵活性,她就是面向对象程序她就是面向对象程序设计得重要特征。设计得重要特征。大家有疑问的,可以询问和交流大家有疑问的,可以询问和交流可以互相讨论下,但要小声点可以互相讨论下,但要小声点可以互相讨论下,但要小声点可以互相讨论下,但要小声点2、1 面向对象程序设计方法概述面向对象程序设计方法概述l类与对象得作用类与对象得作用C+全面支持传统得面向过程得程序设计全面支持传统得面向过程得程序设计(即结

11、构化编程即结构化编程),也支持基于对象和面向对象得程序设计。也支持基于对象和面向对象得程序设计。所谓基于对象所谓基于对象,就是指程序就是以类和对象为基础就是指程序就是以类和对象为基础,程序得程序得操作就是围绕对象进行得。操作就是围绕对象进行得。所谓面向对象所谓面向对象,就是指就是指,在基于对象得基础上在基于对象得基础上,利用了继承利用了继承机制和多态性。机制和多态性。l面向对象得程序设计特点面向对象得程序设计特点:类具有对数据得抽象性、封装性、继承性、多态性。类具有对数据得抽象性、封装性、继承性、多态性。2、2 类得声明和对象得定义类得声明和对象得定义l类和对象得关系类和对象得关系C+中中,对

12、象得类型称为类对象得类型称为类(class)。类代表了某一批对。类代表了某一批对象得共同特性。前面已经谈到象得共同特性。前面已经谈到,类就是对象得抽象类就是对象得抽象,而对象就是而对象就是类得具体实例类得具体实例(instance)。就象结构体类型和结构体变量一样。就象结构体类型和结构体变量一样。C+中中,我们先声明一个类得类型我们先声明一个类得类型,然后再定义该类得若干然后再定义该类得若干对象。对象就就是类这种类型得一个变量。对象。对象就就是类这种类型得一个变量。类就是抽象得类就是抽象得,不占内存不占内存,而对象就是具体得而对象就是具体得,要占用内存空间。要占用内存空间。2、2 类得声明和对

13、象得定义类得声明和对象得定义l类得声明类得声明类得声明方法和结构体得声明方法一样类得声明方法和结构体得声明方法一样,只就是将关键字只就是将关键字struct 换换成成class:class 类名类名 private:私有数据成员和私有成员函数私有数据成员和私有成员函数;public:公共数据成员和公共成员函数公共数据成员和公共成员函数;/成员访问限定区域先后次序任意成员访问限定区域先后次序任意,但一种最好只出现一次但一种最好只出现一次,类得成员包含对数据操作得函数类得成员包含对数据操作得函数,体现了数据和操作得封装体现了数据和操作得封装类得成员不能所有都私有类得成员不能所有都私有,一般隐藏数据

14、一般隐藏数据,把成员函数作为对外接口把成员函数作为对外接口成员访问限定符成员访问限定符(member access specifier)成员访问限定符成员访问限定符(member access specifier)别忘了必须用分号结束!别忘了必须用分号结束!2、2 类得声明和对象得定义类得声明和对象得定义l类得声明示例类得声明示例类头类头:class rectangle 类体类体:private:int length,width,area,perimeter;public:void PutArea()area=length*width;void PutPerimeter()perimeter=

15、(length+width)*2;void display()cout “length=“length endl;cout “width=“width endl;cout “area=“area endl;cout “perimeter=“perimeter endl;在类得外面不能访问私有成员在类得外面不能访问私有成员,只能通过公有成员函数间接访问只能通过公有成员函数间接访问在类得外面可以访问公有成员在类得外面可以访问公有成员不指定公有私有不指定公有私有,则默认为私有则默认为私有一般先出现一般先出现private,后出现后出现public类得声明类得声明l还有一种还有一种protected类

16、型类型,不能被类外访问不能被类外访问,但可以被但可以被派生类访问派生类访问l一般使用厂商提供得类库一般使用厂商提供得类库l也可以自定义类库也可以自定义类库,便于单位部门使用便于单位部门使用2、2 类得声明和对象得定义类得声明和对象得定义l对象得定义对象得定义 声明了类以后声明了类以后,就可以定义该类得对象了。给对象分配了存储就可以定义该类得对象了。给对象分配了存储空间。空间。其格式为其格式为:class 类名类名 对象名对象名1,对象名对象名2,/方括号表示可选项方括号表示可选项l对象定义示例对象定义示例 如前例中如前例中,声明了一个名为声明了一个名为 rectangle 得类得类,我们可以定

17、义该类我们可以定义该类得若干对象得若干对象:class rectangle r1,r2,r3;rectangle r1,r2,r3;2、2 类得声明和对象得定义类得声明和对象得定义l对象定义对象定义class rectangle private:int length,width,area,perimeter;public:void PutArea()area=length*width;void PutPerimeter()perimeter=(length+width)*2;void display()cout “length=“length endl;cout “width=“width e

18、ndl;cout “area=“area endl;cout “perimeter=“perimeter endl;r1,r2;l不出现类名不出现类名,直接定义对象直接定义对象,不提倡不提倡2、2 类得声明和对象得定义类得声明和对象得定义l类和结构体类型异同类和结构体类型异同 struct/class rectangle public/private:int length,width,area,perimeter;void PutArea()area=length*width;void PutPerimeter()perimeter=(length+width)*2;void display(

19、)cout “length=“length endl;cout “width=“width endl;cout “area=“area endl;cout “perimeter=“perimeter endl;r1,r2;l建议使用建议使用CLASS2、3 类得成员函数类得成员函数l成员函数得性质成员函数得性质类得成员函数也叫类函数类得成员函数也叫类函数,用法和一般函数基本上一样。区别在用法和一般函数基本上一样。区别在于她只就是属于一个类得成员而出现在类中。她可以被指定为于她只就是属于一个类得成员而出现在类中。她可以被指定为类得私有成员类得私有成员(private)、公有成员、公有成员(pub

20、lic)或保护成员或保护成员(protected)。使用类函数时使用类函数时,要注意她得使用权限要注意她得使用权限,如果就是私有成员如果就是私有成员,只能被本类得其她成员函数调用只能被本类得其她成员函数调用,不能被类外调用不能被类外调用(工具函数工具函数)。成员函数可以调用本类所有数据成员和成员函数成员函数可以调用本类所有数据成员和成员函数,也可以引用在也可以引用在本作用域中得有效数据。本作用域中得有效数据。通常通常,我们把类得数据成员定义成私有成员我们把类得数据成员定义成私有成员,对外屏蔽对外屏蔽,而而把成员函数定义成公有成员把成员函数定义成公有成员,她可以调用私有成员和其她成员。她可以调用

21、私有成员和其她成员。一个类若没有成员函数一个类若没有成员函数,就退化成就退化成C语言得结构体语言得结构体,而失去而失去意义。意义。2、3 类得成员函数类得成员函数l在类外定义成员函数在类外定义成员函数成员函数一般在类体中定义成员函数一般在类体中定义,如前面所讲。也可以在类外如前面所讲。也可以在类外定义定义,但要指明就是属于哪个类得成员函数但要指明就是属于哪个类得成员函数,用用“类名类名:函数名函数名”来指定。例如来指定。例如:class rectangle private:int length,width,;int area,perimeter;public:void PutArea();vo

22、id PutPerimeter();void display();void rectangle:PutArea()area=length*width;void rectangle:PutPerimeter()perimeter=(length+width)*2;void rectangle:display()cout “length=“length endl;cout “width=“width endl;cout “area=“area endl;cout “perimeter=“perimeter;rectangle r1,r2,r3;“:”成为域限定符。如果在域限定符前没有类名成为域限定

23、符。如果在域限定符前没有类名,或函数名或函数名前既没有类名前既没有类名,又没有域限定符又没有域限定符:display()或或 display()则表示该函数不属于任何类则表示该函数不属于任何类,她不就是成员函数她不就是成员函数,而就是全局而就是全局函数函数,即普通函数。即普通函数。一般来说一般来说,类定义包括两个部分类定义包括两个部分:1、声明部分、声明部分(“做什么做什么”):数据成员数据成员(名称、类型名称、类型)成员函数成员函数(方法方法)2、实现部分、实现部分(“怎么做怎么做”):成员函数得定义和实现成员函数得定义和实现声明在定义之前声明在定义之前,也即就是类体外定义成员也即就是类体外

24、定义成员函数函数(这里用定义这里用定义,实际就是给函数分配了实际就是给函数分配了空间空间,后章节详述后章节详述)减小了类体长度减小了类体长度,隐藏了执行细节隐藏了执行细节,提高了提高了类得保密性类得保密性2、3 类得成员函数类得成员函数inline 成员函数成员函数类得成员函数也可以指定为内联函数类得成员函数也可以指定为内联函数,只要就是函数代只要就是函数代码较少码较少,有频繁使用。我们只要在成员函数得类型签名加上有频繁使用。我们只要在成员函数得类型签名加上inline 关键字就可以。关键字就可以。lclass rectangle l private:l int length,width,;l

25、 int area,perimeter;l public:l inline void PutArea();l inline void PutPerimeter();l void display()cout “length=“length endl;cout “width=“width endl;cout “area=“area endl;cout “perimeter=“perimeter endl;2、3 类得成员函数类得成员函数inline 成员函数成员函数class rectangle l private:l int length,width,;l int area,perimeter;

26、l public:l inline void PutArea();l inline void PutPerimeter();l void display();l;void rectangle:display()cout “length=“length endl;cout “width=“width endl;cout “area=“area endl;cout “perimeter=“perimeter;Inline2、3 类得成员函数类得成员函数inline 成员函数成员函数类体中不包含循环控制结构类体中不包含循环控制结构,此类成员函数自动作为此类成员函数自动作为inline 成员成员函数。

27、函数。类体外也可定义类体外也可定义inline 成员函数成员函数,声明、定义其一显式定义即可声明、定义其一显式定义即可,类定义和其成员函数定义必须在同一文件类定义和其成员函数定义必须在同一文件(或包含或包含)。2、3 类得成员函数类得成员函数l成员函数得存储方式成员函数得存储方式同一类定义了多个对象时同一类定义了多个对象时,每个对象得数据成员各自占每个对象得数据成员各自占据独立得空间据独立得空间,而共享一个共用得函数代码段而共享一个共用得函数代码段,不占用对象得不占用对象得存储空间。存储空间。C+为此专门设立了一个名为为此专门设立了一个名为 this 得指针得指针,用来指向不用来指向不同得对象

28、。当调用对象同得对象。当调用对象r1,成员函数访问得就就是成员函数访问得就就是r1得数据成得数据成员。所以成员函数建议在类体外定义。员。所以成员函数建议在类体外定义。数据数据1对象对象r1数据数据2对象对象r2数据数据10对象对象r10共用函数代码共用函数代码2、4 对象成员得引用对象成员得引用l用对象名和成员运算符用对象名和成员运算符(、)访问对象成员访问对象成员举例举例:class rectangle public:int length,width;/公共数据成员公共数据成员 void display();/公共成员函数公共成员函数;void rectangle:display()cout

29、“area=“length*width ednl;cout“perimeter=“lengthclass rectangle public:int length,width;/公共数据成员公共数据成员 void display();/公共成员函数公共成员函数;void rectangle:display()cout“area=“length*width ednl;cout“perimeter=“lenght=5;p-width=4;p-display();用这种方式万分得成员用这种方式万分得成员,也必须定义成公用成员!也必须定义成公用成员!2、4 对象成员得引用对象成员得引用l用对象得引用访问

30、对象成员用对象得引用访问对象成员举例举例:class rectangle public:int length,width;/公共数据成员公共数据成员 void display();/公共成员函数公共成员函数;void rectangle:display()cout“area=“length*width ednl;cout“perimeter=“(length+width)*2;void main()rectangle r2;rectangle&r3=r2;r3、lenght=5;r3、width=4;r3、display();例例l定义一个时间类定义一个时间类,并定义一个对象及其引用并定义一个

31、对象及其引用,输入时分秒输出时输入时分秒输出时:分分:秒秒l#include lusing namespace std;lint main()l Time t1;l cint2、hour;l cint2、minute;l cint1、sec;l coutt1、hour:t1、minute:t2、secendl;l l 例例l#include lusing namespace std;lclass Timel public:l int hour;l int minute;l int sec;l;lint main()l Time t1;l Time&t2=t1;l cint2、hour;l ci

32、nt2、minute;l cint1、sec;l coutt1、hour:t1、minute:t2、secendl;l l 例例l定义定义2个对象个对象,分别输入时分秒输出时分别输入时分秒输出时:分分:秒秒l#include lclass Timel public:l int hour;l int minute;l int sec;l;lint main()l return 0;l 例例l#include lusing namespace std;lclass Timel public:l int hour;l int minute;l int sec;l;lint main()l Time

33、t1;l cint1、hour;l cint1、minute;l cint1、sec;l coutt1、hour:t1、minute:t1、sect2、hour;l cint2、minute;l cint2、sec;l coutt2、hour:t2、minute:t2、secendl;l return 0;l 例例:定义函数执行输入输出定义函数执行输入输出l#include lusing namespace std;lclass Timel public:l int hour;l int minute;l int sec;l;l int main()void set_time(Time&);v

34、oid show_time(Time&);Time t1;set_time(t1);show_time(t1);Time t2;set_time(t2);show_time(t2);return 0;l 例例l#include lusing namespace std;lclass Timel public:l int hour;l int minute;l int sec;l;lint main()l l void set_time(Time&);l void show_time(Time&);l Time t1;l set_time(t1);l show_time(t1);l Time t

35、2;l set_time(t2);l show_time(t2);l return 0;l l l void set_time(Time&t)cint、hour;cint、minute;cint、sec;void show_time(Time&t)coutt、hour:t、minute:t、secendl;例例:定义含默认值参数得定义含默认值参数得set_time和和show_time函数函数l#include lclass Timel public:l int hour;l int minute;l int sec;l;lint main()l lTime t1;l set_time(t1,

36、12,23,34);l show_time(t1);l Time t2;l set_time(t2);l show_time(t2);ll 例例l#include lusing namespace std;lclass Timel public:l int hour;l int minute;l int sec;l;lint main()l l void set_time(Time&,int hour=0,int minute=0,int sec=0);l void show_time(Time&);l Time t1;l set_time(t1,12,23,34);l show_time(t

37、1);l Time t2;l set_time(t2);l show_time(t2);l return 0;l l void set_time(Time&t,int hour=9,int minute=30,int sec=0)t、hour=hour;t、minute=minute;t、sec=sec;void show_time(Time&t)coutt、hour:t、minute:t、secendl;例例:定义成员函数输入时分秒并输出定义成员函数输入时分秒并输出l#include lclass Timel public:lprivate:l int hour;l int minute;l

38、 int sec;l;lint main()l l Time t1;l t1、set_time();l t1、show_time();l Time t2;l t2、set_time();l t2、show_time();ll void Time:set_time()cinhour;cinminute;cinsec;void Time:show_time()couthour:minute:secendl;例例l#include lusing namespace std;lclass Timel public:l void set_time();l void show_time();l priva

39、te:l int hour;l int minute;l int sec;l;lint main()l l Time t1;l t1、set_time();l t1、show_time();l Time t2;l t2、set_time();l t2、show_time();l return 0;l l void Time:set_time()cinhour;cinminute;cinsec;void Time:show_time()couthour:minute:secendl;习题习题1习题习题1l#include lusing namespace std;lclass Timel pub

40、lic:l int hour;l int minute;l int sec;l ;lTime t;lvoid set_time(void)l cint、hour;l cint、minute;l cint、sec;l void show_time(void)coutt、hour:t、minute:t、secendl;int main()set_time();show_time();return 0;例例2、4 P61l#include lusing namespace std;lclass Array_maxlpublic:l void set_value();l void max_value(

41、);l void show_value();l private:l int array10;l int max;l;int main()Array_max arrmax;arrmax、set_value();arrmax、max_value();arrmax、show_value();return 0;2、6 类得封装和信息隐蔽类得封装和信息隐蔽l公用接口和私有实现得分离公用接口和私有实现得分离我们已经学到我们已经学到,C+通过类得封装通过类得封装,将类得数据成员和成将类得数据成员和成员函数集成到一个类中。而一般在类得声明时员函数集成到一个类中。而一般在类得声明时,往往把数据成往往把数据成员指

42、定成私有得员指定成私有得,使她们与外界隔离使她们与外界隔离,即即,不能在类外直接使用不能在类外直接使用私有成员私有成员,外界只能通过类得公有函数外界只能通过类得公有函数,间接进行对私有成员间接进行对私有成员得操作。换句话说得操作。换句话说,外界与类得私有成员得唯一联系渠道外界与类得私有成员得唯一联系渠道,就就就是该类得公有成员函数。就是该类得公有成员函数。所以所以,我们一般把成员函数指定成公有得我们一般把成员函数指定成公有得(public)性质性质(除非某些成员函数不想让外界调用除非某些成员函数不想让外界调用)。这就就是所谓得这就就是所谓得“外部接口外部接口”与内部实现得分离与内部实现得分离,

43、以起以起到信息隐蔽得作用。而这就是软件工程最基本得原则。到信息隐蔽得作用。而这就是软件工程最基本得原则。定义一个类就就是定义一个类就就是实现对创建一个对象实现对创建一个对象得数据结构得描述。得数据结构得描述。在类中在类中,一些成员一些成员就是保护得就是保护得,被有效被有效地屏蔽地屏蔽,以防外界得以防外界得干扰和误操作。干扰和误操作。另一些成员就是公另一些成员就是公共得共得,作为接口提供作为接口提供外界使用。外界使用。右图就是对她们采右图就是对她们采用得图示方法说明类用得图示方法说明类得组成结构。以得组成结构。以Point 类为例。类为例。xoffsetyoffsetsetangleradius

44、xy封封装装体体内内部部数数据据成成员员Point 类类访访问问接接口口2、6 类得封装和信息隐蔽类得封装和信息隐蔽l类声明和成员函数定义得分离类声明和成员函数定义得分离当一个类被多个程序使用时当一个类被多个程序使用时,一般将类得声明一般将类得声明(包括成包括成员函数得声明员函数得声明)放在指定得头文件中放在指定得头文件中,用户在编程时用户在编程时,将该头将该头文件包含近来就可以了。而不必在每个使用该类得程序中文件包含近来就可以了。而不必在每个使用该类得程序中重复书写该类得声明。重复书写该类得声明。我们然后可以直接在程序中直接定义该类得对象我们然后可以直接在程序中直接定义该类得对象,直直接调用

45、该类得公有成员函数。为了实现信息隐蔽接调用该类得公有成员函数。为了实现信息隐蔽,对类得成对类得成员函数得定义一般不放在头文件中员函数得定义一般不放在头文件中,而放在另一个文件中。而放在另一个文件中。然后按照对多文件程序得编译和运行方法对程序进行然后按照对多文件程序得编译和运行方法对程序进行编译和连接。请看下面示例。编译和连接。请看下面示例。2、6 类得封装和信息隐蔽类得封装和信息隐蔽/rectangle、hclass rectangle private:int length,width;public:void Put();void display();/rectangle、cpp#includ

46、e#include“rectangle、h”void rectangle:Put()length=5;width=4;void rectangle:display()cout“area=“length*width endl;/main、cpp#include#include“rectangle、h”void main()rectangle r1;r1、display();2、6 类得封装和信息隐蔽类得封装和信息隐蔽在实际运用中在实际运用中,将若干功能相近得类声明集中在一起将若干功能相近得类声明集中在一起,形成类库。类库包括两个组成部分形成类库。类库包括两个组成部分:类声明头文件类声明头文件;经

47、过编译得头文件函数得定义得目标文件。经过编译得头文件函数得定义得目标文件。用户只需要将类库装入自己得计算机中用户只需要将类库装入自己得计算机中C+系统得子系统得子目录下目录下,并在程序中用并在程序中用#include命令将有关类声明得头文件命令将有关类声明得头文件包含到程序中包含到程序中,就可以使用这些类和其中得成员函数了。就可以使用这些类和其中得成员函数了。2、6 类得封装和信息隐蔽类得封装和信息隐蔽l面向对象程序设计中得几个名词面向对象程序设计中得几个名词u方法方法:method,指对数据得操作。指对数据得操作。u消息消息:其实就就是一个命令其实就就是一个命令,由程序语句实现。外界通过由程

48、序语句实现。外界通过发送发送“消息消息”来激活有关得方法。来激活有关得方法。比如比如:rectangle、dispaly();就就是向就就是向rectangle对象发一个消息对象发一个消息,通知她执行其中通知她执行其中得得“display()”方法。方法。这一条语句就涉及到对象、消息、方法这三个术语。这一条语句就涉及到对象、消息、方法这三个术语。rectangel:就是对象就是对象;display():就是方法就是方法;rectangel、display():就是消息。就是消息。习题习题2l#include lusing namespace std;lclass Timel public:li

49、nt hour;l int minute;l int sec;l ;Time t;int main()t、set_time();t、show_time();习题习题2l#include lusing namespace std;lclass Timel public:l void set_time(void)l cinhour;l cinminute;l cinsec;l l void show_time(void)l couthour:minute:secendl;l private:int hour;l int minute;l int sec;l ;Time t;int main()t、

50、set_time();t、show_time();return 0;习题习题3l#include lclass Timel public:l private:l int hour;l int minute;l int sec;l ;l Time t;int main()t、set_time();t、show_time();return 0;习题习题3l#include lusing namespace std;lclass Timel public:l void set_time(void);l void show_time(void);l private:l int hour;l int m

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服