C++语言知识课件.ppt
- 文档编号:14123826
- 上传时间:2023-06-20
- 格式:PPT
- 页数:67
- 大小:495.50KB
C++语言知识课件.ppt
《C++语言知识课件.ppt》由会员分享,可在线阅读,更多相关《C++语言知识课件.ppt(67页珍藏版)》请在冰点文库上搜索。
,C+面向对象的程序设计主讲教师,本课程的任务本课程是为已经学过C语言程序设计、具有程序设计初步知识的学生开设的,主要介绍面向对象程序设计的基本知识和方法。
本课程学习的主要任务:
使学生了解面向对象的基本概念和方法。
初步掌握C+程序设计的基本技能。
为以后进一步学习和应用打下良好的基础。
本课程的主要内容第1章从现实生活和面向对象程序设计的两个角度,简单介绍面向对象程序设计的一些概念,例如对象与类、抽象与封装、继承性、多态性等。
第2章介绍C+对C在非面向对象方面的改进与增强,为以后各章的学习打下基础。
第3章到第10章介绍C+面向对象程序设计的基本知识和方法。
第11章介绍面向对象程序设计方法与实例。
课程性质:
专业基础课(必修课)学时:
讲课XX学时上机XX学时先修课程:
C语言程序设计成绩比例:
平时X考试X(考勤、作业、上机),教材,参考书,学习C+的几点看法1.了解C+研制C+的初衷为了解决大型软件开发中遇到的问题,提高软件的开发效率。
只有参加过大型软件开发的人才会真正体会到C+的优越性。
曾经有同学说:
也许,你是一个玩游戏的高手,但是你的C+水平不会和你通关的能力一起变高“可以时刻记住:
学C+是为了编游戏的”。
2.正确定位同学们没有从事程序设计的实际经验,现在学习C+的目的是了解面向对象程序设计方法,能够利用C+编写相对简单的程序,为以后进一步学习和应用打好良好的基础。
企图,通过几十小时的学习,使一个没有程序设计基础的人变成一个熟练的C+开发人员,是不可能的。
3.勤学多练由于C+涉及概念很多,语法比较复杂,内容十分广泛,对C语言的基础要求很高,不少人感到学习难度较大,难以入门。
学好C+的秘诀是:
认真听讲,多读程序;编程,编程,再编程;上机,上机,再上机。
第1章面向对象方法概述1.1什么是面向过程程序设计方法1.2什么是面向对象程序设计方法1.3面向对象程序设计的语言,本章主要内容,C+是20世纪80年代初开发成功的。
90年代以来,面向对象的程序设计(Object_OrientedProgramming,简称OOP)异军突起,迅速地在全世界流行,并一跃而成为程序设计的主流技术。
近年来推出的新一代程序设计语言、软件开发工具与开发环境,以及操作糸统等,几乎都是面向对象的。
面向对象的程序设计面向对象的数据库面向对象的操作系统面向对象的系统分析面向对象的系统设计例如:
C+、VB、VC、PB、VF、Java、Windows等,为什么面向对象的程序设计(OOP)会发展的如此迅速,成为当前的主流技术?
1.1什么是面向过程程序设计方法1.1.1面向过程程序设计方法概述1.1.2面向过程程序设计方法的局限性,本节主要内容,1.1.1面向过程程序设计方法概述面向过程程序设计方法是流行很广泛的程序设计方法。
如C、PASCAL、FORTRAN、Ada等语言都是中采用面向过程程序设计方法。
在面向过程程序设计中,程序设计者不仅要考虑程序要“做什么”,还要解决“怎么做”的问题。
首先要明确程序的功能,程序设计的重点是如何设计算法和实现算法。
在面向过程程序设计中,普遍采用结构化程序设计方法,即所有的程序由顺序、分支和循环三种基本结构组成。
面向过程程序设计的求解过程:
(1)进行整体规划,将一个复杂的任务按功能分解成一个个易于控制和处理的子任务;
(2)对每个子任务按功能再进行细化,依此进行,直到不需要细分为止。
具体实现程序时,每个子任务对应一个子模块,模块间尽量相对独立;(3)通过模块间的调用关系或全局变量而有机地联系起来。
在C语言中,可以将每一个子模块对应设计成一个函数,各个函数及函数间的调用关系组成了程序。
例1.1利用面向过程程序设计方法计算圆和三角形的面积。
设圆的半径为r,圆周率取314,则圆面积的计算公式为cs=3.14*r*r;设三角形的高为h,底为w,则三角形面积的计算公式为ts=0.5*h*w。
用面向过程程序设计方法编写一个计算面积的C语言程序。
#includedoublecircle(doubler)return3.14*r*r;/定义函数circledoubletriangle(doubleh,doublew)/定义函数trianglereturn0.5*h*w;intmain()/定义主函数maindoubler,h,w,cs,ts;printf(“Inputr,h,w:
”);/调用函数,输出字符串scanf(%lf%lf%lf,这个C语言程序表示了面向过程程序设计的主要特征:
程序由过程定义和过程调用组成(所谓过程,简单地说,就是程序执行某项操作的一段代码,函数是最常用的过程。
),可以用以下的公式来表述:
程序=过程+调用,1.1.2面向过程程序设计方法的局限性1.传统程序设计开发软件的生产效率低下硬件:
电子管晶体管集成电路大规模集成电路生产能力不断提高、更新越来越快、功能越来越强、价格越来越低。
软件:
机器语言汇编语言高级语言生产能力低下、开发周期长、效率低、更新较慢、费用不断上升。
为什么出现这个问题?
主要原因是计算机硬件生产较好地解决了以下三个问题:
重用性复杂性可维护性而传统的程序设计不能很好地解决这三个问题。
(1)重用性传统软件生产中缺乏大粒度、可重用的构件。
基本处于手工作业阶段。
(2)复杂性传统程序中数据与其操作是相分离的,开发大程序时,常因数据的一个的小小变动而导致意想不到的错误,甚至整个程序的崩溃。
以致出现过所谓的“软件危机”。
(3)可维护性传统程序中数据与操作相分离的结构不利于程序的维护。
2.传统程序设计难以应付日益庞大的信息量和多样的信息类型随着计算机科学与技术的飞速发展应用领域:
已从数值计算扩展到了人类社会的各个方面;处理的数据:
已从简单数字和字符,发展为具有多种格式的多媒体数据,如文本、图形、图像、影像、声音等;描述的问题:
从单纯的计算问题到仿真复杂的自然现象和社会现象。
然而,面对这些庞大的信息量和多样的信息格式,传统程序设计方法是无法应付的。
3.传统的程序设计难以适应各种新环境当前,并行处理、分布式、网络和多机系统等,已经或将是程序运行的主流方式和主流环境。
传统的程序设计技术很难适应这些新环境。
综上所述,传统的面向过程的结构化程序设计不能够满足计算机技术的迅猛发展的需要,软件开发迫切需要一种新的程序设计方法的支持。
1.2什么是面向对象程序设计方法1.2.1面向对象程序设计方法的基本概念1.2.2面向对象程序设计方法的基本特征1.2.3面向对象程序设计方法的主要优点,本节主要内容,1.2.1面向对象程序设计方法的基本概念1.对象2.类3.消息4.方法,本节主要内容,所谓对象就是可以控制和操作的实体。
在现实世界中,任何事物都是对象。
它可以是人,也可以是物,还可以是一件事,整个世界就是由形形色色的“对象”构成的。
对象可以是:
*有形的具体存在的事物例如:
一辆车、一个球、一个小学生;*无形的、抽象的事件例如:
一次演出、一场球赛等。
对象既可以很简单,也可以很复杂,复杂的对象可以由若干简单的对象构成。
1.对象,现实世界中的对象既具有静态的属性(或称状态),又具有动态的行为(或称功能)。
举例:
对象名:
录音机对象的属性:
生产厂家:
SONY机器编号:
XXXX出厂日期:
2009.05.06对象的行为:
播放录音停止倒带,静态特征,动态特征,现实世界中的对象,具有以下特性:
(1)有一个名字:
每一个对象必须有一个名字,称为对象名,以区别于其他对象;
(2)有一组属性:
用属性来描述它的某些特征,一般可以用数据来表示,所有的属性都有值;(3)有一组行为:
对象的行为或功能也称为方法,一般用一组操作来描述;(4)有一组接口:
除施加于对象内部的操作外,对象还提供了一组公有操作用做与外界的接口,从而可以与其他对象建立关系。
使用对象时只需知道它向外界提供的接口形式而不需要知道它的内部是如何实现的。
这样,不仅使得对象的使用变得非常简单、方便,而且具有很高的安全性和可靠性。
可见面向对象程序设计中的对象来源于现实世界,更接近人们的思维。
在面向对象程序设计中:
对象是描述其属性的数据以及对这些数据施加的一组操作封装在一起构成的统一体。
在面向对象程序设计中:
对象是描述其属性的数据以及对这些数据施加的一组操作封装在一起构成的统一体。
对象可以认为是:
数据+操作。
在面向对象程序设计中:
对象是描述其属性的数据以及对这些数据施加的一组操作封装在一起构成的统一体。
对象可以认为是:
数据+操作。
对象,数据,操作代码,在面向对象程序设计中:
对象是描述其属性的数据以及对这些数据施加的一组操作封装在一起构成的统一体。
对象可以认为是:
数据+操作。
用数据来体现上面提到的“属性”,用函数来实现对数据的操作,以实现某些功能。
例如一个圆对象:
半径-数据(属性)计算并输出圆的面积-操作代码(用函数实现),对象,数据,操作代码,在现实世界中,“类”是对一组具有共同的属性和行为的对象的抽象。
例如,教师黎明是一个对象。
对象名:
黎明对象的属性:
年龄:
45学历:
博士职称:
教授对象的行为(操作):
走路吃饭授课,一个个的象黎明这样的教师就构成教师类。
2.类,类和对象之间的关系是抽象和具体的关系,类是对多个对象进行抽象的结果。
一个对象是类的一个实例。
例如:
张三、李四、王五、.人对象类再如:
苹果、梨、桔子、香蕉-水果对象类,在面向对象程序设计中,“类”就是具有相同的数据(属性)和相同的操作代码(函数)的一组对象的集合。
在C+语言中把类中的数据称为数据成员,类中的操作是用函数来实现的,这些函数称为成员函数。
实际上,类是一种新的用户定义的抽象的数据类型,对象是类的一个实例。
在面向对象程序设计中,“类”就是具有相同的数据和操作(函数)的一组对象的集合。
在C+语言中把类中的数据称为数据成员,类中的操作是用函数来实现的,这些函数称为成员函数。
实际上,类是一种新的用户定义的抽象的数据类型,对象是类的一个实例。
例如:
类类型与传统数据类型的重要区别是:
一个类在定义数据的同时也定义了对这些数据的操作。
在面向对象程序设计中:
总是先声明类,再由类生成其对象。
类是建立对象的“模板”,按照这个模板所建立的一个个具体的对象,就是类的实际例子,通常称为实例。
在面向对象程序设计中,对象之间的联系,称为对象的交互。
在面向对象程序设计中,一个对象向另一个对象发出的请求被称为“消息”。
3.消息,消息具有三个性质:
(1)一个对象可以同时向多个对象发送消息,也可以接收多个对象发来的消息;
(2)相同形式的消息可以传递给不同的对象,同一个对象也可以接收不同形式的消息;(3)接收对象对消息的响应并不是必须的,对象可以响应消息,也可以不响应。
调用对象中的函数就是向该对象传送一个消息,要求该对象实现某一行为(功能)。
对象所能实现的行为(功能),在程序设计方法中称为方法,它们是通过调用相应的函数来实现的。
实际上:
在C+语言中,方法是通过成员函数来实现的。
消息和方法的关系是:
对象根据接收到的消息,调用相应的方法;反过来,有了方法,对象才能响应相应的消息。
4.方法,面向对象程序设计是一种新的程序设计范型。
这种范型的主要特征是:
程序=对象+消息程序员注重的是:
类的设计和编写,即问题域中涉及几个类,各个类之间的关系如何,每个类包含哪些数据和函数(操作代码),再由类生成其对象。
程序中的一切操作都是通过向对象发送消息来实现的,对象接收到消息后,启动有关方法(通过成员函数)完成相应的操作。
/例1.2-1利用面向对象思想求解计算圆面积的基本框架。
classCircle/声明圆类Circle定义数据成员r(表示圆的半径)定义数据成员cs(表示圆的面积)定义成员函数radius_input(用于输入圆半径r的值)定义成员函数c_area_out(用于计算与输出圆面积);/圆类Circle到此结束intmain()/定义主函数main定义圆类Circle的对象c1向对象c1传送一个消息,即调用成员函数radius_input,输入圆半径r的值向对象c1传送一个消息,即调用成员函数c_area_out,计算与输出圆面积/主函数main到此结束,#include/例1.2-1利用面向对象思想求解计算圆的面积。
classCircle/声明圆类Circledoubler;/定义数据成员r(表示圆的半径)doublecs;/定义数据成员cs(表示圆的面积)public:
voidradius_input()/定义成员函数radius_inputprintf(Inputr:
);scanf(%lf,/主函数main到此结束,程序的一次运行结果如下:
Inputr:
10Theareaofcircleis:
314.000000,1.2.2面向对象程序设计的基本特征1.抽象2.封装3.继承4.多态,本节主要内容,1.抽象现实生活中:
张三、李四、王五、.-人苹果、梨、桔子、香蕉.-水果抽象的过程是将有关事物的共性归纳、集中的过程。
在程序设计方法中:
抽象是对复杂世界的简单表示,抽象并不打算了解全部问题,而只强调感兴趣的信息,忽略了与主题无关的信息。
例如,在设计一个成绩管理程序的过程中,只关心他的姓名、学号、成绩等,而对他的身高、体重等信息就可以忽略。
而在设计学生健康信息管理系统中,身高、体重等信息必须抽象出来,而成绩则可以忽略。
C和C+中的基本数据类型就是对一批具体的数的抽象。
例如:
“整型数据”是对所有整数的抽象。
2.封装在现实世界中,所谓封装就是把某个事物包围起来,外界是看不到的,甚至是不可知的。
例如:
录音机、电视机、照相机等。
在面向对象程序设计中,封装是指把数据和实现操作的代码集中起来放在对象内部,并尽可能隐蔽对象的内部细节。
对象好像是一个不透明的黑盒子,表示对象属性的数据和实现各个操作的代码都被封装在黑盒子里,从外面是看不见的,各个对象之间是相对独立的,互不干扰。
对象只留下少量接口,以便与外界联系。
C+对象中的成员函数名就是对象的对外接口,外界可以通过成员函数名来调用函数来实现某些操作。
封装具有两方面的含义:
一是将有关的数据和操作代码封装在一个对象中,各个对象相对独立、相不干扰。
二是将对象中某些数据与操作代码对外隐蔽,即隐蔽其内部细节,只留下少量接口,以便与外界联系,接收外界的消息。
这种对外界隐蔽的做法称为信息隐蔽。
封装和抽象机制可以将对象的使用者与设计者分开,使用者不必知道对象行为实现的细节,只需要使用设计者提供的接口让对象去做。
这样,大大降低了人们操作的复杂程度,还有利于数据安全。
从而减轻了开发一个软件糸统的难度。
3.继承
(1)继承的概念父亲儿子继承关系可以使后者继承前者的基本特性,又可以增加一些新的特性。
哺乳动物(热血、有毛发、用奶哺育幼仔)狗(有犬牙、食肉、特定的骨骼结构、群居)白狗黑狗(白色)(黑色)继承关系简化了人们对事物的认识和叙述,简化了工作程序。
若类之间具有继承关系,则它们之间具有下列几个特性:
1类间具有共享特性(包括数据和程序代码的共享);2类间具有差别或新增部分(包括非共享的数据和程序代码);3类间具有层次结构。
假设有两个类-类A和类B,若类B继承类A,则类B具有类A的基本特性(包括数据和操作)AB这时,我们称类A为基类或父类;而称类B为类A的派生类或子类。
我们可以说:
类B继承了类A还可以说:
类B是从类A中派生出来的。
如果类B是类A的派生类,那么,在构造类B的时候,不必描述派生类B的所有特性,只需:
1.让它继承类A的特性,2.增加类B与基类A不同的那些特性。
可见,类B的特性是由继承来的和新添加的两部分特性构成。
类的派生过程可以无限继承下去,即派生类可以作为另一个派生类的基类。
祖父父亲儿子,继承机制的作用:
一是避免公用代码的重复开发,减少代码和数据冗余。
二是通过增强一致性来减少模块间的接口和界面。
(2)继承的分类从继承源上划分:
继承分为单继承和多继承。
单继承-一个派生类只继承了一个基类的特性。
多继承-一个派生类继承了多个基类的特性。
4.多态面向对象系统的多态性是指不同的对象收到相同的的消息时,执行不同的操作。
4.多态面向对象系统的多态性是指不同的对象收到相同的的消息时,执行不同的操作。
1.在日常生活中:
汽车行为1挪开同一消息凳子行为2,4.多态面向对象系统的多态性是指不同的对象收到相同的的消息时,执行不同的操作。
1.在日常生活中:
汽车行为1挪开同一消息凳子行为22.在OOP中:
窗口对象行为3移动同一消息棋子对象行为4,C+语言支持两种多态性:
编译时的多态性运行时的多态性编译时的多态性是通过函数重载和运算符重载来实现的;运行时的多态性是通过虚函数来实现的。
将分别在第2章、第6章与第7章进行介绍。
1.2.3面向对象程序设计的主要优点1.可提高程序的重用性2.可控制程序的复杂性3.可改善程序的可维护性4.能够更好地支持大型程序设计5.增强了计算机处理信息的范围6.能很好地适应新的硬件环境,1.3面向对象的程序设计语言1.3.1面向对象程序设计语言的发展概况1.3.2.几种典型的面向对象程序设计语言,本节主要内容,1.3.1面向对象程序设计语言的发展概况现在公认的第一个真正面向对象程序设计语言是Smalltalk。
它是由美国的Xerox公司于20世纪70年代初研制的。
该语言第一次使用了“面向对象”的概念和程序风格,开创了面向对象程序设计的新范型。
被誉为面向对象程序设计语言发展的里程碑。
20世纪80年代以来,面向对象语言得到飞速发展。
面向对象程序设计语言朝着两个方向发展:
一个方向是朝着纯面向对象语言发展,如继Smalltalk之后,又出现了Eiffel、SELF等语言;另一个方向是朝着混合型面向对象语言发展,如将过程型与面向对象结合产生了诸如C+、Objective-C、ObjectPascal等一大批语言。
将函数型与面向对象结合产生了诸如LOOPS、Flavors、CLOS等语言。
我们将要学习的C+就是一种面向过程与面向对象相结合的语言。
1.3.2几种典型的面向对象程序设计语言
(1)Smalltalk语言(20世纪70年代)Smalltalk语言被认为是最纯正最具代表性的面向对象的程序设计语言
(2)C+语言(20世纪80年代)C+是在C语言的基础上,进行面向对象特征的扩充而成的语言(3)Java语言(20世纪90年代)Java语言,是一种面向对象的程序设计语言,是一种网络编程语言。
(4)C#语言(21世纪2000年)C#语言从C/C+语言继承发展而来,是一个全新的、面向对象的、现代的编程语言。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 语言 知识 课件
![提示](https://static.bingdoc.com/images/bang_tan.gif)