C 面向对象程序设计项目教程完整版教学课件 整套教程电子讲义(最全最新).ppt
《C 面向对象程序设计项目教程完整版教学课件 整套教程电子讲义(最全最新).ppt》由会员分享,可在线阅读,更多相关《C 面向对象程序设计项目教程完整版教学课件 整套教程电子讲义(最全最新).ppt(589页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、项目一,任务一 体会面向对象与面向过程的不同思维方式,任务二 创建简单的C+应用程序,打开C+面向对象程序设计之门,任务说明,任务一 体会面向对象与面向过程的不同思维方式,在本任务中我们来学习面向对象程序设计思想以及其与面向过程的不同。,预备知识,一、什么是面向对象的程序设计思想,二、面向对象与面向过程比较,一、什么是面向对象的程序设计思想,其基本出发点是尽可能按照人类认识世界的方法和思维方式来分析和解决问题。客观世界是由许多具体的事物或者事件、抽象的概念和规则等组成的,因此,人们研究的对象事、物、概念都统称为“对象”。面向对象的设计方法是以对象作为最基本的元素,以对象作为分析问题、解决问题的
2、核心。,下面我们了解几个面向对象程序设计中涉及的基本概念。,1对象,2类,3封装,4继承,5多态,面向对象程序设计方法的优势可以归纳为以下几点:,二、面向对象与面向过程比较,(1)程序的开发效率高,(2)程序代码的可重用性高,(3)程序易于维护,任务实施 运用面向对象和面向过程两种思想解决同一问题,案例说明,本任务中我们将分别使用面向过程和面向对象的程序设计方法设计两个功能完全相同的程序(根据矩形的长和宽求其周长和面积),并结合任务内容说明两种程序设计思想的异同。,实施步骤,1以面向过程的程序设计方式思考,步骤1 以面向过程的思想来解决问题,步骤如下:,(1)确定所求长方形的长和宽。 (2)确
3、定计算长方形的周长和面积的公式并计算。 (3)输出计算结果。,步骤2 根据解题思路编写代码,如【例1-1】所示。,【例1-1】 以面向过程程序设计思想编码。,/1-1.cpp #include /包含头文件iostream.h using namespace std;/使用标准命名空间 void main()/主程序 int perimeter,area;/声明周长与面积变量 int length=20,width=10;/声明长、宽变量并赋初值 perimeter=2*(length+width);/求周长 area=length*width;/求面积 coutperimeter=perim
4、eterendl;/输出结果 coutarea=areaendl; ,2以面向对象的程序设计方式思考,步骤1 以面向对象的思想来解决问题,步骤如下:,(1)将长方形类的共性,即两个基本属性(长和宽)和两个行为(求周长和求面积)抽取出来,设计一个长方形类。 (2)根据长方形类创建一个对象。 (3)通过调用对象的行为求出其周长和面积。,步骤2 根据解题思路编写代码,如【例1-2】所示。,【例1-2】 以面向对象程序设计思想编码。,/1-2.cpp #include /包含头文件iostream.h using namespace std;/使用标准命名空间 class Rectangle/定义长方
5、形类 public: Rectangle(float w=0,float l=0)width=w;length=l; /定义构造函数,完成创建对象时的初始化工作,即为长和宽赋初值 void GetArea()coutarea=width*length endl;/定义求面积方法 void GetPerim()coutperimeter=2*(width+length)endl;/定义求周长方法 private: float width,length; /外界不可访问的私有成员 ;,void main() Rectangle a(10,20);/定义长方形类的一个变量a,即实例化一个 /特殊的长
6、方形对象a,它的长是20,宽是10 a.GetPerim();/调用a对象的两个方法 a.GetArea(); ,任务二 创建简单的C+应用程序,任务说明,在本任务中我们来学习C+应用程序的结构、C+程序的开发过程以及C+开发环境Visual C+ 6.0的使用。,预备知识,一、认识C+程序,二、C+程序的开发过程,三、Visual C+ 6.0集成开发环境简介,四、Visual C+ 6.0的排错与调试功能,1一个C+程序,一、认识C+程序,#include /包含头文件iostream.h #include /包含头文件string.h,字符串 using namespace std;/使
7、用标准命名空间 /= int main() string greeting=hello world!; /定义一个字符串对象变量,并赋初值 couthello world!n; /在屏幕上输出字符串“hello world!”并换行 coutwelcome to C+!endl; /在屏幕上输出“welcome to C+!”并换行 coutgreetingendl; /在屏幕上输出字符串变量greeting的内容并换行 return 0;/程序结束 ,2C+程序的构成,(1)一个C+程序可以由一个或多个源程序单元构成,每个源程序单元可被看成一个文件。【例1-3】中的例子仅由一个源程序单元构成
8、。,(2)在一个源程序单元中,一般包括以下组成部分:, 预处理命令。, 全局声明部分。, 函数。,3C+程序的书写形式,(1)C+的书写格式比较自由,一行内可以写几个语句,一个语句也可以写在多行。,(2)在程序中添加必要的注释,也是成为一个优秀程序员所必需的。编译系统在编译代码时会将注释内容忽略。一般情况下,内容较少的简单注释用“/”,而跨行的注释则用“/*/”。,二、C+程序的开发过程,1编写程序,2编译程序,3连接目标文件,4运行程序,总体而言,C+程序的整个开发过程可用图所示的流程图表示。其中,实线表示操作流程,虚线表示文件的输入/输出。,三、Visual C+ 6.0集成开发环境简介,
9、本书选用了使用较为广泛的Visual C+ 6.0作为C+程序的开发环境,图所示为Visual C+ 6.0的集成开发环境界面。,四、Visual C+ 6.0的排错与调试功能,第一步 设置断点,第二步 开始调试程序,第三步 单步运行,单步调试程序时,可以在Variables窗口和Watch窗口中察看变量值的变化,这两个窗口的作用如下:, 在Variables窗口中会自动显示当前运行程序中所有变量的值。随着单步调试的进行,我们会看到变量i的值逐渐递增。, 如果本地变量比较多,Variables窗口就会比较混乱,此时可以直接在代码中选中需要监控的变量,将其拖放到Watch列表,该变量的值会被显示
10、出来。,任务实施创建并运行自己的第一个C+程序,案例说明,编写和调试一个简单的C+程序,以熟悉Visual C+ 6.0的程序编写、编译、连接和调试方法。,实施步骤,1创建源程序,步骤1 启动Visual C+ 6.0,打开“文件”下拉菜单,选择“新建”菜单项,将打开如图所示的“新建”对话框。,步骤2 如图1-14所示,选择“文件”选项卡,在左侧文件类型列表中选择“C+ Source File”选项,表示创建一个C+源程序。,/实训1-1 #include using namespace std; int main() coutWelcome to C+ World!n; coutMy Fri
11、end!endl; return 0; ,2编译连接,将代码输入编辑区后,需要对程序进行编译连接,以发现源程序中是否存在错误。,步骤1 执行“组建”“编译实训1-1.cpp”菜单命令,系统将显示图所示对话框,询问是否在创建源文件的目录下建立一个活动工程和一个工作空间。,步骤2 单击“是”按钮,将创建一个与C+源程序同名的工作区(对应文件为“实训1-1.dsw”)和一个工程(对应文件为“实训1-1.dsp”),系统开始编译。编译结束后,将在输出窗口输出编译信息,如图所示。,步骤3 编译信息显示“实训1-1.obj - 0 error(s), 0 warning(s)”,表示编译程序时没有错误和警
12、告。为此,继续执行“组建”“组建实训1-1.exe”菜单命令,对生成的目标程序进行连接,以生成可执行程序,如图所示。,3调试运行,编译连接通过后,执行“组建”“执行实训1-1.exe”菜单命令,或者直接按【Ctrl+F5】组合键,运行生成的程序,将出现图所示画面。结果正确无误,按任意键返回。,至此,一个完整的C+程序从建立到运行就完成了。,项目拓展,熟悉Visual C+工作区与工程的使用,C+程序唯有放入某个工作区和工程,才能被编译和连接。,为了便于读者更好地使用Visual C+,我们首先对工作区、工程等概念进行一些简要说明。,(1)在Visual C+中,工作区用来管理工程,而工程用来管
13、理C+源程序(*.cpp)、C+头文件(*.h)、资源文件等。因此,如果我们开发的程序比较庞大的话,应首先创建工作区,然后创建工程,最后利用工程管理C+源程序、头文件等。,(2)我们既可以为在工作区新建工程,或者在工程中新建C+程序、头文件,也可以将现有工程添加到工作区中,或者将现有C+源程序、头文件等添加到工程中。,(3)Visual C+的编译是针对工程中的C+程序的,而连接是针对工程的。通过选择“组建”菜单中的“组建”,可以对工程中的程序统一进行编译和连接。,(4)每个工作区和工程都与某个文件夹相对应,并且工作区文件的扩展名为.dsw,工程文件的扩展名为.dsp。,(5)创建工程时,如果
14、系统尚未创建工作区,则系统会自动创建一个与工程同名的工作区,并以此名称在指定文件夹中创建一个新文件夹,以存放相关文件。,(6)要想编辑C+源程序或头文件等,最好打开工作区文件,如此一来,我们可以直接对C+源程序、头文件等进行修改、编译和连接。,(7)如果创建的工程是一个Win32 Console Application(Win32控制台应用程序),则必须在工程中的某个C+程序中包含main()函数,以设置应用程序的入口。此外,每个工程中只能有一个main()函数,否则,将无法连接目标文件。,Thank you!,项目二,任务一 熟悉C+与C在基本控制上的一些区别,任务二 学习有关函数方面的区别
15、,任务三 掌握C+中关于引用的灵活运用,任务四 掌握C+中管理动态内存空间的方法,由C到C+ 用法更灵活、功能更强大,任务说明,预备知识,任务一 熟悉C+与C在基本控制上的一些区别,在本任务中我们来学习C+与C在基本控制上的一些区别,主要包括输入/输出的实现、强制数据类型转换方式以及新增了bool类型。,一、用I/O流实现输入/输出,二、新增强制类型转换方式,三、新增bool类型,一、用I/O流实现输入/输出,cin是输入流对象,cout是输出流对象,它们是在编译系统中的输入/输出流库中定义的,定义后系统会在内存中开辟一段缓冲区,用来暂存输入/输出流的数据。使用它们时必须将头文件“iostre
16、am.h”加入到本文件中,即在程序的开头使用预处理命令“#include ”。,(一)输入语句,输入语句的一般格式为:,cin表达式1表达式2表达式n;,在使用cin语句时,通过键盘输入的数据应与变量定义的数据类型一致,并且输入数据的个数应与变量的个数相同。输入完数据后键入回车,流提取操作符“”便从输入流中提取出由空格、制表符和换行符间隔开的数据赋给相应的变量。,(二)输出语句,输出语句的一般格式为:,cout表达式1表达式2表达式nendl;,endl是C+中行结束符,只能用于输出流中,其作用是在执行换行操作的同时,将缓冲区内已有的数据全部输出,并清空缓冲区。,(三)输入/输出的格式控制,常
17、用的输入/输出流格式控制符如表所示。,二、新增强制类型转换方式,强制转换数据类型的一般形式为:,(类型名)变量 和 (类型名)(表达式),也可以写成,类型名(变量) 和 类型名(表达式),例如,下面将变量a强制转换成int型,将m与n的和强制转换成double型,将8与3取余的结果强制转换成char型。,int(a) double(m+n) char(8%3),当进行强制数据类型转换的对象是一个包含多项的表达式时,必须将表达式用括号括起。例如,将7/4的结果强制转换成double型,应该写成,double(7/4),此时由于7和4均为整型,故7/4的结果为整型1,强制转换为双精度型数据后,结果
18、仍为1,而写成,(double)7/4,则表示将7的数据类型强制转换为double型,再与4求商,结果是双精度型数据1.75。,三、新增bool类型,bool(布尔型,也称逻辑型)只有两个值,即整数0(表示逻辑假)和1(表示逻辑真)。在C+语言中还定义了这两个布尔型常量所对应的符号常量false和true,false的值为0,表示逻辑假,true的值为1,表示逻辑真。,由于逻辑值是整数0和1,所以它也能够像其他整数一样出现在表达式里,参与各种整数运算。,【例2-3】 布尔常量应用示例。,#include using namespace std; int main() cout布尔类型的符号常量
19、true对应的逻辑值是:trueendl; cout布尔类型的符号常量false对应的逻辑值是:falseendl; return 0; ,程序运行结果如图所示。,任务实施输出杨辉三角,案例说明,杨辉三角是一个由数字排列成的三角形数表,如图所示。,它描述的是两个未知数和的幂次方运算后的系数问题。例如,(xy)2x22xyy2,这样系数就是1,2,1,这就是杨辉三角的其中一行。依次下去,(xy)3、(xy)4等的运算结果的各项系数就构成了杨辉三角的其他各行。编写程序,根据输入的行数(小于14)输出杨辉三角。,案例分析,杨辉三角每行的数字是有一定规律的:每一行数字的个数等于所在的行数,每行的第一个
20、数字均为1,其后数字为:前面数字(数字所在行号(自1起)数字所在行中的序号(自0起)/数字所在行中的序号。,为了使输出的数字排列成如图所示的金字塔形状,需控制各行数字之间空格的个数。每行第一个数字之前空格的个数依次递减2,两个数字之间的空格个数有三种情况:如果输出的数字是一个一位数,则在该数字后输出3个空格;如果输出的数字是一个两位数,则在该数字后输出2个空格;如果输出的数字是一个三位数,则在该数字后输出1个空格。,根据以上规律,我们可以利用循环嵌套结构逐行逐个输出数字和空格。由于确定了行数,循环的次数也就跟着确定了,故我们使用的是for循环。,实施步骤,步骤1 在Visual C+中新建一个
21、C+ 源文件,根据分析编写代码如下:,#include void main() int n,r,c,m,j=0; coutm;,while (m=14)/如果连续三次输入的数字不符合要求,则退出程序 if (j=2) coutm; j+;/累计输入次数 ,for (n=0;n=m-1;n+)/逐行输出数字和空格 for(r=1;r15-n;r+)/*输出第一个数字之前的空格,为了打印出金 字塔形状,要保证各行依次递减2个空格*/ cout ; c=1;/第一个数字总为1 coutc ;/输出第一个数字以及3个空格 for(r=1;r=n;r+)/输出各行的其他数字和空格 c=c*(n-r+1)
22、/r;/计算应输出数字 if(c100)/根据数值大小确定数字后面的空格个数 if(c10) coutc ;/一位数的后面输出3个空格 else coutc ;/两位数的后面输出2个空格 else coutc ;/三位数的后面输出1个空格 coutendl;,步骤2 经编译、连接后,程序运行结果如图所示。,任务二 学习有关函数方面的区别,任务说明,在本任务中,我们来学习C+语言与C语言在函数语法和使用方面的区别。,预备知识,一、局部变量随用随定义,二、作用域限定符:扩大全局变量的可见范围,三、形式参数可带有默认值,四、内联函数,在C+中,允许变量定义语句在程序中的任何地方,只要在是使用它之前就
23、可以;而C语言中,必须要在函数开头部分。另外,C+允许重复定义变量,C语言标准中是不允许的。,通常情况下,如果全局变量与局部变量同名,局部变量在其作用域内具有较高的优先权,将会屏蔽全局变量。在C+中,可以通过作用域限定符“:”访问被屏蔽的全局变量。,二、作用域限定符:扩大全局变量的可见范围,一、局部变量随用随定义,【例2-4】 使用作用域限定符: 访问被屏蔽的全局变量。,#include using namespace std; int v1=80; int main() int v1=8; coutv1; coutn您输入的v1值是v1endl; coutn全局变量v1的值是:v1endl;
24、 return 0; ,程序运行结果如图所示。,三、形式参数可带有默认值,通常情况下,在调用函数时要为函数的每个形参赋予一个相应的实参值。但有时在主调函数中没有给出实参,或者多次调用同一函数使用同样的实参时,给形参设置一个默认值,被调函数就可以按指定的默认值来执行。,函数形参的默认值可以在函数原型的声明中或函数定义中指定。例如:,float area(float r=2.5);,指定r的默认值为2.5,在调用此函数时可以不必给出实参的值,即等价于调用area(2.5)。,如果函数中有多个形参,可以为每个形参指定一个默认值,也可以只对部分形参指定默认值,指定默认值必须按照从右到左的顺序进行。即为
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向对象程序设计项目教程完整版教学课件 整套教程电子讲义最全最新 面向 对象 程序设计 项目 教程 完整版 教学 课件 整套 电子 讲义 最新
限制150内