c++课件,学计算机的必看!

上传人:M****1 文档编号:586632097 上传时间:2024-09-05 格式:PPT 页数:56 大小:596KB
返回 下载 相关 举报
c++课件,学计算机的必看!_第1页
第1页 / 共56页
c++课件,学计算机的必看!_第2页
第2页 / 共56页
c++课件,学计算机的必看!_第3页
第3页 / 共56页
c++课件,学计算机的必看!_第4页
第4页 / 共56页
c++课件,学计算机的必看!_第5页
第5页 / 共56页
点击查看更多>>
资源描述

《c++课件,学计算机的必看!》由会员分享,可在线阅读,更多相关《c++课件,学计算机的必看!(56页珍藏版)》请在金锄头文库上搜索。

1、WelcometoC+world!C+C+面向对象程序设计面向对象程序设计软件学院软件工程系软件学院软件工程系任课教师:任课教师:田琳琳田琳琳从从C C到到C+C+C+起源起源主要过渡特性主要过渡特性面向对象与面向过程面向对象与面向过程1.由由C到到C+的演化的演化n n19781978年,年,年,年,Kernighan & RitchieKernighan & Ritchien n ?The C Programming Language ? ?The C Programming Language ?n n19901990年,年,年,年,C C的标准化的标准化的标准化的标准化 n n优点优点优

2、点优点n n 高效灵活,功能和表达丰富,可移植性好;高效灵活,功能和表达丰富,可移植性好;高效灵活,功能和表达丰富,可移植性好;高效灵活,功能和表达丰富,可移植性好;n n 操作系统的开发工具操作系统的开发工具操作系统的开发工具操作系统的开发工具n n局限局限局限局限n n 类型检查机制较弱类型检查机制较弱类型检查机制较弱类型检查机制较弱n n 不支持代码重用不支持代码重用不支持代码重用不支持代码重用n n面向过程程序设计面向过程程序设计n n设计思想设计思想proceduralprogrammingn n将复杂过程简单的按功能分层,将复杂过程简单的按功能分层,从而解决问题。从而解决问题。n

3、n标准的过程化程序过程的功标准的过程化程序过程的功能划分与过程内部的编写能划分与过程内部的编写1.由由C到到C+的演化的演化inputoutputFunctionfun1fun2fun3fun4fun5fun6fun7main C程序的结构图程序的结构图面向过程的面向过程的C程序程序1.由由C到到C+的演化的演化n n19801980年,年,年,年,BellBell的的的的Bjarne StroustrupBjarne Stroustrup推出推出推出推出C+C+。 n nC+C+是是是是C C的改进和扩充的改进和扩充的改进和扩充的改进和扩充n nC+C+语言包括过程性语言和类两局部。语言包括

4、过程性语言和类两局部。语言包括过程性语言和类两局部。语言包括过程性语言和类两局部。 n n保持了保持了保持了保持了C C的简洁性和高效性。的简洁性和高效性。的简洁性和高效性。的简洁性和高效性。n n支持面向对象的程序设计支持面向对象的程序设计支持面向对象的程序设计支持面向对象的程序设计n n ( OOP, Object Oriented Programming) ( OOP, Object Oriented Programming)n nC+C+程序由类程序由类程序由类程序由类(class)(class)和函数和函数和函数和函数(function)(function)组成。组成。组成。组成。C

5、+的历史n nBjarne Stroustrup-C+之父n n主页: n n :/ research.att /bs/n n :/n n经典巨作:n n?The C+ Programming Language?n n?The Design and Evolution of C+?n n 中文版:n n?C+程序语言设计?n n?C+语言的设计和演化?C+程序设计程序设计程序控制结构程序控制结构函数函数数组与指针数组与指针结构结构面向对象面向对象面向对象面向对象程序设计方法程序设计方法程序设计方法程序设计方法n n设计和实现设计和实现设计和实现设计和实现C+C+C+C+语言时,既保存了语言时,

