visual c+面向对象程序设计教程与实验(第二版)

上传人:tia****nde 文档编号:70545507 上传时间:2019-01-17 格式:PPT 页数:243 大小:1.57MB
返回 下载 相关 举报
visual c+面向对象程序设计教程与实验(第二版)_第1页
第1页 / 共243页
visual c+面向对象程序设计教程与实验(第二版)_第2页
第2页 / 共243页
visual c+面向对象程序设计教程与实验(第二版)_第3页
第3页 / 共243页
visual c+面向对象程序设计教程与实验(第二版)_第4页
第4页 / 共243页
visual c+面向对象程序设计教程与实验(第二版)_第5页
第5页 / 共243页
点击查看更多>>
资源描述

《visual c+面向对象程序设计教程与实验(第二版)》由会员分享,可在线阅读,更多相关《visual c+面向对象程序设计教程与实验(第二版)(243页珍藏版)》请在金锄头文库上搜索。

1、面向对象程序设计,授课班级: 主讲教师:,参考书 面向对象的理论与C+实践 王燕 清华大学出版 C+面向对象程序设计 谭浩强主编 中国铁道出版社 THE C+ PROGRAMMING LANGUAGE(Special Edition) Bjarne Stroustrup 高等教育出版社,课时安排 授课:34学时 上机:30学时,The trick of learning programming is,practice, pratice and pratice.,第1章 绪 论,1.1 面向对象方法的起源 1.2 面向对象是软件方法学的返朴归真 1.3 结构化程序设计与面向对象程序设计 1.4

2、面向对象的基本概念和面向对象系统的特性 1.5 面向对象程序设计语言的四大家族 1.6 面向对象的系统开发方法 1.7 面向对象程序设计举例,CPU指令系统,由0、1序列构成的指令码组成 如:10000000 加 10010000 减,用助记符号描述的指令系统 如 ADD A, B,面向机器的语言,程序设计是数据被加工的过程,客观世界可以分类,对象是类的实例 对象是数据和方法的封装 对象间通过发送和接受消息发生联系,程序设计关键是定义类,并由类派生对象,1.1 面向对象方法的起源,软件设计人员的负担越来越重,软件的实现越来越庞大,为计算机领域自身的发展提出了新的要求。利用传统的程序设计思想无法

3、满足这一要求,人们就开始寻求一种更能反映人类解决问题的自然方法,这就是“面向对象”技术。 50年代的程序都是用指令代码或汇编语言编写的 60年代高级语言的出现大大简化了程序设计,缩短了软件开发周期自60年代末到70年代初,出现了大型软件系统,如操作系统、数据库,这给程序设计带来了新的问题。可靠性差,错误多,且不易维护和修改-“软件危机”。,1.1 面向对象方法的起源,为了克服60年代出现的软件危机,1968年北约组织提出“软件工程”的概念。对程序设计语言的认识从强调表达能力为重点转向以结构化和简明性为重点,将程序从语句序列转向相互作用的模块集合。1969年,E.W.Dijkstra首先提出了结

4、构化程序设计的概念,他强调从程序结构和风格上来研究程序设计。在软件工程的迫切要求下,70年代结构化语言获得蓬勃发展并得到广泛应用。使用结构化程序设计方法可显著地减少软件的复杂性,提高软件的可靠性、可测试性和可维护性。经过几年的探索和实践,结构化程序设计的应用确实取得了成效,用结构化程序设计的方法编写出来的程序不仅结构良好,易写易读,而且易于证明其正确性。,进入80年代,由于一系列高技术的研究,如第五代计算机、计算机辅助制造CAM和知识工程等领域的研究都迫切要求大型的软件系统作为支撑。他们所用的数据类型也超出了常规的结构化数据类型的范畴,提出对图像、声音、规则等非结构化信息的管理。为了适应这些应

5、用领域的需要,迫切要求软件模块具有更强的独立自治性,以便于大型软件的管理、维护和重用。由于结构化语言的数据类型较为简单,所以不能胜任对非结构化数据的定义与管理,采用过程调用机制也不够灵活,独立性较差。,为了适应高技术发展的需要,消除结构化编程语言的局限,自80年代以来,出现了面向对象程序设计流派,研制出了多种面向对象程序设计语言(简称为OOPL:Object Oriented Programming Language),如Ada,Smalltalk,C+和当前使用在Internet上的平台无关语言Java等。,由于OOPL的对象、类具有高度的抽象性,所以它能很好地表达任何复杂的数据类型,也允许

