




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C+面向对象程序设计 目 录第1章:面向对象程序设计概述第2章:C+基础第3章:类和对象(一)第4章:类和对象(二)第5章:派生类与继承第6章:多态性与虚函数第7章:运算符重载第8章:模板第9章:C+的输入和输出第10章:面向对象程序设计方法与实例 20世纪90年代以来面向对象程序设计(Object Oriented Programming,简称OOP)迅速地在全世界流行,并一跃成为程序设计的主流技术。现在,面向对象程序设计的思想已经被越来越多的软件设计人员所接受,不仅因为它是一种最先进的新颖的计算机程序设计思想,更主要的是这种新的思想更接近人的思维活动,人们利用这种思想进行程序设计时,可以很
2、大程度地提高编程能力,减少软件维护的开销。面向对象程序设计方法是通过增加软件的可扩充性和可重用性来提高程序员的编程能力的。这种思想与我们以前使用的方法有很大的不同,并且在理解上有一些难点。第1章 面向对象程序设计概述1.1 什么是面向对象程序设计1.1.1 新的程序设计范型 程序设计范型是指设计程序的规范、模型和风格,它是一类程序设计语言的基础。面向过程程序设计范型:程序=过程+调用 如C、Pascal、Ada函数式程序设计范型:程序被看作“描述输入与输出之间关系”的数学函数。如LISP面向对象程序设计是一种新型的程序设计范型。这种范型的主要特征是:程序=对象+消息面向对象程序的主要结构特点:
3、第一,程序一般由类的定义和类的使用两部分组成,在主程序中定义各对象并规定它们之间传递消息的规律。第二,程序中的一切操作都是通过向对象发送消息来实现的,对象接收到消息后,启动有关方法完成相应的操作。1.1.2 面向对象程序设计的基本概念1.对象2.类3 .消息4. 方法1. 对象 在现实世界中,任何事物都是对象。可以是有形的具体存在的事物,也可以是无形的抽象的事件。对象一般可以表示为:属性行为现实世界中的对象,具有以下特性: 每一个对象必须有一个名字以区别于其他对象; 用属性来描述它的某些特征; 有一组操作,每个操作决定对象的一种行为; 对象的操作可以分为两类:一类是自身所承受的操作,一类是施加
4、于其他对象的操作。 在面向对象程序设计中,对象是描述其属性的数据及对这些数据施加的一组操作封装在一起构成的统一体。 对象可以认为是:数据操作 类似于录音机: 数据内部线路(隐蔽的) 操作按键(公开的) 在实现世界中,“类”是一组具有相同属性和行为的对象的抽象。 类和对象之间的关系是抽象和具体的关系。类是多个对象进行综合抽象的结果,一个对象是类的一个实例。 在面向对象程序设计中,类就是具有相同数据和相同操作的一组对象的集合。是对具有相同数据结构和相同操作的一类对象的描述。 在面向对象程序设计中,总是先声明类,再由类生成其对象。 2.类3 .消息 面向对象设计技术必须提供一种机制允许一个对象与另一
5、个对象的交互,这种机制叫消息传递。 在面向对象程序设计中,一个对象向另一个对象发出的请求被称为“消息”。当对象收到消息时,就调用有关的方法,执行相应的操作。消息是一个对象要求另一个对象执行某个操作的的规格说明,通过消息传递才能完成对象之间的相互请求或相互协作。 消息具有三个性质:(1)同一个对象可以接收不同形式的多个消息,作出不同的响应。(2)相同形式的消息可以传递给不同的对象,所作出的响应可以是不同的。(3)对消息的响应并不是必需的,对象可以响应消息,也可以不响应消息分两类:公有消息(其它对象发出)和私有消息(向自己发出)。4. 方法 方法就是对象所能执行的操作。方法包括界面和方法体两部分。
6、 方法的界面就是消息的模式,它给出了方法调用的协议;方法体则是实现某种操作的一系列计算步骤,就是一段程序。 在C语言中方法是通过函数来实现的,称为成员函数 消息和方法的关系是:对象根据接收到的消息,调用相应的方法;反过来,有了方法,对象才能响应相应的消息。1.1.3 面向对象程序设计的基本特征 1. 抽 象 2. 封 装 3. 继 承 4. 多 态 1. 抽象 抽象是人类认识问题的最基本的手段之一。 抽象是通过特定的实例(对象)抽取共同性质以后形成概念的过程。抽象是对系统的简化描述和规范说明,他强调了系统中的一部分细节和特性,而忽略了其他部分。 抽象包括两个方面:数据抽象和代码抽象(或称行为抽
7、象)。前者描述某类对象的属性和状况,也就是此类对象区别于彼类对象的特征物理量;后者描述了某类对象的共同行为特征或具有的共同操作。 在面向对象的程序设计方法中,对一个具体问题的抽象分析结果,是通过类来描述和实现的。2. 封装encapsulation 在现实世界中,封装就是把某个事物包围起来,使外界不知道该事物的具体内容。 在面向对象程序设计中,封装是指把数据和实现操作的代码集中起来放在对象内部,并尽可能隐蔽对象的内部细节。封装应该具有如下几个条件: (1)对象具有一个清晰的边界,对象的私有数据和实现操作的代码被封装在该边界内。(2)具有一个描述对象与其他对象如何相互作用的接口,该接口必须说明消
8、息如何传递的使用方法。(3)对象内部的代码和数据应受到保护,其他对象不能直接修改。3. 继承inheritance 继承是在一个已经建立的类的基础上再接着声明一个新类的扩展机制,原先已经建立的类称为基类,在基类之下扩展的类称为派生类,派生类又可以向下充当继续扩展的基类,因此构成层层派生的一个动态扩展过程。 派生类享有基类的数据结构和算法,而本身又具有增加的行为和特性,因此继承的机制促进了程序代码的可重用性。 一个基类可以有多个派生类,一个派生类反过来可以具有多个基类,形成复杂的继承树层次体系。 基类与派生类之间有一个本质的关系: 基类是一个简单的类,描述相对简单的事物,派生类是一个复杂些的类,
9、处理相对复杂的现象。 这样一种简单到复杂的关系正是人们认识自然过程的线性映射,软件的可扩充性建立在这样一种对自然的正确回归上便拥有了坚实的基础。 继承的作用: 避免公用代码的重复开发,减少代码和数据冗余。 通过增强一致性来减少模块间的接口。继承分为单继承和多继承。4. 多态polymorphism 多态性是指不同的对象收到相同的消息时产生多种不同的行为方式。 如对“挪开”的不同理解 C支持两种多态性:编译时的多态性(重载)和运行时的多态性(虚函数)。重载举例void Print(int i) 语句段1;void Print(float fi) 语句段2;void Print(const cha
10、r* c) 语句段3;使用重载可以使程序员在只知道操作的一般含义,而不知道操作的具体细节的情况下能够正确调用某个函数,减少了程序员记忆操作名字的负担。虚函数概念在第6章介绍多态性增强了软件的灵活性和重用性。1.2 为什么要使用面向对象程序设计1.2.1 传统程序设计方法的局限性 (1) 传统程序设计开发软件的生产效率低下存在重用性、复杂性和可维护性问题重用性:传统程序设计从语句一级开始编程,缺乏大粒度、可重用性的构件。复杂性:传统程序设计数据与操作分离,如果一个或多个数据的结构发生变化,将波及程序的很多部分甚至整个程序。可维护性:传统程序设计数据与操作相分离的结构使得维护数据和处理数据的操作过
11、程要花费大量的时间和精力。(2) 传统程序设计难以应付日益庞大的信息量和多样的信息类型当代计算机所处理的数据已从最简单的数据和字符发展为具有多种格式的多媒体数据,如文本、图形、图像、影像、声音等。面对庞大的信息量和多样的信息格式,传统程序设计无法应付。传统的程序设计难以适应各种新环境 当前,并行处理、分布式、网络和多机系统等节点之间的通信机制传统的程序设计技术很难处理。1.2.2 面向对象程序设计的主要优点 可提高程序的重用性 “类”作为大粒度的构件提高了程序的重用性。两种重复使用类的方法:建立在各种环境下都能使用的类库或对象集。从基类派生出子类可控制程序的复杂性通过”类“联系数据及对数据的操
12、作,有效控制了程序的复杂性 可改善程序的可维护性消息传递机制使得对方法体中的任何修改不会导致发送消息的程序修改类的封装和信息隐藏机制使得外界对其中的数据和程序代码的非法操作成为不可能。(4)能够更好地支持大型程序设计 类作为一个程序模块,比通常的子程序的独立性强的多。动态连接和继承机制进一步发展了基于数据抽象的模块化设计。增强了计算机处理信息的范围 用类来直接描述现实世界中的类型,可使计算机系统的描述和处理对象从数据扩展到现实世界和思维世界的各种事物,大大扩展了计算机系统处理的信息量和信息类型。能很好地适应新的硬件环境面向对象程序设计中的对象、消息传递等思想和机制,与分布式、并行处理、多机系统及网络等硬件环境恰好吻合。1.3 面向对象程序设计的语言1.3.1 面向对象程序设计语言的发展概况20世纪60年代研制出的Simula
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 建设工程劳务项目内部承包合同
- 乡村环境整治项目农业承包协议
- 装饰工程承包合同
- 环境监测设备研发合同
- 建筑工程施工包干合同
- 店铺租赁三方协议
- 房屋出租安全协议
- 个人循环保证借款合同
- 公司企业单位安全生产与劳动保护知识竞赛参考试题库500题(含答案)
- 2025年鄂州c1货运从业资格证模拟考试题
- 医院实习生岗前培训课件
- 照明灯具统计表
- 杭州市居住房屋出租安全管理若干规定
- 2022年江西工业贸易职业技术学院职业适应性测试题库及答案解析
- 给水排水管道工程质量通病以及防治
- 计算机视觉全套课件
- 中国联通IMS接口规范 第三分册:Sh接口 V1.0
- protel完全教程(原理图部分)
- 迎泽公园文化广场歌词汇集
- 环境化学物的毒性作用及其影响因素
- Q∕GDW 12176-2021 反窃电监测终端技术规范
评论
0/150
提交评论