6、既保存了语言时,既保存了语言时,既保存了C C C C语言的有效语言的有效语言的有效语言的有效性、灵活性、便于移植等全部精华和特点,又性、灵活性、便于移植等全部精华和特点,又性、灵活性、便于移植等全部精华和特点,又性、灵活性、便于移植等全部精华和特点,又添加了面向对象编程的支持,具有强大的编程添加了面向对象编程的支持,具有强大的编程添加了面向对象编程的支持,具有强大的编程添加了面向对象编程的支持,具有强大的编程功能,编写出的程序具有结构清晰、易于扩充功能,编写出的程序具有结构清晰、易于扩充功能,编写出的程序具有结构清晰、易于扩充功能,编写出的程序具有结构清晰、易于扩充等优良特性,适合于各种应用

7、软件、系统软件等优良特性,适合于各种应用软件、系统软件等优良特性,适合于各种应用软件、系统软件等优良特性,适合于各种应用软件、系统软件的程序设计。的程序设计。的程序设计。的程序设计。n n C+ C+ C+ C+语言由语言由语言由语言由C C C C语言扩展而来,同时它又对语言扩展而来,同时它又对语言扩展而来,同时它又对语言扩展而来,同时它又对C C C C语言语言语言语言的开展产生了一定的影响,的开展产生了一定的影响,的开展产生了一定的影响,的开展产生了一定的影响,ANSI CANSI CANSI CANSI C语言在标准语言在标准语言在标准语言在标准化过程中吸收了化过程中吸收了化过程中吸收

8、了化过程中吸收了C+C+C+C+语言中某些语言成分。语言中某些语言成分。语言中某些语言成分。语言中某些语言成分。From C to C+ C C语言与言与C+C+的关系的关系2.C+对对C语言的扩展语言的扩展C+C+C+C+语言对语言对语言对语言对C C C C语言在结构化方面相应的扩展:语言在结构化方面相应的扩展:语言在结构化方面相应的扩展:语言在结构化方面相应的扩展: n n头文件与库函数n n输入输出语句n n关键字n n常量与变量n n根本类型n n函数按引用传递数据按引用传递数据函数重载函数重载1 1头文件与流对象头文件与流对象 #include #include : 包包含的头文件

9、含的头文件 using namespace std; using namespace std; : 名名字空间字空间 提取运算符提取运算符2.C+对对C语言的扩展语言的扩展stdio.hprintf()scanf()iostream.hcout2 2程序块中的变量声明程序块中的变量声明 将几个语句用大括号将几个语句用大括号 组合组合起来就构成了一个程序块。起来就构成了一个程序块。 在在C C语言中,变量的声明只允语言中,变量的声明只允许出现在程序块的开始许出现在程序块的开始; ; 而在而在C+C+语言中变量声明可以语言中变量声明可以出现在任何位置。出现在任何位置。2.C+对对C语言的扩展语言的

10、扩展如下面的程序片断:如下面的程序片断:for(inti=0;i10;i+)sum+=i;2.C+对对C语言的扩展语言的扩展3 3常量常量 C+ C+语言中增加了常量类型用标语言中增加了常量类型用标识符识符constconst声明,其值在作用域声明,其值在作用域内保持不变内保持不变 const int maxSize=128 const int maxSize=128; const int iArray const int iArray =1,2,3,4,5,6;=1,2,3,4,5,6; char * const str1= Hello char * const str1= Hello wo

11、rld! ;world! ; const char *str2 = Hello, const char *str2 = Hello, C+;C+;#define / const2.C+对对C语言的扩展语言的扩展4根本类型布尔型: bool flag = true ; flag = false;枚举型: enum WeekDay = Sun,Mon,Tue,Wed,Thu,Fri,Sat ; WeekDay today = Wed ; 结构体 struct Student ; Student stu;类类型 class Person ; Person teacher 4 ;2.C+对对C语言的扩