6、程序员灵活地定义自己所需要的数据类型。类本身具有很完整的封装性,可以使用它作为编程中的模块单元,满足模块独立自治的需求。再加上继承性和多态性,更有助于简化大型软件和大量重复定义的模块,增强了模块的可重用性,提高了软件的可靠性,缩短了软件的开发周期。,1.2 面向对象是软件方法学的返朴归真,客观世界是由许多具体的事物、抽象的概念、规则等组成的,我们将任何感兴趣或要加以研究的事、物、概念统称为对象Object。 每个对象都有各自的内部状态和运动规律,不同对象之间通过消息传递进行相互作用和联系就构成了各种不同的系统。面向对象的方法正是以对象作为最基本元素的一种分析问题和解决问题的方法。,传统的结构化

7、方法强调的是功能抽象和模块化,每个模块都是一个过程。结构化方法处理问题是以过程为中心的。面向对象强调的是功能抽象和数据抽象,用对象来描述事物和过程。而对象包含数据和对数据的操作,是对数据和功能的抽象和统一。面向对象方法处理问题的过程是对一系列相关对象的操纵,即发送消息到目标对象中,由对象执行相应的操作。因此面向对象方法是以对象为中心的,这种以对象为中心的方法更自然、更直接地反映现实世界的问题空间,具有独特的抽象性、封装性、继承性和多态性,能更好地适应复杂大系统不断发展与变化的要求。,采用对象的观点看待所要解决的问题,并将其抽象为应用系统是极其自然与简单的,因为它符合人类的思维习惯,使得应用系统

8、更容易理解。同时,由于应用系统是由相互独立的对象构成的,使得系统的修改可以局部化,因此系统更易于维护。 软件开发从本质上讲就是对软件所要处理的问题域进行正确的认识,并把这种认识正确地描述出来。既然如此,那就应该直接面对问题域中客观存在的事物来进行软件开发,这就是面向对象。另一方面,人类在认识世界的历史长河中形成的普遍有效的思维方法,在软件开发中也应该是适用的。在软件开发中尽量采用人们在日常生活中习惯的思维方式和表达方式,这就是面向对象方法所强调的基本原则。软件开发从过分专业化的方法、规则和技巧中回到了客观世界,回到了人们的日常思维,所以说面向对象方法是软件方法学的返朴归真。,1.3结构化程序设

9、计与面向对象程序设计,1.结构化程序设计 程序=数据结构+算法+程序设计语言+语言环境,1. 结构化程序设计方法,自顶向下、逐步细化:结构化程序设计的主要思想是功能分解并逐步求精。当一些任务复杂以至无法描述时,可以将它拆分为一系列较小的功能部件,直到这些完备的子任务小到易于理解的程度。这种方法叫“自顶向下,逐步细化”。 模块化设计:在程序设计中常采用模块化设计的方法,尤其是当程序比较复杂时,更有必要。在拿到一个程序模块(实际上是程序模块的任务书)以后,根据程序模块的功能将它划分为若干个子模块,如果嫌这些子模块的规模大,还可以划分为更小的模块。这个过程采用自顶向下方法来实现。结构化程序设计方法可

10、以解决人脑思维能力的局限性和所处理问题的复杂性之间的矛盾。 结构化编码:在设计好一个结构化的算法之后,还要善于进行结构化编码。即用高级语言语句正确地实现顺序、选择、循环三种基本结构。,2.面向对象程序设计程序设计的新思维,面向对象程序设计将数据及对数据的操作放在一起,作为一个相互依存、不可分割的整体来处理,它采用了数据抽象和信息隐藏技术。它将对象及对对象的操作抽象成一种新的数据类型类,并且考虑不同对象之间的联系和对象所在类的重要性。 面向对象程序设计优于传统的结构化程序设计,其优越性表现在,它有希望解决软件工程的两个主要的问题软件复杂性控制和软件生产率的提高,此外它还符合人类的思维习惯,能够自

11、然地表现现实世界的实体和问题,它对软件开发过程具有重要的意义。 面向对象程序设计能支持的软件开发策略有: (1) 编写可重用代码;(2) 编写可维护的代码; (3) 共享代码; (4) 精减已有的代码。,1.对象:是计算机内存中的一块区域,通过将内存分块,每个模块(即对象)在功能上相互之间保持相对独立。当对象的一个成员函数被调用时,对象执行其内部的代码来响应这个调用,这使对象呈现出一定的行为。行为及其结果就是该对象的功能。 2.面向对象:是一种认识世界的方法也是一种程序设计方法。面向对象的观点认为,客观世界是由各种各样的实体,也就是对象组成的。每种对象都有自己的内部状态和运动规律,不同对象间的

