面向对象的程序设计语言C课件468页.ppt
《面向对象的程序设计语言C课件468页.ppt》由会员分享,可在线阅读,更多相关《面向对象的程序设计语言C课件468页.ppt(468页珍藏版)》请在三一文库上搜索。
1、面向对象的程序设计语言C+,面向对象程序设计语言,前言 第1节 C+语言概述 第2节 数据类型和表达式 第3节 预处理和语句 第4节 函数和作用域 第5节 类和对象(一) 第6节 类和对象(二) 第7节 继承性和派生类 第8节 多态性和虚函数 第9节 C+的I/O流库,面向对象的程序设计语言,1、面向对象的程序设计语言必须支持下列概念: 封装的对象 类和实例的概念 类间的继承 多态性 2、面向对象程序设计语言的基本特征: 对象、类、继承性、信息隐藏、强类型化、并发性、持久性。,1.1 C语言与面向对象的C,(1)C语言既具备高级语言的结构和编程环境,又提供类似于汇编语言那样的系统资源操纵能力及
2、程序执行效率。适合解决有实时要求的问题。,C语言的主要特点:,(2)有丰富的运算符和数据类型,表达式类型多样化,可以方便地实现在其他语言中较难实现的运算,对各种不同类型的程序设计都有良好的适应性。,(3)以函数为基础实现程序的结构化设计,支持大型程序的多文件构成及单个文件独立编译,适合大型复杂程序的设计。,(4)语言简洁、紧凑,使用方便、灵活,书写形式自由。,(5)可移植性好。,1.1 C语言与面向对象的C,C+是由C发展成为的以面向对象为主要特征的语言。作为C语言的超集,C+继承了C的所有优点,又对数据类型做了扩充,使得编译系统可以检查出更多类型错误。,C+支持面向对象程序设计,通过类和对象
3、的概念把数据和对数据的操作封装在一起,通过派生、继承、重载和多态性等特征实现了软件重用和程序自动生成,使得大型复杂软件的构造和维护变得更加有效和容易。,1.2 C+对面向对象程序设计方法的支持,C+支持数据封装(数据抽象),C+中,类是支持数据封装的工具,对象则是数据封装的实现;,C+中包含有私有、公有和保护成员,每个可能的消息对应一个相应的方法,方法通过函数来定义;,C+中通过发送消息来处理对象,C+中允许友元破坏封装性,C+中允许函数名和运算符重载,C+支持继承性,C+支持动态联编,1.2. 2 C+对C语言的改进,增加了新的运算符::,new,delete等;,改进了类型系统,增加了安全
4、性;,引进了引用概念;,允许函数重载,允许设置缺省参数,提高了编程的灵活性;,引进了内联函数,提高了程序的效率;,可以根据需要随时对变量进行说明;,1.3 C+程序的编辑、编译和运行,一、编辑:源文件的扩展名为.cpp,二、编译,1、预处理过程,词法分析:单词,语法分析:构造程序的格式,符号表:程序中的各种符号及其属性,错误处理程序:,生成目标代码:目标文件扩展名.obj,2、编译 过程,3、连接过程:可执行文件扩展名.exe,三、运行,1.3 C+程序的编辑、编译和运行(续),1.4.1 C+的字符集,大小写的英文字母:az,AZ,数字字符:09,特殊字符,1.4.2 词法记号,1、关键字(
5、保留字),1.4.2 词法记号(续),2、标识符,组成规则:以字母或下划线开始,其后跟零个或多个字母、数字或下划线;,不能以数字开始,正确标识符:Result, DoubleList, _first, first_ 错误标识符:1first,标识符的长度任意(受编译器限制);,区分字母的大小写;,不能使用系统的保留字;,例如:ADD, Add, add,1.4.2 词法记号(续),3、运算符,单目,双目,三目,运算符,5、分隔符,(),分隔符,:,4、各种文字,数字,字符文字,串文字,文字,布尔文字,;,1.4.3 空白,一、空白,包括:空格、制表符、换行符、注释,功能:指示词法记号的开始和结
6、束位置;,二、注释,/*/,/,1.5 C+程序的结构,一、C+示范程序,#include void main() cout“Hello world! “endl; ,二、C+程序的组成,预处理命令,输入输出,函数,语句,变量,其他,I/O流库,提供所 有的输入输出操作,cout:流类对象 :提取符 例如: coutab; endl:换行;,1.6 vc+程序设计环境,1VC+可视化集成开发环境,(1)建立控制台程序的基本步骤 建立一个程序,运行后输出“This is a C+ program.”, 源程序如下: #include void main() cout “This is a C+
7、program“ endl ; 创建新工程 创建C+源程序文件 编译连接和运行源程序 关闭、打开工作区,2VC+环境下的程序开发实例,输出结果,(2)基于MFC的程序开发的基本步骤 这里以设计一个如下图所示的对话框窗口程序,建立新的工程文件,选择可视化控件拖到对话框窗口 进入编辑屏幕后,首先规划对话框窗口的布局,确定对话框窗口的界面。在控件面板中选择相应的控件后拖放到对话框窗口的适当位置,设置控件的属性 在属性对话框中设置控件的属性,如“Static Text”、“Button”控件的“Caption”属性 为新生成的类定义公有数据成员和方法,为新的对话框类添加方法 即为对话框中的某些控件添加
8、事件代码。比如本例希望单击“Button1”按钮后,能将IDC_Edit1中的文本复制到IDC_Edit2中来,就需要为“Button1”按钮添加“单击”事件代码,下面是该事件的实现代码: void CExampleDlg:OnButton1() / TODO: Add your control notification handler code here CString strExpression; m_edit1.GetWindowText(strExpression); m_edit2.SetWindowText(strExpression); 最后Compile或Build程序,得到可
9、执行的应用程序,第2节 数据类型和表达式,2.1 基本数据类型 2.2 常量和变量 2.3 数组类型 2.4 枚举类型 2.5 指针和引用 2.6 运算符 2.7 表达式 2.8 类型定义,2.1 基本数据类型,一、基本数据类型,整型int,浮点型(实型),字符型char,基本数据类型,逻辑型bool,空值型void,单精度浮点数float,双精度浮点数double,用于函数和指针,2.1 基本数据类型(续),二、数据类型修饰符,signed:有符号,unsigned:无符号,short:短型,long:长型,说明:,3) long修饰符还适用于双精度浮点数;,2) 上述修饰符均可用于整型和字
10、符型;,1) 类型修饰符可以修饰除void、bool类型以外的其他类型;,2.1 基本数据类型(续),三、基本数据类型列表,2.1 基本数据类型(续),说明:,1) 表中的int可以省略,即在int之前有修饰符出现时,可以省略关键字int;,2) 单精度类型float、双精度类型double、长精度类型long double统称浮点类型;,3) char类型和各种int类型统称整型类型;char类型变量在内存中以它的ASCII码值的形式存储;,4) 字宽(字节)取决于操作系统和编译器的实现,可用sizeof验证;,2.2.1 常量,一、整型常量(无小数部分),1、表示方法,十进制,八进制,十六
11、进制,2、十进制表示,由09的数字组成,不能以0开始,无前缀,例:132, -345,3、八进制表示,由0 7的数字组成,以0为前缀,例:010, -0536,4、十六进制表示,由09的数字及A F的字母(大小写均可)组成,以0x或0X为前缀,例:0x7A, -0X3de,2.2.1 常量(续),5、说明:,1) 长整型用L(或l)做后缀表示。例如: 32765L,793l;,2) 无符号型用U(或u)做后缀表示。例如: 4352U,3100u;,3) unsigned long型用后缀U(或u)和L(或l)一起表示,L与U的先后顺序无关。例如: 49321ul,37825LU,41152Lu
12、;,4) 无后缀时,整型常量类型按如下顺序确定: int, (unsigned), long, unsigned long,十进制时无,2.2.1 常量(续),二、浮点型常量,由整数部分和小数部分构成;,只有十进制表示;,一般表示形式(小数表示形式):,整数部分与小数部分可以省去一部分,但不能全部省去;,例如:5.,.25,4.07,2.2.1 常量(续),科学表示形式:,在小数表示法后面加E(或e)表示指数;,例如:23.5E6,.032E-5,.3e10,指数部分可正可负,但必须为整数;,浮点常量的缺省数据类型为double型;,后缀F(或f)表示float类型;,后缀l(或l)表示lon
13、g double类型;,2.2.1 常量(续),三、字符常量,由一对单引号括起的一个字符表示;,其值为所括起字符在ASCII表中的编码;,所括起字符的表示方法:,图形表示法,该方法适用于有图形符号的可打印字符; 例如:A,a,*,转义序列表示法,该方法适用于所有字符,尤其是无图形符号的不可打印字符;,2.2.1 常量(续),转义序列表示方法:以反斜线()开头,后跟字符的ASCII码值;,八进制表示:ddd; 例如:101,十六进制表示:xhh; 例如:x41,表2-2 C+中常用转义序列符,2.2.1 常量(续),四、布尔常量,有两个值:true和false;,五、字符串常量(串常量,字符串)
14、,一对双引号括起的字符序列,字符序列可以包含空格、转义序列或任何其他字符,这些字符不一定是C+字符集中的字符,只要C+编译器支持即可;,例如:“This is a string; “,串常量与字符常量的区别:,2.2.1 常量(续),由一个字符型变量存放,由一维数组存放,字符常量,串常量,用单引号括起,用双引号括起,字符串有一个结束符,该结束符用0表示,字符常量a在内存中占用一个字节,字符串常量“a“在内存中占用两个字节,可进行加、减法运算,可进行连接、拷贝运算,2.2.1 常量(续),六、符号常量,用来表示C+中的常量,即用一个与常量相关的标识符来替代常量;,优点:增加可读性,增强可维护性;
15、 例如:PI表示3.1415926,定义方法:使用类型说明符const; 例如:const int size=80;,定义的符号常量必须初始化;,一个符号常量可看作是一个只读变量,由const定义的常量的值不可以改变;,Line1: #include Line2: const double pi=3.1415; Line3: const double r; Line4: void main() Line5: Line6: double perimeter,area; Line7: perimeter=2*pi*r; Line8: pi=3.14; Line9: area=pi*r*r; Lin
16、e10: coutperimeter“, “areaendl; Line11: ,2.2.1 常量(续),const double r=3.2;,错误,错误,不能修改pi的值,地址值,2.2.2 变量,一、变量的三个基本要素,名字,类型,值,三要素,数据值,地址值,int c; c=5;,变量 类型,变量名,数据值,二、变量的定义,可以在程序中随时定义变量,只要在该变量被使用前定义即可;,定义格式: ; 例如:int a,b,c; double x,y,z;,2.2.2 变量(续),同一程序块内不可以定义同名变量;,初始值,变量定义时可赋初始值;,声明格式:,数据类型 标识符1(初始值1),
17、,标识符n(初始值n); 数据类型 标识符1=初始值1, ,标识符n=初始值n;,例如:double price=15.5; int size=100;,未被初始化的变量的值或者是默认值,或者是无效值,由变量类型决定;,变量可被赋值,由变量名标识;,2.3 数组类型,数目固定、类型相同的若干个变量的有序集合;,2.3.1 数组的定义,1、格式, ;,说明:,方括号( )表示数组的维; 某维的大小必须是大于1的常量表达式;,2、示例,int a3; char b35; const int size=80; int msize;,2.3.2 数组的赋值,1、数组元素的表示,下标表示:,;,说明:,
18、为常量表达式; 下标从0开始; 各个元素在内存中按其下标的升序顺序连续存放;,指针表示:,2.3.2 数组的赋值(续),2、数组元素赋初值,利用初始值表(由一对花括号括起来的若干数据项组成)实现;,数组元素的个数要大于等于初始值表中数据项的个数;,例如:int a5=1,2,3,4,5; int a4=5,4; int b23=1,2,3,4,5,6; int b23=1,2,3,4,5,6;,3、数组元素的赋值,例如:int m3; m0=5; m1=3; m2=1;,2.3.3 字符数组,说明:,字符数组是指数组元素是char类型的数组; 注意字符常量、字符数组与字符串常量的区别;,例如:
19、,char s14=a, b, c, d;,字符数组,char s25=a, b, c, d, 0;,字符数组 (字符串常量),char s25=“abcd“;,char s35=“abcde“;,char s3=“abcde“;,2.4 枚举类型,枚举类型是若干个有名字的整型常量的集合;,2.4.1 枚举声明和枚举变量,一、枚举声明,enum ;,由若干个枚举符组成,多个枚举符之间用逗号分隔;,枚举符是用标识符表示的整型常量,又称枚举常量;,枚举常量的值默认为最前边的一个为0,其后的值依次加1;,枚举常量的值也可显式定义,未显式定义的则在前一个值的基础上加1;,2.4.1 枚举声明和枚举变量
20、(续),二、枚举变量,例如:enum day Sun,Mon,Tue,Wed,Thu,Fri,Sat; enum day Sun=7,Mon=1, Tue,Wed,Thu,Fri,Sat;,枚举变量的值不一定互不相同;,enum ;,多个枚举变量之间用逗号分隔;,例如: enum day d1,d2,d3; enum day Sun,Mon,Tue,Wed,Thu,Fri,Sat d1,d2,d3;,2.4.2 枚举变量的值,其值是该枚举变量所属的枚举声明的枚举表的某一个枚举符;,利用枚举符所表示的整型值给枚举变量赋值时,需要进行类型强制;,例如: d1=Sun; d2=Sat; d3=(en
21、um day)4;,2.5.1 指针,1、什么是指针,指针是用来存放某个变量的地址值的一种变量;,指针的类型是它所指向变量的类型;,指针本身数据值的类型是unsigned long int型;,例如: int a(5); int *p=,2.5.1 指针(续),2、如何定义指针,例如: int *pi; char (*pa)3; float *pl; int (*pf)(); char *pc; int *pp;, *, *,;,3、指针的赋值(内存地址值),指针必须被赋值后才可使用;,一般变量、数组元素、结构成员的地址值为变量名前加运算符&;,数组的地址值用该数组名表示;,2.5.1 指针(
22、续),函数的地址值用该函数的名字表示;,例如: int a,b10; double sin(double x); int *p=,3、指针的运算,赋值运算。例如:int a,*p=,一个指针可以加上或减去一个整数值;,a与&a0 相同,2.5.2 指针和数组,1、C+中指针与数组的关系,C+通过指针访问数组中的每个元素;,2、一维数组的指针表示法,C+中规定:任何一个数组的名字是一个常量指针,其值是该数组的首元素的地址值;,例如: int a5; 数组表示法:ai,i=0,1,2,3,4 指针表示法:*(a+i),2.5.2 指针和数组(续),3、二维数组的指针表示法,int b25;,数组表
23、示法:bij i=0,1; j=0,1,2,3,4,指针表示法: *(b+i)+j) *(bi+j) (*(b+i)j (&b00+5*i+j),4、三维数组的指针表示法(同二维),5、示例,2.5.2 指针和数组(续),例2.1:分析下列程序的输出结果。,#include void main() static int a5=5,4,3,2,1; int i,j; i=a0+a4; j=*(a+2)+*(a+4); coutiendljendl; ,输出,6 4,2.5.3 引用,标识对象的一种机制;,对对象存储地址的抽象,但引用不是值;,引用有类型;,变量的别名;,1、定义格式,2、初始化与
24、赋值,定义引用时必须初始化;,可以将一个引用赋给某个变量;,引用可被赋值;,2.5.3 引用(续),示例: int a=3; int ,8,m,定义引用并初始化,将引用赋值给变量,a=8,对引用的操作就是对被引用者的操作,3、引用的功能,用做函数的参数或函数的返回值;,函数不能返回对局部对象的引用;,2.5.3 引用(续),示例: int ,错,r是局部对象,4、指针与引用的区别,指针通过地址间接访问某个变量,引用通过别名直接访问某个变量;,引用必须初始化,一旦被初始化后不得再作为其他变量的别名;,正确:int ,为什么?,2.5.3 引用(续),例2.4:分析下列程序的输出结果。,#incl
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 程序设计语言 课件 468
链接地址:https://www.31doc.com/p-2643208.html