12、展语言的扩展5 5作用域标识符作用域标识符增加了作用域标识符增加了作用域标识符:名字解析名字解析运算符,以解决局部变量名与全运算符,以解决局部变量名与全局变量的同名重复问题。在局部变局变量的同名重复问题。在局部变量的作用域内可用作用域标识符:量的作用域内可用作用域标识符:对被其隐藏的同名全局变量进行访对被其隐藏的同名全局变量进行访问。问。int x=0;int x=0;void test(int x)void test(int x) x=5; x=5; /此处引用局部变量此处引用局部变量:x=9;:x=9;/此处引用全局变量此处引用全局变量 2.C+对对C语言的扩展语言的扩展6动态空间申请动态

13、空间申请new与与delete的用法的用法int*p1=(int*)malloc(sizeof(int)*length);free(p1);int*p2=newintlength;deletep2;/释放数组用法释放数组用法deletep2;/释放单个元素释放单个元素new Vs mallocn n1 1、new new 是是c+c+中的操作符,中的操作符,n n malloc malloc是是c c 中的一个函数中的一个函数n n2 2、new new 不止是分配内存,而且会调用类的构不止是分配内存,而且会调用类的构造函数,同理造函数,同理deletedelete会调用类的析构函数;会调用类

14、的析构函数;n n 而而mallocmalloc那么只分配内存,不会进行初始化那么只分配内存,不会进行初始化类成员的工作,同样类成员的工作,同样freefree也不会调用析构函数也不会调用析构函数n n3 3、内存泄漏、内存泄漏Memory leak Memory leak 2.C+对对C语言的扩展语言的扩展C+C+程序中的函数程序中的函数函数的声明函数的声明函数的定义函数的定义函数参数传递和返回值函数参数传递和返回值 参数的按值参数的按值/ 按地址按地址/ 按引用传递按引用传递函数的调用函数的调用 递归与迭代递归与迭代内联函数内联函数 默认参数默认参数 函数重载与函数模板函数重载与函数模板l

15、例如程序例如程序lswap.cppl课堂练习课堂练习l将将swap2.c按要求改成能够正确运行的按要求改成能够正确运行的CPP程序程序 C+ C+函数调用中的数据传递函数调用中的数据传递1 1。 参数的按值传递参数的按值传递 数按值调用传递时,生成实际参数值副本并传给被调用数按值调用传递时,生成实际参数值副本并传给被调用 函数的形式参数。函数的形式参数。 副本副本(行参行参)的改变并不影响调用者的原始变量值的改变并不影响调用者的原始变量值 (实参实参). 函数内对形参的访问、修改,都在形参的标识对象进 函数返回时,形参对象被撤消,不影响实参的值 防止意外的副作用影响开发正确、可靠的软件系统。防

16、止意外的副作用影响开发正确、可靠的软件系统。 值传送的实参可以是常量、有确定值的变量或表达式值传送的实参可以是常量、有确定值的变量或表达式 函数返回值通过匿名对象传递函数返回值通过匿名对象传递/ 例例 交换对象的值交换对象的值# include void swap ( int , int ) ;void main ( ) int a = 3 , b = 8 ; cout a = a , b = b endl ; swap ( a , b ) ; cout after swapping. n ; cout a = a , b = b endl ;void swap ( int x , int y

17、 ) int temp = x ; x = y ; y = temp ;3a8b x y3x8y83 通通过过地址地址传递实传递实参数据参数据形参指形参指针对应针对应的的实际实际参数是地址表达式,即参数是地址表达式,即对对象的指象的指针针; ;实际实际参数把参数把对对象的地址象的地址值赋给值赋给形式参数名形式参数名标识标识的指的指针变针变量量; ;被被调调用函数通用函数通过过形参指形参指针间针间接接访问实访问实参所指参所指对对象象; ; 2。参数的按地址传递参数的按地址传递/ 例例 交换对象的值交换对象的值# include void swap ( int * , int * ) ;void

18、main ( ) int a = 3 , b = 8 ; cout a = a , b = b endl ; swap ( &a , &b ) ; cout after swapping. n ; cout a = a , b = b endl ;void swap ( int * x , int * y ) int temp = * x ; * x = * y ; * y = temp ;3a8bxy3a8b&a&ax&b&by *x *y *x *y/ 例例 交换对象的值交换对象的值# include void swap ( int * , int * ) ;void main ( ) i

