收藏 分享(赏)

中北大学C++第3版-1.ppt

上传人:dzzj200808 文档编号:3344387 上传时间:2018-10-16 格式:PPT 页数:68 大小:5.19MB
下载 相关 举报
中北大学C++第3版-1.ppt_第1页
第1页 / 共68页
中北大学C++第3版-1.ppt_第2页
第2页 / 共68页
中北大学C++第3版-1.ppt_第3页
第3页 / 共68页
中北大学C++第3版-1.ppt_第4页
第4页 / 共68页
中北大学C++第3版-1.ppt_第5页
第5页 / 共68页
点击查看更多>>
资源描述

1、,C+面向对象的程序设计主讲教师 ,本课程的任务本课程是为已经学过C语言程序设计、具有程序设计初步知识的学生开设的,主要介绍面向对象程序设计的基本知识和方法。本课程学习的主要任务: 使学生了解面向对象的基本概念和方法。 初步掌握C+程序设计的基本技能。为以后进一步学习和应用打下良好的基础。,本课程的主要内容第1章 从现实生活和面向对象程序设计的两个角度,简单介绍面向对象程序设计的一些概念,例如对象与类、抽象与封装、继承性、多态性等。第2章 介绍C+对C在非面向对象方面的改进与增强,为以后各章的学习打下基础。第3章到第7章 介绍C+面向对象程序设计的基本知识和方法。第8章 介绍面向对象程序设计方

2、法与实例 。,课程性质:专业基础课(必修课)学 时:讲课 XX学时 上机 XX学时先修课程:C语言程序设计成绩比例: 平时 X 考试 X (考勤、作业、上机),教 材,参 考 书,学习C+的几点看法 1.了解C+研制C+的初衷为了解决大型软件开发中遇到的问题,提高软件的开发效率。只有参加过大型软件开发的人才会真正体会到C+的优越性。曾经有同学说:也许,你是一个玩游戏的高手,但是你的C+水平不会和你通关的能力一起变高“可以时刻记住:学C+是为了编游戏的” 。,2.正确定位 同学们没有从事程序设计的实际经验,现在学习C+的目的是了解面向对象程序设计方法,能够利用C+编写相对简单的程序,为以后进一步

3、学习和应用打好良好的基础。企图,通过几十小时的学习,使一个没有程序设计基础的人变成一个熟练的C+开发人员,是不可能的。,3.勤学多练 由于C+涉及概念很多,语法比较复杂,内容十分广泛,对C语言的基础要求很高,不少人感到学习难度较大,难以入门。学好C+的秘诀是:认真听讲,多读程序;编程,编程,再编程;上机,上机,再上机。,第 1 章 面向对象程序设计概述 1.1 什么是面向对象程序设计1.2 为什么要使用面向对象程序设计1.3 面向对象程序设计的语言,本章主要内容,C+是20世纪80年代初开发成功的。90年代以来,面向对象的程序设计(Object_Oriented Programming,简称O

4、OP)异军突起,迅速地在全世界流行,并一跃而成为程序设计的主流技术。,近年来推出的新一代程序设计语言、软件开发工具与开发环境,以及操作糸统等,几乎都是面向对象的。面向对象的程序设计面向对象的数据库面向对象的操作系统 面向对象的系统分析面向对象的系统设计例如:C+、VB、VC、PB、VF、Java、 Windows等,为什么面向对象的程序设计(OOP)会发展的如此迅速,成为当前的主流技术?,1.1 什么是面向对象程序设计1.1.1 一种新的程序设计范型1.1.2 面向对象程序设计的基本概念 1.1.3 面向对象程序设计的基本特征,本节主要内容,1.1.1 一种新的程序设计范型程序设计范型是指设计

5、程序的规范、模型和风格,它是一类程序设计语言的基础。一种程序设计范型体现了一类语言的主要特征。 面向过程程序设计范型的主要特征是,程序由过程定义和过程调用组成。基于面向过程的程序可以用以下的公式来表述:程序 = 过程 + 调用所谓过程就是程序执行某项操作的一段代码,函数是最常用的过程。面向过程程序设计语言称为面向过程性语言,如C、PASCAL等都是典型的面向过程性语言。,用面向过程的程序设计语言解决一个实际问题时,通常分为以下三步:1将问题分解成若干个称之为模块的功能块;2. 根据模块功能来设计一系列用于存储数据的数据结构;3. 编写一些过程(或函数)对这些数据进行操作。程序就是由这些过程构成

