上机调试程序方法.ppt
《上机调试程序方法.ppt》由会员分享,可在线阅读,更多相关《上机调试程序方法.ppt(80页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、ObjectOrientedProgrammingu计算机与信息学院 李丽珊OOP 学时安排学时安排理理 论论 教教 学学 内内 容容 学学 时时1 C+语语言特点言特点42 面向面向对对象程序象程序设计设计概述概述23 类类和和对对象象84 派生派生类类与与继继承承65 多多态态性性86 模板模板27 C+的的I/O流流48 面向面向对对象系象系统统开开发发基基础础6总总 计计40 本课程共本课程共6060学时,学时,3.53.5学分,理论教学学分,理论教学4040学时,实践教学时,实践教学学2020学时学时OOP教材章教材章节节 1 C+的初步知的初步知识识 2 类类和和对对象象 3 关于
2、关于类类和和对对象的象的进进一步一步讨论讨论 4 运算符重运算符重载载 5 继继承与派生承与派生 6 多多态态性与虚函数性与虚函数 7 输输入入输输出流出流 8 C+工具工具教教 学学 内内 容容 1 C+语语言特点言特点2 面向面向对对象程序象程序设计设计概述概述3 类类和和对对象象4 派生派生类类与与继继承承5 多多态态性性6 模板模板7 C+的的I/O流流8 面向面向对对象系象系统统开开发发基基础础 教学内容与教材章节对应关系教学内容与教材章节对应关系补充知识:补充知识:面向对象相关知识面向对象相关知识MFC基础和基础和ViC可视化开发基础可视化开发基础 UML相关知识相关知识3.111
3、.3.5OOPC+语言特点语言特点1面向对象程序设计概述面向对象程序设计概述2类和对象类和对象3派生类与继承派生类与继承4多态性多态性5模板模板6C+的的I/O流流7面向对象系统开发基础面向对象系统开发基础8 目录目录第第1 1章章 C+C+语言特点语言特点OOPn了解:C+与C的关系以及二者的相同点和不同点;n掌握:C+的非面向对象语言特征。目的要求目的要求OOPC+的起源和特点、与的起源和特点、与C的关系的关系 最简单的最简单的C+C+程序程序C+C+对对C C的扩充的扩充C+C+程序的编写和实现程序的编写和实现关于关于C+C+上机实践上机实践 授课内容授课内容OOP1.1 C+的起源和特
4、点、与的起源和特点、与C的关系的关系 C C语语言言是是七七十十年年代代初初贝贝尔尔实实验验室室的的Dennis Dennis RichieRichie 等等人人在在B B语语言言基基础础上上开开发发出出来来的的。C C最最初初是是作作为为UNIXUNIX操操作作系系统统的的开开发发语语言言为为人人们们所所认认识识。七七十十年年代代末末,随随着着微微型型计计算算机机的的发发展展,C C语语言言开开始始移移植植到到非非UNIXUNIX环环境境中中,并并逐逐步步脱脱离离UNIXUNIX系系统统成成为为一一种种独独立立的的程程序序设设计计语语言言。C C 语语言言版版本本很很多多,为为了了让让开开发
5、发出出来来的的代代码码能能够够在在多多种种平平台台上上运运行行,19881988年年美美国国国国家家标标准准协协会会ANSIANSI对对C C语语言言进行了标准化,产生了进行了标准化,产生了ANSI CANSI C。OOP(1 1)C C语语言言既既具具备备高高级级语语言言的的结结构构和和编编程程环环境境,又又提提供供类类似似于于汇汇编编语语言言那那样样的的系系统统资资源源操操纵纵能能力力及及程程序序执执行行效效率。率。适合解决有实时要求的问题。适合解决有实时要求的问题。C C 语言的主要特点:语言的主要特点:(2 2)有有丰丰富富的的运运算算符符和和数数据据类类型型,表表达达式式类类型型多多
6、样样化化,可可以以方方便便地地实实现现在在其其他他语语言言中中较较难难实实现现的的运运算算,对对各各种种不不同类型的程序设计都有良好的适应性。同类型的程序设计都有良好的适应性。(3 3)以以函函数数为为基基础础实实现现程程序序的的结结构构化化设设计计,支支持持大大型型程程序序的的多多文文件件构构成成及及单单个个文文件件独独立立编编译译,适适合合大大型型复复杂程序的设计。杂程序的设计。(4 4)语语言言简简洁洁、紧紧凑凑,使使用用方方便便、灵灵活活,书书写写形形式式自由。自由。(5 5)可移植性好。可移植性好。OOPC+C+是是由由C C发发展展成成为为的的以以面面向向对对象象为为主主要要特特征
7、征的的语语言言。作作为为C C语语言言的的超超集集,C+C+继继承承了了C C的的所所有有优优点点,又又对对数数据据类类型型做做了了扩扩充充,使使得得编编译译系系统统可可以以检检查查出出更更多多类型错误。类型错误。C+C+支持支持面向对象程序设计面向对象程序设计,通过类和对象的概念,通过类和对象的概念把数据和对数据的操作封装在一起,通过派生、继承、把数据和对数据的操作封装在一起,通过派生、继承、重载和多态性等特征实现了软件重用和程序自动生成,重载和多态性等特征实现了软件重用和程序自动生成,使得大型复杂软件的构造和维护变得更加有效和容易。使得大型复杂软件的构造和维护变得更加有效和容易。此外,在此
8、外,在一致性(一致性(ConsistencyConsistency)检查机制检查机制方面也方面也作了加强,提高了软件开发的效率和质量。作了加强,提高了软件开发的效率和质量。OOPC+C+与与C C完完全全兼兼容容,很很多多用用C C编编写写的的库库函函数数和和应应用用程程序都可以为序都可以为C+C+所用。所用。但但正正是是由由于于与与C C兼兼容容,使使得得C+C+不不是是纯纯正正的的面面向向对对象象的的语语言言,它它既既支支持持面面向向对对象象程程序序设设计计,也也支支持持面面向向过过程程设设计计。但但我我们们应应当当注注意意用用面面向向对对象象的的思思想想进进行行设设计,以发挥出计,以发挥
9、出C+C+的优势。的优势。C+C+有有许许多多版版本本,国国内内较较为为流流行行的的有有MicrosoftMicrosoft公公司司的的Visual C+Visual C+。OOPC+C+对对C C的的“增强增强”,表现在两个方面:,表现在两个方面:(1)(1)在在原原来来面面向向过过程程的的机机制制基基础础上上,对对C C语语言言的的功功能能做做了不少扩充。了不少扩充。(2)(2)增加了面向对象的机制。增加了面向对象的机制。面面向向对对象象程程序序设设计计,是是针针对对开开发发较较大大规规模模的的程程序序而而提提出来的,目的是提高软件开发的效率。出来的,目的是提高软件开发的效率。学学习习C+
10、C+,既既要要会会利利用用C+C+进进行行面面向向过过程程的的结结构构化化程程序序设计,也要会利用设计,也要会利用C+C+进行面向对象的程序设计。进行面向对象的程序设计。OOP运行结果:This is a C+program.1.2 最简单的最简单的C+C+程序程序#include /包含头文件iostreamusing namespace std;/使用命名空间stdint main()coutThis is a C+program.;return 0;例例1.11.1u用main代表“主函数”的名字。每一个C+程序都必须有一个 main 函数。必须声明main函数的类型,无返回值时要声明为
11、void类型。一般声明为int,如程序正常结束,向操作系统返回一个零值,不能正常结束时返回一个非0值。OOPu在初学C+时,只需知道:如果程序有输入或输出时,必须使用“#include”命令以提供必要的信息,同时要用“using namespace std;”,使程序能够使用这些信息,否则程序编译时将出错。u“using namespace std;”的意思是“使用命名空间std”。C+标准库中的类和函数是在命名空间std中声明的,因此程序中如果需要用到C+标准库,就需要用“using namespace std;”作声明,表示要用到命名空间std中的内容。u文件iostream的作用是向程序
12、提供输入或输出时所需要的一些信息。iostream是i-o-stream 3个词的组合,代表“输入输出流”的意思。OOP#include using namespace std;int main()int a,b,sum;cinab;sum=a+b;cout“a+b=”sumendl;return 0;例例1.21.2#include using namespace std;int max(int x,int y)int z;if(xy)z=x;else z=y;return(z);int main()int a,b,m;cinab;m=max(a,b);cout“max=”m n;retur
13、n 0;例例1.31.3OOP例例1.31.3的程序可以改写如下:的程序可以改写如下:#include using namespace std;int main()int max(int x,int y);/对max函数作声明 int a,b,c;cinab;c=max(a,b);/调用max函数 coutmax=cy)z=x;else z=y;return(z);OOPint main()stud1.setdata();stud2.setdata();stud1.display();stud2.display();return 0;程序运行情况如下:1001 98.5 1002 76.5 输
14、出结果:num=1001score=98.5num=1002score=76.5#include using namespace std;class Student private:int num;int score;public:void setdata()cinnum;cinscore;void display()coutnum=numendl;coutscore=scoreendl;Student stud1,stud2;例例1.4:1.4:一个包含类和对象的C+程序。OOP在一个类中包含两种成员:数据和函数数据和函数,分别称为数据成员和成员函数数据成员和成员函数。在C+中把一组数据和有
15、权调用这些数据的函数封装在一起,组成一种称为“类类(class)”的数据结构。成员函数成员函数是用来对数据成员进行操作的。也就是说,一个类是由一批数据以及对其操作的函数组成的。类可以体现数据的封装性和信息隐蔽。在大多数情况下,会把所有数据指定为私有,以实现信息隐蔽。具有“类类”类型特征的变量称为“对象对象”(object)。OOP在上面的程序中:数据成员num,score和成员函数setdata,display组成了一个名为Student的“类”类型。在声明Student类时,把类中的数据和函数分为两大类:private(private(私有的私有的)和和public(public(公用的公用
16、的)。把全部数据(num,score)指定为私有的,把全部函数(setdata,display)指定为公用的。OOP1.3 C+C+对对C C的扩充的扩充u使用以”/”开头的注释u对变量的定义可以出现在程序中的任何行(但必须在引用该变量之前)u提供了标准输入输出流cin和coutu用const定义常变量u函数模板,简化同一类型的函数的编程工作u使用带默认值的参数的函数,使函数的调用更加灵活OOPu提供变量的引用类型,将引用作为函数形参,可以实现通过函数的调用来改变实参变量的值u增加了内置函数(内嵌函数),以提高程序的执行效率u作用域运算符:,这样在局部变量作用域内也能引用全局变量u用strin
17、g类定义字符串变量,使字符串运算更加方便u用new和delete运算符代替malloc和free函数,使分配动态空间更加方便1.3 C+对对C的扩充的扩充(续续)OOP1.3.1 C+的输入输出的输入输出u输入和输出并不是C+语言中的正式组成成分,而是在编译系统提供的I/O库中定义的。uC+的输出和输入是用“流”(stream)的方式实现的。uC+中,可以用cin和cout函数进行输入输出.OOPcout语句的一般格式为 coutcout表达式表达式11表达式表达式22变量变量11变量变量22变量变量n;n;在定义流对象时,系统会在内存中开辟一段缓冲区缓冲区,用来暂存输入输出流的数据。在执行c
18、out语句时,先把插入的数据顺序存放在输出缓冲区中,直到输出缓冲区满或遇到cout语句中的endl(或n,ends,flush)为止,此时将缓冲区中已有的数据一起输出,并清空缓冲区。输出流中的输出流中的数据在系统默认的设备数据在系统默认的设备(一般为显示器一般为显示器)输出。输出。OOP1.3.2 用用const定义常变量定义常变量u加上关键字const,变量的值在程序运行期间不能改变,这种变量称为常变量常变量(constant variable)。u在定义常变量时必须同时对它初始化(即指定其值),此后它的值不能再改变。u可以用表达式对常变量初始化例例:const int a=3;/用cons
19、t来声明为常变量,指定其值始终为3 const int b=3+6,c=3*cos(1.5);/b的值被指定为9,c的值被指定为3*cos(1.5)OOP1.3.3 函数原型声明函数原型声明C+要求在函数调用之前调用之前必须对所调用的函数做函数原型声明.函数声明的一般形式为:函数类型函数类型 函数名函数名(参数表参数表);参数表中一般包括参数类型和参数名OOP1.3.4 函数的重载函数的重载 C+允许用同一函数名定义多个函数,这些函数的参数个数和参数类型不同。这就是函数的函数的重载重载(function overloading)。即对一个函数名重新赋予它新的含义,使一个函数名可以多用。重载函数
20、的参数个数参数个数、参数类型参数类型或参数顺序参数顺序3者中必须至少有一种不同必须至少有一种不同,函数返回值类型可以相同也可以不同。OOP例1.6求3个数中最大的数#include using namespace std;int main()int max(int a,int b,int c);double max(double a,double b,double c);long max(long a,long b,long c);int i1,i2,i3,i;cini1i2i3;i=max(i1,i2,i3);couti_max=id1d2d3;d=max(d1,d2,d3);coutd_m
21、ax=dg1g2g3;g=max(g1,g2,g3);coutg_max=ga)a=b;if(ca)a=c;return a;double max(double a,double b,double c)if(ba)a=b;if(ca)a=c;return a;long max(long a,long b,long c)if(ba)a=b;if(ca)a=c;return a;运行情况如下:185 -76 567 (输入3个整数)56.87 90.23 -3214.78 (输入3个实数)67854 -912456 673456 (输入3个长整数)i_max=567 (输出3个整数的最大值)d_m
22、ax=90.23 (输出3个双精度数的最大值)g_max=673456 (输出3个长整数的最大值)OOP#include using namespace std;int main()int max(int a,int b,int c);int max(int a,int b);int a=8,b=-12,c=27;coutmax(a,b,c)=max(a,b,c)endl;coutmax(a,b)=max(a,b)a)a=b;if(ca)a=c;return a;int max(int a,int b)if(ab)return a;else return b;例例1.7 求两个整数或求两个整数
23、或3个整数中的最大数。个整数中的最大数。运行情况如下:max(a,b,c)=27max(a,b)=8OOP1.3.5 函数模板函数模板u所谓函数模板函数模板,实际上是建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型来代表。这个通用函数就称为函数模板。u凡是函数体相同的函数都可以用这个模板来代替,不必定义多个函数,只需在模板中定义一次即可。在调用函数时系统会根据实参的类型来取代模板中的虚拟类型,从而实现了不同函数的功能。u用函数模板比函数重载更方便,程序更简洁。OOP#include using namespace std;template /模板声明,其中模板声明,其中T为类
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 上机 调试 程序 方法
限制150内