19、nt a = 3 , b = 8 ; cout a = a , b = b endl ; swap ( &a , &b ) ; cout after swapping. n ; cout a = a , b = b endl ;void swap ( int * x , int * y ) int temp = * x ; * x = * y ; * y = temp ;8a3b3. 3. 按引用传递参数按引用传递参数对一个数据可以使用对一个数据可以使用“引用引用(reference)的方式声明,的方式声明,引用的作用是为一个变量起一个别名引用的作用是为一个变量起一个别名这是这是C+对对C的一

20、个重要扩充,引用是一种新的变量类型。的一个重要扩充,引用是一种新的变量类型。一般形式:一般形式:Type&varible2=varible1;Eginta;int&b=a;/声明声明b是是inta的引用的引用b=20;/a=20声明变量声明变量b为引用类型,并不需要另外开辟内存单元来存为引用类型,并不需要另外开辟内存单元来存放放b的值。的值。b和和a占内存中的同一个存储单元,它们具有同一地址。占内存中的同一个存储单元,它们具有同一地址。20ab使用引用的常见错误使用引用的常见错误在一条语句中声明多个引用时应在一条语句中声明多个引用时应逐一逐一声明声明int&x=a,y=b,z=c;/error

21、int&x=a,&y=b,&z=c;声明引用变量必须进行初始化,引用未定义变量称悬挂引用。声明引用变量必须进行初始化,引用未定义变量称悬挂引用。intx,&y,*p; / Erroz: y must be initialized将前面声明的引用重新变为另一变量的别名是个逻辑错误将前面声明的引用重新变为另一变量的别名是个逻辑错误.inty=5,z=3;int&x=z,&x=y;3. 3. 按引用传递参数按引用传递参数void main ( ) int number=20; . cout change_it(number); cout number; int change_it (int& val

22、ue) value+10; return value;引用参数引用参数int&value=number直接引用直接引用number返回返回value值的副本给调用函数值的副本给调用函数3 3。参数的按引用传递。参数的按引用传递形参为实参的引用形式,扩充函数传递数据的功能形参为实参的引用形式,扩充函数传递数据的功能引用参数即函数的参数是按引用传递,引用参数即函数的参数是按引用传递,引用参数为调用函数中实参的别名。引用参数为调用函数中实参的别名。引用参数形式引用参数形式在函数原型中该参数类型后面加上在函数原型中该参数类型后面加上&,fuc(int&count)在函数调用中,只指定变量名,该变量通过

23、引用在函数调用中,只指定变量名,该变量通过引用传递。传递。被调用函数可直接修改原始变量实参被调用函数可直接修改原始变量实参在被调用函数体中,通过参数名指定的变量实际在被调用函数体中,通过参数名指定的变量实际上就是上就是引用调用函数中的原始变量。引用调用函数中的原始变量。3. 3. 按引用传递参数按引用传递参数引用传递的特点引用传递的特点消除了复制大量数据的开销,有利提高执行效率;消除了复制大量数据的开销,有利提高执行效率;在被调用函数中直接使用形参变量,提高可读性;在被调用函数中直接使用形参变量,提高可读性;平安性较差,被调用函数能直接访问和修改调用者平安性较差,被调用函数能直接访问和修改调用

24、者的数据。的数据。假设要传递较大的对象,用常量引用参数模拟按假设要传递较大的对象,用常量引用参数模拟按值调用值调用要指定引用常量,在参数声明的类型说明符前面要指定引用常量,在参数声明的类型说明符前面加上加上const。int change_it ( const int& value);3 3。参数的按引用传递。参数的按引用传递7 7引用引用引用的目的是为了消除指针引用的目的是为了消除指针引用顾名思义就是引用这个变量引用顾名思义就是引用这个变量引用必须初始化。引用总是指向在初始化时引用必须初始化。引用总是指向在初始化时被指定的对象,以后不能改变。被指定的对象,以后不能改变。不存在指向空值的引用。

