[计算机软件及应用]TP-3151C++程序设计概述课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《[计算机软件及应用]TP-3151C++程序设计概述课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机软件及应用 计算机软件 应用 TP 3151 C+ 程序设计 概述 课件
- 资源描述:
-
1、l 知识点l面向对象程序设计的基本概念lC+的起源和特点 lC+源程序的构成lC+在非面向对象方面的一些特性l 难点l面向对象的概念lC+源程序的构成lC+在非面向对象方面的特性l 要求l掌握:l面向对象的概念lC+程序的格式与结构特点l了解:l类和对象的概念l面向对象的特性lC+在非面向对象方面的一些特性l 或许你已经学过C语言或Pascal语言,能用这些语言编写简单程序,解决某些具体问题。但在实际应用中,特别是要编制一些比较大型的程序或系统软件时,就会感到仅有这些是不够的,需要有新的设计方法来提高编程能力,以便适应软件开发规模日益庞大的趋势。20世纪90年代以来,在计算机软件行业,面向对象
2、程序设计思想方法已被越来越多的软件设计人员所接受。它是目前最先进的计算机程序设计思想和理念,这种新的思想更接近人的思维活动,利用这种思想和方法进行程序设计时,可以极大地提高编程能力,减少软件维护的开销。C+能完美地体现面向对象的各种特性。l面向对象的设计思想是在原来结构化程序方法基础上的一个质的飞跃,是一种新的程序设计理念,是软件开发的一种方法,其本质是把数据和处理数据的过程当成一个整体对象。l面向对象程序的主要结构特点是:一,程序一般由类的定义和类的使用两部分组成,在主程序中定义各对象并规定它们之间传递消息的规律;二,程序中的一切操作都是通过面向对象发送消息来实现的,对象接受到消息后,启动有
3、关方法完成相应的操作。l面向对象设计的最大优点就是软件具有可重用性。当人们对软件系统的要求有所改变时,并不需要程序员做大量的工作就能使系统做相应的变化。l类与对象是面向对象程序设计中最重要的概念,如果要掌握面向对象程序设计技术,首先必要很好的理解这两个概念。l对象对象l从概念上讲,对象代表着正在创建的系统中的一个实体。在日常生活中,对象就是我们认识世界的基本单元,对象是现实世界中的一个实体,整个世界就是由各种各样的对象构成的,例如:一个人,一辆汽车,一个足球等等。l类类l类是对象的模板,是对一组具有共同的属性特征和行为特征的对象的抽象。例如:由一个个大学生构成的“大学生”类,而其中的每一个大学
4、生是“大学生”类的一个对象。一个类的所有对象都有相同的数据结构,并且共享相同的实现代码。l类和对象之间的关系是抽象和具体的关系。l面向对象系统中最主要的特性是封装性、继承性和多态性。l封装性封装性l在面向对象程序设计中,数据的抽象是在确定类时强调对象的共同点而忽略了它们的不同点的结果。数据的封装则是隐藏了数据的内部实现细节的结果,将数据抽象的外部接口与内部的实现细节清楚的分开。l继承性继承性l以面向对象程序设计的观点来看,继承所表达的是对象与类之间的关系。这种关系使得某类对象之间可以继承另外一类的特征和能力。继承机制为程序提供了一种组织,构造和重用类的手段。继承使一个类(基类)的数据结构和操作
5、被另一个类即派生类重用,在派生类中只需描述其基类中没有的数据和操作。这样一来,就避免了公用代码的重复开发,减少了代码和数据冗余。l多态性多态性l面向对象程序设计中的多态性是指不同的对象收到相同的消息时所产生多种不同的行为方式。C+语言支持两种多态性,即编译时的多态性和运行时的多态性。编译时的多态性通过重载来实现。运行时的多态性是通过虚函数来实现的,程序运行的到底是函数的那个版本,需要在运行时通过对象发送的消息来确定。我们要进行面向对象程序设计,必须使用面向对象程序设计语言。面向对象程序设计语言应该具备以下特征:l(1)它支持对象的概念(包括对象的l 所有特性,如封装)l(2)它要求对象属于类l
6、(3)它提供继承机制l1980年,美国贝尔实验室的Bjarne Stroustrup博士在C语言的基础上,开发出一种过程性与对象性相结合的程序设计语言。这种语言弥补了C语言存在的一些缺陷,并增加了面向对象的特征,1983年,这种语言正式定名为“C+”。l“C”语言是C+语言的基础,最初用作UNIX操作系统的描述语言。C语言功能强、性能好,支持结构化程序设计,又能像汇编语言那样高效,伴随着UNIX的成功和广泛使用,诞生后立即获得了广泛的好评和支持。到了上个世纪80年代,C语言己经广为流行,成为一种应用最广泛的程序设计语言。l但是C语言也存在着一些局限:l(1)C的类型检查机制相对较弱,使得程序中
7、的一些错误不能在编译时由编译器检查出来。l(2)C缺乏支持代码重用的语言结构。l(3)C不适合开发大型程序,当程序的规模达到一定的程度时,程序员很难控制程序的复杂性。lC+正是为了解决上述问题而设计的。C+继承了C的精髓,如高效率、灵活性等,并增加了面向对象机制,弥补了C语言不支持代码重用的不足,这对于开发大型的程序非常有效。C+成为一种既可用于表现过程模型,又可用于表现对象模型的优秀的程序设计语言。lC+语言现在得到了越来越广泛的应用,它除了继承C语言的优点之外,还拥有自己独到的特点,最主要的有:l(l)C+保持与C兼容,这就使许多C程序代码不用修改就可以为C+所用,特别是一些用C编写的库函
8、数和实用软件可以用于C+中。l(2)用C+语言编写的程序可读性更好,代码结构更为合理。l(3)C+生成代码的质量高,运行效率仅比汇编代码慢10%到20%。l。l(4)从开发时间、费用到形成的软件的可重用性、可扩充性、可维护性和可靠性等方面有了很大的提高,使得大型的程序开发变得更加容易。l(5)支持面向对象的机制。l总之,目前C+的优点正越来越得到人们的认可和推崇,它已经成为被广泛使用的通用程序设计语言。在国内外使用和研究C+的人数正迅猛增加,优秀的C+版本和配套的工具软件也不断涌现lC+是C的一个超集,它几乎保留了C的所有特性。下面通过一个求两个数较大值的简单的C+程序,来对C+程序的格式有一
9、个初步的了解。l例例1-1l/max.cppl#include lint max(int a,int b);/函数原型的说明lvoid main()/主函数llint x,y,temp;/定义二个整型变量lcoutEnter two numbers:x;/从键盘输入变量x的值lciny;/从键盘输入变量y的值ltemp=max(x,y);/调用max函数,将得到的值给变量templcoutThe max is:tempb)lc=a;lelse lc=b;/判断两个数的大小,将较大值赋给clreturn c;/将c的值返回ll本程序用来计算两个整数中较大的值。它由两个函数组成:主函数main()
10、和被调用函数max()。函数max()的作用是判断a与b的大小,把其中较大的值赋给变量c。return语句把c的值返回给主函数main()。返回值通过函数名max带回到main()函数的调用处。l程序的第1行是注释语句,由/开始,到行尾结束,这条注释语句注明了本程序的文件名为max.cpp。l程序的第2行是预编译命令#include,它的作用是,指示编译程序把头文件iostream.h包含进#include命令所在的源程序中。iostream.h是C+系统定义的一个头文件,用于定义程序的输入和输出。第7行中出现的“cout”语句的作用是,在屏幕上显示出字符串Enter two numbers:
11、,n是换行符,即输出上述信息后回车换行。l第8行和第9行中的“cin”的作用是分别输入变量x和y的值,即执行cin后,把从键盘输入的两个数值分别赋给变量x和y。l第10行用来调用max函数,调用时把实际参数x和y的值传给函数add()中的形式参数a和b,执行max函数后得到一个返回值(即max函数中的c),把这个值赋给temp,然后第11行输出temp的值。程序运行情况如下:lEnter two numbers:l3l5lThe max is:5l通过上面的例子,我们可以看出C+程序的结构有以下特点:l(1)C+程序由一组函数组成,函数是构成C+程序的基本单位。其中有且仅有一个名为main的函
12、数,称为主函数。程序运行时第一个被执行的函数必定是主函数,不论它在程序的什么部位。被调用的函数可以是系统提供的库函数,也可以是用户自己编写的函数(例如上面例子中的函数max()。对于用户自己定义的函数,使用前应提供“声明”,如上面例子中的“int max(int a,int b);”。l(2)C+函数由函数的说明部分和函数体两部分组成。l 函数的说明部分函数的说明部分l 这部分包括函数名、函数类型、函数参数(形式参数)及其类型。例如在例2-l中的max()l函数的说明部分为:lint max (int a,int b)l l函数类型 函数名 形参类型 形式参数 形参类型 形式参数l l函数类型
13、规定为函数返回值的类型,如int,float等。无返回值的函数是void类型。l函数可以没有参数,但对于无参函数,函数名后面的圆括号不能省略。l函数体函数体l函数说明部分下面的花括号内的部分称为函数体。函数体中的内容也就是函数的定义部分,主要是给出该函数的功能和执行流程。l(3)C+中每一个语句和数据定义必须以分号结束。一行程序内可以写多个语句,一个语句也可以分写在多行上。l说明说明:l(l)C源程序文件扩展名为.c,而C+源程序文件扩展名为.cpp。l(2)常用的C+版本,如Visual C+或borland C+都带有C和C+两种编译器,当源程序文件扩展名为.c时,启动C编译器,当源程序文
14、件扩展名为.cpp时,启动C+编译器。lC+是从C发展而来,因此C程序中大部分的特点和功能,在C+中仍可以使用。但C+语言还增加了很多C语言不具备的新特性,这些特性中除了“面向对象”的概念外,同时也包括一些非面向对象的新特性。我们下面就来介绍这些非面向对象的新特性,它们使得C+程序比C程序更简洁,安全,强大。l在C语言中,我们用/*及*/作为注释分界符号,例如:l/*This isljust a ltest for program */lC+语言保留了这种注释方式,同时还增加了另一种注释方式,该注释以/开始,到行末结束。例如:lTemp=a+b;/This is just a commentl
15、/注释方式适合于注释内容不超过一行的注释,使用很简洁方便。lC语言中进行输入输出,是依靠系统提供的函数来完成,如标准输入和输出函数scanf和printf。相比C语言,C+使用了更安全和强大的方法来进行输入/输出操作,也就是“流”的概念。例如:lint I;ldouble f=8.5;lcini;lcout”称为“提取运算符”,表示将从标准输入流(即键盘)读取的数值传送给右方指定的变量。也就是说,对于语句“cini;”,用户从键盘输入的数值会自动地转换为变量i的数据类型,并存入变量i内。类似于C语言中的scanf(“%d”,&i);。l运算符“”允许用户连续输入一连串数据,例如:lcinabc
16、;l它将按顺序从键盘上接收所要求的数据,并存入对应的变量中。两个数据间用空白符(空格、回车或Tab键)分隔。lcout是标准输出流,在程序中用于代表标准输出设备,通常指屏幕。运算符“”称为“插入运算符”,表示将右方变量的值显示在屏幕上。例如,执行下面的语句后:lcoutf;l变量f的值将显示在屏幕上。类似于C语言中的printf(“%f”,f);。f必须是基本数据类型,而不能是void类型。运算符“”允许用户连续输出一连串数据,也可以输出表达式的值,例如:lcouta+bc;l它将按照顺序将数据依次输出到屏幕上。l说明说明:l(1)程序中如果需要使用cin或cout进行输入/输出操作时,则程序
17、中必须嵌入头文件iostream.h,否则编译时要产生错误。下面是一个输入输出流的例子:l例例1-2l#include l void main()llchar name20;lcoutname;lcoutnameendl;ll(2)在C+程序中,我们仍然可以用C语言的传统方式进行输入输出操作,即沿用stdio函数库中的I/O函数,如printf()函数、scanf()函数或其它的C输入输出函数。l(3)在C中,常用n实现换行,C+中增加了换行控制符endl,其作用与n一样。它的使用很方便,只要插入在输出语句中需要换行的相应位置即可。例如以下两个语句的操作是等价的:lcoutx=xendl;lc
18、outx=xn;l在C语言中,所有的局部变量说明必须置于可执行代码段前面,而不允许局部变量的说明出现在可执行代码的中间或后面。如在C中,下面的程序段是不正确的:lvoid func()llint m;lm=8;lint n;ln=4;llC语言的编译器在编译时会指示有错,因为其中变量定义语句“int n;”插在“m=8;”这句可执行语句之后了。但在C+语言中,这是允许的,也就是说上面的程序编译时不会出错。lC+允许在代码块中的任何地方对局部变量进行说明,该变量从说明点到该变量所在的最小分程序末的范围内有效。允许这种灵活的局部变量定义,对于程序员编写较大型复杂的函数时非常有效。l在C语言中,经常
19、使用宏定义,也就是#define来定义常量,例如:l#define time lO0;l而C+语言提供了一种更灵活、更安全的方式来定义常量,即用const修饰符来定义常量。const型的常量相比#define的宏定义要灵活的多,同时提供了更强大的安全性。const可以创建有类型的常量,例如:lconst int time=l00;l这样定义后的time的值将不能修改。l这里要注意的是,用const定义的常量必须在声明的时候初始化它的值,并且一旦初始化完成后,该值将不能再修改。lconst也可以与指针一起使用,根据const出现的位置不同,分为几种情况:l(1)指向常量的指针,例如:lconst
20、 char*name=stone,/声明指向常量的指针l这个语句的含义为:声明一个名为name的指针变量,它指向一个字符型常量,初始化name指向字符串stone。使用const定义之后,不允许改变name指针所指的常量的值,因此以下语句是错误的:lname3=a;l但是可以改变name指针本身的值。例如下列语句是允许的:lname=John;l该语句赋给了指针另一个常量,即改变了name的值。l(2)常指针l常指针是指把指针本身,而不是它指向的对象声明为常量,例如:lchar*const name=stone;/常指针l(注意:注意:const在语句中出现的位置与(1)中不同)l这个语句的含
21、义为:声明一个名为name的指针变量,该指针是指向字符型数据的常指针,用stone的地址初始化该常指针。l一个常指针一旦创建,则它指向的地址是固定的,也就是说指针本身将不能移动了。但是该地址的存储内容,也就是常指针所指的数据可以改变,例如:lname3=a;/合法l name=John;/出错l第一个语句改变了常指针所指的数据,这是允许的;但第二个语句要改变指针本身,这是不允许的。l(3)指向常量的常指针l这样的指针本身不能改变,它所指向的值也不能改变。要声明一个指向常量的常指针,二者都要声明为const,例如:lconst char*const name=stone;/指向常量的常指针l这个
22、语句的含义是:声明了一个名为name的指针变量,它是一个指向字符型常量的常指针,用stone的地址初始化该指针。根据这个指针的定义,可以判断出下面二个语句都是错误的:lname3=a;/出错,不能改变指针所指的值lname=John;/出错,不能改变指针本身l说明说明:l(1)如果用const定义一个整型常量,关键字int可以省略。所以下面的两行定义是等价的:l const int time=l00;l const time=l00;l(2)与#define定义的常量有所不同,const定义的常量可以有自己的数据类型,这样C+的编译程序可以进行更加严格的类型检查,也使得程序的安全性得到提高。因
展开阅读全文