6、的。,面向过程的程序设计方法将数据和过程作为两个实体来对待,数据和过程是分离的。面向过程的程序设计的缺点是:一旦数据需要变更的时候,必须修改与之有关的所有模块。因此,面向过程的程序的可重用性差,维护代价高, 数据安全性较差。,面向对象程序设计是一种新的程序设计的范型。面向对象的程序设计将数据和相应的操作看成一个统一体,这个统一体称为对象。面向对象程序设计的主要特征是: 程序 = 对象 + 消息对象是面向对象程序的基本元素。,面向对象程序的结构特点是:第一,程序一般由类的定义和类的使用两部分组成。在程序中由类定义其对象,并规定对象之间传递消息的规律。第二,程序中的一切操作都是通过向对象发送消息来

7、实现的。对象接收到消息后,启动有关方法完成相应的操作。面向对象程序设计是一种新的程序设计的范型,是解决面向过程的程序设计的缺点的最好方法。,1.1.2 面向对象程序设计的基本概念 1.对象2.类3.消息与方法,本节主要内容,在现实世界中,对象就是我们认识世界的基本单元。它可以是人,也可以是物,还可以是一件事,整个世界就是由形形色色的“对象”构成的。 对象可以是:* 有形的具体存在的事物例如: 一辆车、一个球、一个小学生;* 无形的、抽象的事件例如: 一次演出、一场球赛等。对象既可以很简单,也可以很复杂,复杂的对象可以由若干简单的对象构成。,1.对象,现实世界中的对象,具有以下特性: 每一个对象

8、必须有一个名字以区别其它对象; 用属性来描述对象的某些特征; 有一组操作,每一个操作决定对象的一种行为;4. 对象的操作可以分为两类:一类是自身所承受的操作,一类是施加于其他对象的操作。,在现实世界中 对象可以表示为:属性 + 行为,现实世界中的对象,具有以下特性: 每一个对象必须有一个名字以区别其它对象; 用属性来描述对象的某些特征; 有一组操作,每一个操作决定对象的一种行为;4. 对象的操作可以分为两类:一类是自身所承受的操作,一类是施加于其他对象的操作。,在现实世界中 对象可以表示为:属性 + 行为,对象,属 性,行 为,举例:对象名: 洗衣机 对象的属性:生产厂家:海尔机器编号 :JS

9、G14出厂日期 :2008.05.06对象的操作(行为):启动 暂停选择,静态特征,动态特征,使用对象时只需知道它向外界提供的接口形式而不需要知道它的内部是如何实现的。这样,不仅使得对象的使用变得非常简单、方便,而且具有很高的安全性和可靠性。可见面向对象程序设计中的对象来源于现实世界,更接近人们的思维。,在面向对象程序设计中:对象是描述其属性的数据以及对这些数据施加的一组操作封装在一起构成的统一体。,在面向对象程序设计中:对象是描述其属性的数据以及对这些数据施加的一组操作封装在一起构成的统一体。对象可以认为是:数据 + 操作。在面向对象程序设计中,用数据来体现上面提到的“属性”,用函数来实现对

10、数据的操作,以实现某些功能。,对象,数 据,操作代码,在现实世界中, “类”是对一组具有共同的属性和行为的对象的抽象。 例如,教师黎明是一个对象。对象名: 黎明对象的属性:年龄:45学历:博士职称:教授对象的行为(操作):走路 吃饭授课,一个个的象黎明这样的教师就构成教师类。,2.类,类和对象之间的关系是抽象和具体的关系,类是对多个对象进行抽象的结果。 一个对象是类的一个实例。例如:张三、李四、王五、 人对象 类再如:水果 : 苹果、梨、桔子、香蕉 类 对象,在面向对象程序设计中,“类”就是具有相同的数据和操作(函数)的一组对象的集合。在C+语言中把类中的数据称为数据成员,类中的操作是用函数来

11、实现的,这些函数称为成员函数。,实际上,类是一种新的用户定义的抽象的数据类型,对象是类的一个实例。,实际上,类是一种新的用户定义的抽象的数据类型,对象是类的一个实例。例如:,类类型与传统数据类型的重要区别是:一个类在定义数据的同时也定义了对这些数据的操作。在面向对象程序设计中:总是先声明类,再由类生成其对象。类是建立对象的“模板”,按照这个模板所建立的一个个具体的对象,就是类的实际例子,通常称为实例。,在面向对象程序设计中,对象之间的联系,称为对象的交互。 在面向对象程序设计中,一个对象向另一个对象发出的请求被称为“消息” 。,3.消息与方法,消息具有三个性质:(1) 同一个对象可以接收不同形