25、所以在使用引用之不存在指向空值的引用。所以在使用引用之前不需要测试它的合法性。前不需要测试它的合法性。int a;int a;int &b=a;int &b=a;C+对对C语言的扩展语言的扩展C+特性:引用 内内联联函数函数inlineinline C C+为为降低小程序降低小程序调调用开用开销销的一种机制。的一种机制。默默认认参数参数值值 default parameter valuedefault parameter value 函数参数的默函数参数的默认值认值使得在函数使得在函数调调用用时时可不指定参数。可不指定参数。重重载载函数函数 overloaded functionoverloa

26、ded function 函数重函数重载载是以同一个名字命名多个函数是以同一个名字命名多个函数实现实现版本版本 。8函数重载C+语言可实现函数重载,即多个函数在同一作用域可以用相同的函数名,编译器在编译时可以根据实参的类型来选择应该调用的函数。在C+中,对相同功能但参数类型不同的函数可以使用相同的函数名,在调用时无需记忆多个函数名,而由编译器根据参数类型选择。2.C+对对C语言的扩展语言的扩展int iNum1=5,y=iNum2;double dNum1=1.2, dNum2=2.3;float fNum1=1.1f, fNum2=2.2f;cout compare(iNum1,iNum2)

27、 compare(dNum1,dNum2) y) return 1; else return 0;intcompare(floatx,floaty) if(xy) return 0; else return 1; intcompare(doublex,doubley) if(xy) return 0; return 1; int compare(char c1, char c2) return c1c2? 0 : 1; 重载函数重载函数9 9 缺省参数缺省参数 在在C+C+语言中,函数参数允许使用语言中,函数参数允许使用缺省值。当函数调用时,假设给出的缺省值。当函数调用时,假设给出的参数个数少

28、于函数表中参数的总数时,参数个数少于函数表中参数的总数时,那么所缺参数自动取函数参数表中设那么所缺参数自动取函数参数表中设置的缺省值。置的缺省值。 void f(int x, int y=10)void f(int x, int y=10) 。 f(2);/f(2,10) f(2);/f(2,10)。 函数可以有多个缺省参数,但应注意函数可以有多个缺省参数,但应注意只能从右往左缺省,例如:只能从右往左缺省,例如: int f1(int x, int y=0, int int f1(int x, int y=0, int z=0); /z=0); /正确正确 int f2(int x, int

29、y=0, int z); int f2(int x, int y=0, int z); /错误错误2.C+对对C语言的扩展语言的扩展3.面向对象思想概述面向对象思想概述n n面向对象的编程思想力图使在计算机语言面向对象的编程思想力图使在计算机语言中对事物的的描述与现实世界中该事物的中对事物的的描述与现实世界中该事物的本来面目尽可能的一致。本来面目尽可能的一致。 n n类类(class)(class)和对象和对象(object)(object)是面向对象方法是面向对象方法的核心概念。的核心概念。 类是对一类事物描述,是抽象的、概念上的类是对一类事物描述,是抽象的、概念上的定义;定义; 对象是实际

30、存在的该类事物的每个个体,也对象是实际存在的该类事物的每个个体,也称实例称实例(instance)(instance)。 面向过程程序设计面向过程程序设计n n设计思想设计思想设计思想设计思想proceduralprogrammingproceduralprogrammingn n将复杂过程简单的按功能分层,从而解决问题。将复杂过程简单的按功能分层,从而解决问题。将复杂过程简单的按功能分层,从而解决问题。将复杂过程简单的按功能分层,从而解决问题。n n过程化编程是面向操作的过程化编程是面向操作的过程化编程是面向操作的过程化编程是面向操作的(action-oriented)(action-ori

31、ented)n n结构化:结构化:结构化:结构化:n n描述任何实体的操作的序列只需三种根本控制结构描述任何实体的操作的序列只需三种根本控制结构描述任何实体的操作的序列只需三种根本控制结构描述任何实体的操作的序列只需三种根本控制结构n n模块化设计:模块化设计:模块化设计:模块化设计:n n程序设计中各个过程体和组成局部用模块表示程序设计中各个过程体和组成局部用模块表示程序设计中各个过程体和组成局部用模块表示程序设计中各个过程体和组成局部用模块表示n n过程化设计方法:过程化设计方法:过程化设计方法:过程化设计方法:n n自顶向下,逐步细化自顶向下,逐步细化自顶向下,逐步细化自顶向下,逐步细化

