c++课件第八章 类和对象.docx
- 文档编号:5965134
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:15
- 大小:59.73KB
c++课件第八章 类和对象.docx
《c++课件第八章 类和对象.docx》由会员分享,可在线阅读,更多相关《c++课件第八章 类和对象.docx(15页珍藏版)》请在冰豆网上搜索。
c++课件第八章类和对象
第八章类和对象
8.1面向对象程序设计方法概述
8.1.1什么是面向对象的程序设计
1.对象对象的静态特征称为属性,动态特征称为行为。
对象之间通过发送和接受消息互相联系。
图8.1
图8.2
在C++中,每个对象都是由数据和函数(操作代码)两部分组成。
2.封装与信息隐蔽
3.抽象
4.继承与重用
5.多态性
8.1.2面向对象程序设计的特点
图8.3
图8.3是传统的面向过程的程序设计。
面象对象的程序设计是:
把数据和有关操作封装成一个对象。
程序设计的任务包括两个方面:
一是设计所需的各种类和对象,即决定把哪些数据和操作封装在一起;二是考虑怎样向有关对象发送消息,以完成所需的任务。
8.1.3类和对象的作用
面向过程的结构化程序设计:
程序=算法+数据结构
基于对象和面向对象程序设计:
对象=算法+数据结构
程序=(对象+对象+···)+消息
8.1.4面向对象的软件开发
1.面向对象分析(objectorientedanalysis,OOA)
2.面向对象设计(objectorienteddesign,OOD)
3.面向对象编程(objectorientedprogramming,OOP)
4.面向对象测试(objectorientedtest,OOT)
5.面向对象维护(objectorientedsoftmaintenance,OOSM)
8.2类的声明和对象的定义
8.2.1类和对象的关系
在C++中对象的类型称为类。
类是对象的抽象,而对象是类的具体实例。
8.2.2声明类类型
structStudent
{
intnum;
charname[20];
charsex;
};
classStudent
{
intnum;
charname[20];
charsex;
voiddisplay()
{cout<<"num:
"< cout<<"name: "< cout<<"sex: "< } }; Studentstud1,stud2; 还可以改为以下声明: classStudent {private: intnum; charname[20]; charsex; public: voiddisplay() {cout<<"num: "< cout<<"name: "< cout<<"sex: "< } }; Studentstud1,stud2; private和public称为成员访问限定符。 被声明为私有的(private)只能被本类中的成员函数使用,类外不能使用(友元除外)。 被声明为公有的(public)可以被类作用域内所有函数使用。 被声明为保护的(ptotected)它不能被类外函数使用,但可以被派生类成员函数使用。 8.2.3定义对象的方法 1.先声明类类型,然后再定义对象 2.在声明类类型的同时定义对象 3.不出现类名,直接定义对象 8.2.4类和结构体类型的异同 用struct声明的类,如果对其成员不作private或public声明,系统默认为public.用class声明的类,如果对其成员不作private或public声明,系统默认为private. 8.3类的成员函数 8.3.1成员函数的性质 对外接口为公有的,类内部使用为私有的。 8.3.2在类外定义成员函数 classStudent { public: voiddisplay(); private: intnum; charname[20]; charsex; }; voidStudent: : display() {cout<<"num: "< cout<<"name: "< cout<<"sex: "< } “: : ”是作用域限定符。 8.3.3inline成员函数 classStudent { public: voiddisplay() {cout<<"num: "< cout<<"name: "< cout<<"sex: "< } private: intnum; charname[20]; charsex; }; 8.3.4成员函数的存储方式 图8.4 图8.5 #include usingnamespacestd; classTime { public: voidset() {cin>>hour>>minute>>sec;} voiddisplay() {cout< "< "< inthour,minute; private: intsec; }; voidmain() { Timet; t.set(); t.display(); cout< cout< } 345 3: 4: 5 12 12 8.4对象成员的引用 8.4.1通过对象名和成员运算符访问对象中的成员 t.set();//“.”是成员运算符 8.4.2通过指向对象的指针访问对象中的成员 #include usingnamespacestd; classTime { public: voidset() {cin>>hour>>minute>>sec;} voiddisplay() {cout< "< "< inthour,minute,sec; }; voidmain() { Timet,*p; p=&t;p->set(); cout< } 345 3 8.4.3通过对象的引用来访问对象中的成员 Timet1; Time&t2=t1; cout< 8.5类的封装性和信息隐蔽 8.5.1公用接口和私有实现的分离 classStudent { private: intnum; stringname; intage; charsex; public: voiddisplay() {cout<<"num: "< cout<<"name: "< cout<<"age: "< cout<<"sex: "< } }; 公用成员函数是用户使用类的公用接口。 通过成员函数对数据成员进行操作称为类的实现。 当接口与实现分离时,只要类的接口没有改变,对私有实现的修改不会影响程序的其它部分。 8.5.2类声明和成员函数定义的分离 图8.6 //student.h classStudent { public: voidset(); voiddisplay(); private: intnum; charname[20]; intage; charsex; }; //student.cpp #include usingnamespacestd; #include"student.h" voidStudent: : display() {cout<<"num: "< cout<<"name: "< cout<<"sex: "< } voidStudent: : set() { cin>>num>>name>>sex; } #include usingnamespacestd; #include"student.h" #include voidmain() { Studentstud;stud.set(); stud.display(); } 1002abcdf num: 1002 name: abcd sex: f 类库包括两个部分: (1)类声明头文件(成为用户使用类的公用接口) (2)已经编译的成员函数的定义,它是目标文件。 包含成员函数定义的文件就是类的实现。 8.5.3面向对象程序设计中的几个名词 类成员函数在面向对象的理论中被称为“方法”(method),”方法”是指对数据的操作,一个“方法”对应一种操作。 外界通过发“消息”来激活有关方法。 例如: stud.display(); 8.6类和对象的简单应用举例 例8.1最简单的例子。 #include usingnamespacestd; classTime {public: inthour;intminute;intsec; }; intmain() { Timet1;Time&t2=t1;cin>>t2.hour; cin>>t2.minute;cin>>t1.sec; cout< "< "< } 123243 12: 32: 43 例8.2引用多个对象 #include usingnamespacestd; classTime { public: inthour; intminute; intsec; }; intmain() { Timet1; cin>>t1.hour; cin>>t1.minute; cin>>t1.sec; cout< "< "< Timet2; cin>>t2.hour; cin>>t2.minute; cin>>t2.sec; cout< "< "< return0; } 103243 10: 32: 43 223243 22: 32: 43 #include usingnamespacestd; classTime { public: inthour; intminute; intsec; }; intmain() { voidset_time(Time&); voidshow_time(Time&); Timet1; set_time(t1); show_time(t1); Timet2; set_time(t2); show_time(t2); return0; } voidset_time(Timet) {cin>>t.hour;cin>>t.minute;cin>>t.sec;} voidshow_time(Time&t) {cout< "< "< #include usingnamespacestd; classTime { public: inthour; intminute; intsec; }; intmain() { voidset_time(Time&,inthour=0,intminute=0,intsec=0); voidshow_time(Time&); Timet1;set_time(t1,12,23,34);show_time(t1); Timet2;set_time(t2);show_time(t2); return0; } voidset_time(Time&t,inthour=9,intminute=30,intsec=0) {t.hour=hour;t.minute=minute;t.sec=sec;} voidshow_time(Time&t) {cout< "< "< 12: 23: 34 0: 0: 0 例8.3将例8.2的程序改用含成员函数的类来处理。 #include usingnamespacestd; classTime { public: voidset_time();voidshow_time(); private: inthour;intminute; intsec; }; intmain() { Timet1; t1.set_time(); t1.show_time(); Timet2; t2.set_time(); t2.show_time(); return0; } voidTime: : set_time() { cin>>hour; cin>>minute; cin>>sec; } voidTime: : show_time() { cout< "< "< } 122334 12: 23: 34 345 3: 4: 5 例8.4找出一个整型数组中元素最大值。 #include usingnamespacestd; classArray_max { public: voidset_value(); voidmax_value(); voidshow_value(); private: intarray[10]; intmax; }; voidArray_max: : set_value() { inti; for(i=0;i<10;i++) cin>>array[i]; } voidArray_max: : max_value() { inti; max=array[0]; for(i=1;i<10;i++) if(array[i]>max)max=array[i]; } voidArray_max: : show_value() {cout<<"max="< } intmain() { Array_maxarrmax; arrmax.set_value(); arrmax.max_value(); arrmax.show_value(); return0; } 121239-3417134045-9176 max=134Pressanykeytocontinue 实验: 1: 实验目的: (1)掌握声明类的方法,类和类的成员的概念以及定义对象的方法。 (2)初步掌握用类和对象编制基于对象的程序。 (3)学习调试基于对象的程序。 2: 实验内容: P26246 3: 实验结果。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+课件第八章 类和对象 c+ 课件 第八 对象