12、相互联系和相互作用就构成了各种不同的系统,并进而构成整个客观世界。按照这样的思想设计程序,就是面向对象的程序设计。“面向对象”不仅仅作为一种技术、更作为一种方法贯穿于软件设计的各个阶段。 3.面向对象程序设计:是在面向过程的程序设计基础上的质的飞跃。面向对象方法的产生,是计算机科学发展的要求。面向对象的技术在系统程序设计、数据库及多媒体应用等领域都得到广泛应用。,2. 面向对象程序设计OOP,程序=对象+对象+对象 对象=算法+数据结构+程序设计语言+语言环境,1.4 面向对象的基本概念 和面向对象系统的特性,1.4.1 面向对象的基本概念 1.对象(object) (1)具有唯一标识名,可以

13、区别于其他对象。 (2)具有一个状态,由与其相关联的属性值集合所表征。 (3)有一组操作方法即服务,每个操作决定对象的一种行为。 (4)一个对象的成员仍可以是一个对象。 (5)模块独立性。 (6)动态连接性 (7)易维护性,从逻辑上看,一个对象是独立存在的模块。模块内部状态不因外界的干扰而改变,也不会涉及到其他模块;模块间的依赖性极小或几乎没有;各模块可独立地被系统所组合选用,也可被程序员重用,不必担心破坏其他模块。,客观世界中的对象之间是有联系的,在面向对象程序设计中,通过消息机制,把对象之间动态连接在一起,使整个机体运转起来,便称为对象的连接性。有一组操作(服务),每一个操作决定对象的一种

14、功能或行为。,2. 类(class),在面向对象系统中,并不是将各个具体的对象都进行描述,而是忽略其非本质的特性,找出其共性,将对象划分成不同的类,这一过程为抽象过程。类是对象的抽象及描述,是具有共同属性和操作的多个对象的相似特性的统一描述体。在类的描述中,每个类要有一个名字标识,用以表示一组对象的共同特征。类中的每个对象都是该类的实例。类提供了完整的解决特定问题的能力,因为类描述了数据结构(对象属性)、算法(服务、方法)和外部接口(消息协议),是一种用户自定义的数据类型。,3. 消息(message),消息是面向对象系统中实现对象间的通信和请求任务的操作,是要求某个对象执行其中某个功能操作的

15、规格说明。发送消息的对象称为发送者,接受消息的对象称为接收者。对象间的联系,只能通过消息来进行。对象在接收到消息时才被激活。 消息具有三个性质: (1) 同一对象可接收不同形式的多个消息,产生不同的响应; (2) 相同形式的消息可以送给不同对象,所做出的响应可以是截然不同的; (3) 消息的发送可以不考虑具体的接收者,对象可以响应消息,也可以对消息不予理会,对消息的响应并不是必须的。,对象之间传送的消息一般由三部分组成:接受对象名、调用操作名和必要的参数。 在面向对象程序设计中,消息分为两类:公有消息和私有消息。假设有一批消息发向同一个对象,其中一部分消息是由其他对象直接向它发送的,称为公有(

16、public)消息;另一部分消息是它向自己发送的,称为私有(private)消息。,4. 方法(method),在面向对象程序设计中,要求某一对象做某一操作时,就向对象发送一个相应的消息,当对象接收到发向它的消息时,就调用有关的方法,执行相应的操作。方法就是对象所能执行的操作。方法包括界面和方法体两部分。方法的界面就是消息的模式,它给出了方法的调用协议;方法体则是实现某种操作的一系列计算步骤,也就是一段程序。消息和方法的关系是:对象根据接收到的消息,调用相应的方法;反过来,有了方法,对象才能响应相应的消息。所以消息模式与方法界面应该是一致的。同时,只要方法界面保持不变,方法体的改动不会影响方法的调用。在C+语言中方法是通过函数来实现的,称为成员函数。,1.4.2 面向对象系统的特性,(1) 抽象性 面向对象鼓励程序员以抽象的观点看待程序,即程序是由一组对象组成的。我们可以将一组对象的共同特征进一步抽象出来,从而形成“类”的概念。抽象是一种从一般的观点看待事物的方法,它要求程序员集中于事物的本质特征,而不是具体细节或具体实现。类的概念

展开阅读全文
相关资源
相关搜索

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

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