32、函数函数对象对象=算法算法数据结构数据结构程序程序=(对象对象+对象对象+对象对象+)+消息消息 程序程序=算法算法+数据结构数据结构+程序设计方法程序设计方法+语言工具和开发环境语言工具和开发环境发送消息发送消息面向对象程序设计面向对象程序设计类类 class 类类类类封封封封装装装装了了了了一一一一组组组组数数数数据据据据结结结结构构构构和和和和作作作作用用用用于于于于该该该该数数数数据据据据结结结结构构构构的的的的一组方法一组方法一组方法一组方法. . . . 面向对象语言必需提供的面向对象语言必需提供的面向对象语言必需提供的面向对象语言必需提供的用户定义的数据类型用户定义的数据类型用户

33、定义的数据类型用户定义的数据类型 把把把把具具具具有有有有相相相相同同同同属属属属性性性性的的的的事事事事物物物物划划划划分分分分为为为为一一一一类类类类,它它它它将将将将具具具具有有有有相相相相同同同同状状状状态态态态、操操操操作作作作和和和和访访访访问问问问机机机机制制制制的的的的多多多多个个个个对对对对象象象象抽抽抽抽象象象象成成成成为一个对象类。为一个对象类。为一个对象类。为一个对象类。面向对象程序设计面向对象程序设计对象对象对象对象 object object 构成世界的一个独立单位,它具有自构成世界的一个独立单位,它具有自构成世界的一个独立单位,它具有自构成世界的一个独立单位,它具

34、有自己的静态特征状态和动态特征己的静态特征状态和动态特征己的静态特征状态和动态特征己的静态特征状态和动态特征操作。操作。操作。操作。静态特征即可以用某种数据来描述的特静态特征即可以用某种数据来描述的特静态特征即可以用某种数据来描述的特静态特征即可以用某种数据来描述的特征征征征动态特征即对象所表现的行为或对象所动态特征即对象所表现的行为或对象所动态特征即对象所表现的行为或对象所动态特征即对象所表现的行为或对象所具有的功能。具有的功能。具有的功能。具有的功能。类给出了属于该类的全部对象的抽象定类给出了属于该类的全部对象的抽象定类给出了属于该类的全部对象的抽象定类给出了属于该类的全部对象的抽象定义,

35、对象那么是符合这种定义的一个义,对象那么是符合这种定义的一个义,对象那么是符合这种定义的一个义,对象那么是符合这种定义的一个实体。一个对象又称类的一个实例。实体。一个对象又称类的一个实例。实体。一个对象又称类的一个实例。实体。一个对象又称类的一个实例。Class&ObjectTeacher 姓名姓名 性别性别 课程课程 教课;教课; 研究;研究; 说话说话; 属性属性数据数据行为行为方法方法实例化实例化CppTeacher 姓名姓名:Linda 性别性别: F 课程课程:CPP 教课;教课; 研究;研究; 说话说话; Class&Object抽象抽象Student char name10 in

36、t age char sex int no float grade void study( ); int play(char*); .问题问题:输入圆的半径,求圆的周长和面积输入圆的半径,求圆的周长和面积 数据描述:数据描述:半径,周长,面积均用实型数表示半径,周长,面积均用实型数表示数据数据处处理理:输入半径输入半径 r;计算周长计算周长 = 2*r ;计算面积计算面积 = pi * r2 ;输出周长,面积;输出周长,面积;结构化编程的方法结构化编程的方法 一个简单的一个简单的C+C+程序程序 用面向对象方法编程用面向对象方法编程 分析分析“圆圆是抽象的是抽象的类类类类型型建立具体的建立具体