12、式的多个消息,作出不同的响应;(2) 相同形式的消息可以传递给不同的对象,所作出的响应可以是不同的;(3) 接收对象对消息的响应并不是必须的,对象可以响应消息,也可以不响应。,调用对象中的函数就是向该对象传送一个消息,要求该对象实现某一行为(功能、操作)。对象所能实现的行为(操作),在程序设计方法中称为方法,方法中定义了一系列的操作步骤它们是通过调用相应的函数来实现的。实际上:在C+语言中,方法是通过成员函数来实现的。,1.1.3 面向对象程序设计的基本特征 1. 抽 象2. 封 装 3. 继 承4. 多 态,本节主要内容,1. 抽 象 现实生活中: 张三、李四、王五、. - 人 苹果、梨、桔

13、子、香蕉 . -水果抽象的过程是将有关事物的共性归纳、集中的过程。,在程序设计方法中:抽象是对复杂世界的简单表示,抽象并不打算了解全部问题,而只强调感兴趣的信息,忽略了与主题无关的信息。 例如,在设计一个成绩管理程序的过程中,只关心他的姓名、学号、成绩等,而对他的身高、体重等信息就可以忽略。而在设计学生健康信息管理系统中,身高、体重等信息必须抽象出来,而成绩则可以忽略。,抽象包括两个方面:数据抽象和代码抽象。数据抽象描述某类对象的共同属性;代码抽象描述了某类对象具有的共同行为。,以学籍管理程序为例,通过对学生进行归纳、分析,抽取出其中的共性,可以得到如下的抽象描述:共同的属性(数据抽象部分):

14、姓名、学号、成绩等。用C+语言的数据成员来表示:char* name; /姓名int number; /学号float score; /成绩共同的操作(代码抽象部分):数据录入、数据修改和数据输出等。用C+语言的成员函数表示:input().; /数据录入函数modify().; /数据修改函数print().; /数据输出函数,2.封装在现实世界中,所谓封装就是把某个事物包围起来,外界是看不到的,甚至是不可知的。例如:录音机、电视机、照相机等。在面向对象程序设计中,封装是指把数据和实现操作的代码集中起来放在对象内部,并尽可能隐蔽对象的内部细节。,对象好像是一个不透明的黑盒子,表示对象属性的数

15、据和实现各个操作的代码都被封装在黑盒子里,从外面是看不见的,各个对象之间是相对独立的,互不干扰。对象只留下少量接口,以便与外界联系。C+对象中的成员函数名就是对象的对外接口,外界可以通过成员函数名来调用函数来实现某些操作。,封装具有两方面的含义:一是将有关的数据和操作代码封装在一个对象中,各个对象相对独立、相不干扰。二是将对象中某些数据与操作代码对外隐蔽,即隐蔽其内部细节,只留下少量接口,以便与外界联系,接收外界的消息。这种对外界隐蔽的做法称为信息隐蔽。,封装和抽象机制可以将对象的使用者与设计者分开,使用者不必知道对象行为实现的细节,只需要使用设计者提供的接口让对象去做。这样,大大降低了人们操

16、作的复杂程度,还有利于数据安全。从而减轻了开发一个软件糸统的难度。,3. 继承 (1) 继承的概念 (2) 继承的分类,本节主要内容,(1) 继承的概念父亲儿子继承关系可以使后者继承前者的基本特性,又可以增加一些新的特性。,哺乳动物 (热血、有毛发、用奶哺育幼仔)狗(有犬牙、食肉、特定的骨骼结构、群居)白狗 黑狗(白色) (黑色)继承关系简化了人们对事物的认识和叙述,简化了工作程序。,若类之间具有继承关系,则它们之间具有下列几个特性: 1类间具有共享特性(包括数据和程序代码的共享);2类间具有差别或新增部分(包括非共享的数据和程序代码);3类间具有层次结构。,假设有两个类-类A 和类B,若类B

17、继承类A,则类B具有类A的基本特性(包括数据和操作)AB这时,我们称类A为基类或父类;而称类B为类A的派生类或子类。我们可以说:类B 继承了类A还可以说: 类B是从类A中派生出来的。,如果类B是类A的派生类,那么,在构造类B的时候,不必描述派生类B的所有特性,只需:1. 让它继承类A的特性,2. 增加类B与基类A不同的那些特性。 可见,类B的特性是由继承来的和新添加的两部分特性构成。,类的派生过程可以无限继承下去,即派生类可以作为另一个派生类的基类。祖父父亲儿子,继承机制的作用:一是避免公用代码的重复开发, 减少代码和数据冗余。二是通过增强一致性来减少模块间的接口和界面。,(2) 继承的分类从