37、的圆圆 对对象象 半径?半径?圆的周长圆的周长 ?圆的圆的面积面积 ? 实例化实例化问题问题:输入圆的半径,求圆的周长和面积输入圆的半径,求圆的周长和面积 用面向对象方法编程用面向对象方法编程,求圆的周长和面积,求圆的周长和面积 分析分析圆类圆类 数据成数据成员员 半径半径 成成员员函数函数 置半径值置半径值 求圆的半径求圆的半径 求周长求周长 求面积求面积实例化实例化面向对象面向对象 vs 面向过程设计面向过程设计 面向过程面向过程面向对象面向对象程序执行程序执行步骤步骤通常按顺序执行通常按顺序执行在对象内执行在对象内执行独立其他对象独立其他对象数据项数据项变量变量;独立独立;位于程序中位于

38、程序中属性属性;属于一个对象属于一个对象;随对象而变随对象而变,具有某种行为具有某种行为激活方式激活方式调用函数调用函数发消息给对象发消息给对象数据与函数数据与函数保持分离保持分离结合成对象结合成对象事件发生事件发生函数执行时函数执行时方法执行时方法执行时活动涉及活动涉及函数和参数函数和参数对象对象,消息和参数消息和参数1.抽象抽象(abstraction)抽象的过程是将有关事物的共性抽象的过程是将有关事物的共性归纳、归纳、集中的过程。集中的过程。抽象的作用是表示同一类事物的抽象的作用是表示同一类事物的本质。本质。C+中的数据类型就是对一批中的数据类型就是对一批具体的数具体的数的抽象。的抽象。

39、对象是具体存在的,可以将其抽对象是具体存在的,可以将其抽象为一象为一种类型。种类型。类是对象的抽象,而类是对象的抽象,而对象那么是对象那么是类的特例,或者说是类的具体类的特例,或者说是类的具体表现形式。表现形式。2.封装封装(encapsulate)把把全全部部属属性性和和全全部部行行为为封封装装在在一一起起,形形成成一一个个不不可可分分割割的的独独立立单位即对象。单位即对象。信息隐蔽信息隐蔽(informationhiding)对对象象的的外外部部不不能能直直接接地地存存取取对对象象属属性性,只只能能通通过过几几个个允允许许外外部使用的效劳与对象发生联系。部使用的效劳与对象发生联系。对象间通

40、过发送消息进行交互对象间通过发送消息进行交互.接受消息接受消息的对象的对象发送消息发送消息的对象的对象 发送消息发送消息效劳器效劳器 客户客户3.继承继承(inheritance)软件重用软件重用(softwarereusability)采用继承的方法可以很采用继承的方法可以很方便地利用一个已有的类方便地利用一个已有的类建立一个新的类。建立一个新的类。类与类之间可以组成继承类与类之间可以组成继承层次层次一个类的定义派生类一个类的定义派生类可以定义在另一个已定可以定义在另一个已定义类基类义类基类的根底上。的根底上。派生类可以继承基类中的派生类可以继承基类中的属性和操作,也可以定义属性和操作,也可

41、以定义自己的属性和操作。自己的属性和操作。4.多态性多态性(polymorphism)(polymorphism)n n 由继承而产生的相关的不同的类,其对象由继承而产生的相关的不同的类,其对象由继承而产生的相关的不同的类,其对象由继承而产生的相关的不同的类,其对象 对同一消息会作出不同的响应。对同一消息会作出不同的响应。对同一消息会作出不同的响应。对同一消息会作出不同的响应。n n 对象的多态性是指在一般类中定义的属性对象的多态性是指在一般类中定义的属性对象的多态性是指在一般类中定义的属性对象的多态性是指在一般类中定义的属性或操作被特殊类继承之后,可以具有不同或操作被特殊类继承之后,可以具有