18、继承源上划分: 继承分为单继承和多继承。单继承-一个派生类只继承了一个基类的特性。多继承-一个派生类继承了多个基类的特性。,4. 多态面向对象系统的多态性是指不同的对象收到相同的的消息时, 执行不同的操作。,4. 多态面向对象系统的多态性是指不同的对象收到相同的的消息时, 执行不同的操作。1.在日常生活中:汽车 行为1 挪开同一消息 凳子 行为2,4. 多态面向对象系统的多态性是指不同的对象收到相同的的消息时, 执行不同的操作。1.在日常生活中:汽车 行为1 挪开同一消息 凳子 行为22.在OOP中:窗口对象 行为3移动 同一消息 棋子对象 行为4,C+语言支持两种多态性: 编译时的多态性 运

19、行时的多态性编译时的多态性是通过函数重载和运算符重载来实现的;运行时的多态性是通过虚函数来实现的。将分别在第2章与第5章进行介绍。,1.2 为什么要使用面向对象程序设计1.2.1 传统程序设计方法的局限性1.2.2 面向对象程序设计的主要优点,本节主要内容,1.2.1 传统程序设计方法的局限性 1.传统程序设计开发软件的生产效率低下硬件:电子管晶体管集成电路大规模集成电路生产能力不断提高、更新越来越快、功能越来越强、价格越来越低。软件:机器语言汇编语言高级语言生产能力低下、开发周期长、效率低、更新较慢、费用不断上升。,为什么出现这个问题?,主要原因是计算机硬件生产较好地解决了以下三个问题:重用

20、性复杂性可维护性而传统的程序设计不能很好地解决这三个问题。,(1) 重用性传统软件生产中缺乏大粒度、可重用的构件。基本处于手工作业阶段。 (2) 复杂性传统程序中数据与其操作是相分离的,开发大程序时,常因数据的一个的小小变动而导致意想不到的错误,甚至整个程序的崩溃。以致出现过所谓的“软件危机”。 (3) 可维护性传统程序中数据与操作相分离的结构不利于程序的维护。,2.传统程序设计难以应付日益庞大的信息量和多样的信息类型随着计算机科学与技术的飞速发展 应用领域:已从数值计算扩展到了人类社会的各个方面;处理的数据:已从简单数字和字符,发展为具有多种格式的多媒体数据,如文本、图形、图像、影像、声音等

21、;描述的问题:从单纯的计算问题到仿真复杂的自然现象和社会现象。然而,面对这些庞大的信息量和多样的信息格式,传统程序设计方法是无法应付的。,3.传统的程序设计难以适应各种新环境当前,并行处理、分布式、网络和多机系统等,已经或将是程序运行的主流方式和主流环境。传统的程序设计技术很难适应这些新环境。综上所述,传统的面向过程的结构化程序设计不能够满足计算机技术的迅猛发展的需要,软件开发迫切需要一种新的程序设计方法的支持。,1.2.2 面向对象程序设计的主要优点1.可提高程序的重用性2.可控制程序的复杂性3.可改善程序的可维护性4.能够更好地支持大型程序设计5.增强了计算机处理信息的范围6.能很好地适应

22、新的硬件环境,1.3 面向对象的程序设计语言1.3.1 面向对象程序设计语言的发展概况 1.3.2. 几种典型的面向对象程序设计语言,本节主要内容,1.3.1 面向对象程序设计语言的发展概况 现在公认的第一个真正面向对象程序设计语言是Smalltalk。它是由美国的Xerox公司于20世纪70年代初研制的。该语言第一次使用了“面向对象”的概念和程序风格,开创了面向对象程序设计的新范型。被誉为面向对象程序设计语言发展的里程碑。,20世纪80年代以来,面向对象语言得到飞速发展 。面向对象程序设计语言朝着两个方向发展:一个方向是朝着纯面向对象语言发展,如继Smalltalk之后,又出现了Eiffel

23、、SELF等语言;另一个方向是朝着混合型面向对象语言发展,如将过程型与面向对象结合产生了诸如 C+、Objective-C、Object Pascal 等一大批语言。将函数型与面向对象结合产生了诸如 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+语言继承发展而来,是一个全新的、面向对象的、现代的编程语言。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报