42、不同或操作被特殊类继承之后,可以具有不同或操作被特殊类继承之后,可以具有不同 的数据类型或表现出不同的行为。这使得的数据类型或表现出不同的行为。这使得的数据类型或表现出不同的行为。这使得的数据类型或表现出不同的行为。这使得同一个属性或操作名在一般类及其各个特同一个属性或操作名在一般类及其各个特同一个属性或操作名在一般类及其各个特同一个属性或操作名在一般类及其各个特殊类中具有不同的语义。殊类中具有不同的语义。殊类中具有不同的语义。殊类中具有不同的语义。n n多态性增加程序的灵活性。多态性增加程序的灵活性。多态性增加程序的灵活性。多态性增加程序的灵活性。 n n自学内容:n n根本输入输出方法n

43、n常量const的定义与使用n n带默认参数的函数的声明与调用n n重载函数的定义与调用n n内联函数的使用n n程序设计题目n n上机实验课后作业课后作业 课后试验课后试验1.实验目的实验目的目的:目的:快速掌握快速掌握C+语言编程的方法,在小范围语言编程的方法,在小范围内增强内增强C+的功能,的功能,标准编程,复习常用调式技巧标准编程,复习常用调式技巧主要内容有:主要内容有:1输入流、输出流的使用;输入流、输出流的使用;2new和和delete运算符分配内存。运算符分配内存。3函数的调用及按引用传递参数;函数的调用及按引用传递参数;4重载函数的定义及调用重载函数的定义及调用5常用调式方法常

44、用调式方法课后试验课后试验2实验内容:实验内容:1编写计算器程序:从键盘输入两个数编写计算器程序:从键盘输入两个数和运算符加,减,乘或除。计算并输和运算符加,减,乘或除。计算并输出结果,例如:出结果,例如:23+123=146。要用输入。要用输入和输出流运算符进行的输入和输出。和输出流运算符进行的输入和输出。2用用new和和delete运算符动态分配内存运算符动态分配内存空间的方法编写程序。从键盘输入空间的方法编写程序。从键盘输入mn整整型数组的数据,型数组的数据,m和和n值由用户输入。利用值由用户输入。利用一个函数计算出所有元素之和,以及最大一个函数计算出所有元素之和,以及最大值和最小值。在

45、主函数中打印出所有结果。值和最小值。在主函数中打印出所有结果。3编写编写C+风格的程序,解决百钱问题:风格的程序,解决百钱问题:将将1元人民币兑换成元人民币兑换成1,2,5分的人民币,有分的人民币,有多少种换法?多少种换法?2实验内容:实验内容:4假设我们班有假设我们班有50名同学,每个同学都报出名同学,每个同学都报出自己的生日自己的生日,每个同学的生日都不相重的概率只每个同学的生日都不相重的概率只有有0.096,如果有,如果有100个同学,不相重的概率为个同学,不相重的概率为3.072510-7。相重复的概率如此之大与我们主。相重复的概率如此之大与我们主观想象不同。写一个程序,输入同学的人数

46、观想象不同。写一个程序,输入同学的人数n计算计算出其生日不重复的概率。然后在用彷真的方法出其生日不重复的概率。然后在用彷真的方法,利用随机数产生每个同学的生日,计算出生日不利用随机数产生每个同学的生日,计算出生日不重复的概率并与前面的结果进行比较。重复的概率并与前面的结果进行比较。(5)重载函数重载函数sort,对以下数据进行排序,对以下数据进行排序,intiArr10;/数组元素值为数组元素值为1100间的间的随机数随机数charcArr8;/数组元素值为随机英文字符数组元素值为随机英文字符char*name=“Gates,“Kongzi,“Obama,Micky;在主函数中测试函数,并输出排序后的结果。在主函数中测试函数,并输出排序后的结果。 3. 思考题:结合上机的体会,答复以下问题.1C+引入了I/O流运算符,与 C语言相比,它们好处是什么?2与C语言的动态分配内存函数相比,C+的new 和delete运算符的优点是什么?3引用是C+的很重要的功能,在函数定义中,如何使用引用,会实现怎样的效果?4使用内联函数的好处有哪些?什么样的函数不能声明为内联函数?4. 要求: 下周上课提交书面作业课后试验课后试验

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 商业计划书

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号