面向对象程序设计第一章概述_第1页
面向对象程序设计第一章概述_第2页
面向对象程序设计第一章概述_第3页
面向对象程序设计第一章概述_第4页
面向对象程序设计第一章概述_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1面向对象程序设计吕 华2 课程课程安排安排n主要内容主要内容nC+编程方法与实践编程方法与实践n面向对象程序设计基本概念、原理和技术面向对象程序设计基本概念、原理和技术3教材:教材:nC+面向对象程序设计教程(第面向对象程序设计教程(第3 版)版) 陈陈维兴维兴 清华大学出版社清华大学出版社参考书:参考书:nC+程序设计教程程序设计教程 钱能钱能 清华大学出版社清华大学出版社nC+程序设计程序设计 谭浩强谭浩强 清华大学出版社清华大学出版社教材教材4第一章第一章 概述概述1.1 从从C到到C+ C语言是贝尔实验室的语言是贝尔实验室的Dennis Ritchie在在B语言的语言的基础上开发出来

2、的,作为基础上开发出来的,作为UNIX操作系统的开发语操作系统的开发语言而开始为人们所共识。言而开始为人们所共识。 C语言是与硬件无关的。语言简洁、紧凑,使用语言是与硬件无关的。语言简洁、紧凑,使用方便、灵活、有丰富的运算符和数据类型,可以方便、灵活、有丰富的运算符和数据类型,可以直接访问内存地址,生成的目标代码质量高,程直接访问内存地址,生成的目标代码质量高,程序运行效率高,可移植性好。序运行效率高,可移植性好。5第一章第一章 概述概述C语言的局限:语言的局限: 1、C类型检查机制相对较弱。类型检查机制相对较弱。 2、C本身几乎没有支持代码重用的语言结构本身几乎没有支持代码重用的语言结构 3

3、、程序规模达到一定程度时,程序员很难控制程序、程序规模达到一定程度时,程序员很难控制程序的复杂性。的复杂性。 1980年贝尔实验室的年贝尔实验室的Bjame Stroustrup开始对开始对C进进行改进和扩充,行改进和扩充,1983年正式取名为年正式取名为C+。C+包含了包含了整个整个C的全部特征、属性和优点,同时添加了对面向的全部特征、属性和优点,同时添加了对面向独享编程的完全支持。独享编程的完全支持。6第一章第一章 概述概述1.2 面向对象程序设计面向对象程序设计 面向过程的程序设计思想的核心是功能分解并面向过程的程序设计思想的核心是功能分解并逐步求精。逐步求精。 面向过程的程序设计方法中

4、程序的定律是:面向过程的程序设计方法中程序的定律是:程序程序=(算法)(算法)+(数据结构)(数据结构) 即算法是一个独立的整体,数据结构也是一个独立的整即算法是一个独立的整体,数据结构也是一个独立的整体。两者分开设计,给编程实现造成很大困难;数据结构体。两者分开设计,给编程实现造成很大困难;数据结构对应用公开安全性差。对应用公开安全性差。71.2 面向对象程序设计面向对象程序设计 面向对象程序设计的本质是把数据和处面向对象程序设计的本质是把数据和处理数据的过程当成一个整体理数据的过程当成一个整体对象。对象。 程序程序 = =(算法(算法+ +数据结构)数据结构) 即算法与数据结构是一个整体,

5、算法总是离不开数据即算法与数据结构是一个整体,算法总是离不开数据结构,含有对数据结构的访问并只能适用于特定的数据结构,含有对数据结构的访问并只能适用于特定的数据结构。结构。8 现实世界本就是一个对象的世界,任何对象都具有一定现实世界本就是一个对象的世界,任何对象都具有一定的属性与操作,也就总能用数据结构与算法两者合一地来描的属性与操作,也就总能用数据结构与算法两者合一地来描述。这时侯,程序定义变为:述。这时侯,程序定义变为: 对象对象 = =(算法(算法+ +数据结构)数据结构) 程序程序 = =(对象(对象+ +对象对象+.+.) 当我们把现实世界分解为一个个的对象,解决现实世界当我们把现实

6、世界分解为一个个的对象,解决现实世界问题的计算机程序也与此相对应,由一个个对象组成,这些问题的计算机程序也与此相对应,由一个个对象组成,这些程序就称为面向对象的程序。程序就称为面向对象的程序。 编写面向对象程序的过程就称为面向对象的程序设计编写面向对象程序的过程就称为面向对象的程序设计(Object-Oriented ProgrammingObject-Oriented Programming,简称为,简称为OOPOOP)。)。 1.2 面向对象程序设计面向对象程序设计9面向对象程序的主要结构特点:面向对象程序的主要结构特点: 一、程序一般由类的定义和类的使用两部分组成,在主一、程序一般由类的

7、定义和类的使用两部分组成,在主 程序中定义各对象并规定他们之间传递消息的规律;程序中定义各对象并规定他们之间传递消息的规律;二、程序中的一切操作都是通过向对象发送消息来实现,二、程序中的一切操作都是通过向对象发送消息来实现, 对象接收到消息后,启动有关方法完成相应的操作;对象接收到消息后,启动有关方法完成相应的操作;三、类由继承关系产生相互间的联系三、类由继承关系产生相互间的联系1.2 面向对象程序设计面向对象程序设计10 面向对象方法是一种运用面向对象方法是一种运用对象、类、继承、对象、类、继承、消息传递、消息传递、 封装、多态性封装、多态性等概念来构造系统的等概念来构造系统的软件开发方法。

8、软件开发方法。OO = Objects + Classes + InheritanceOO = Objects + Classes + Inheritance + Communication with messages+ Communication with messages1.2 面向对象程序设计面向对象程序设计111.3 面向对象的基本概念面向对象的基本概念1、对象:、对象: 现实世界中的每个对象都具有一些与其他对现实世界中的每个对象都具有一些与其他对象不同的静态的属性和动态的行为。静态的属性象不同的静态的属性和动态的行为。静态的属性又称为对象的状态,例:人的姓名、性别、年龄、又称为对象的

9、状态,例:人的姓名、性别、年龄、身高等;动态的行为又称为对象的操作或功能,身高等;动态的行为又称为对象的操作或功能,例:吃饭、跑步、开车、睡觉等。例:吃饭、跑步、开车、睡觉等。 对象可以认为是:属性对象可以认为是:属性 + 行为行为 121、对象:、对象: 在面向对象程序中,对象是描述其属性的数在面向对象程序中,对象是描述其属性的数据以及对这些数据施加的一组操作封装在一起构据以及对这些数据施加的一组操作封装在一起构成的统一体。成的统一体。 对象可以认为是:数据对象可以认为是:数据 + 操作操作 使用对象时,只需知道它向外界提供的接口使用对象时,只需知道它向外界提供的接口形式而不需要知道它的内部

10、是如何实现的。形式而不需要知道它的内部是如何实现的。1.3 面向对象的基本概念面向对象的基本概念132、类:、类: 类是对一组具有共同的属性特征和行为特征对象类是对一组具有共同的属性特征和行为特征对象的抽象。的抽象。 对象是特定类所描述的一个具体对象,也称实例。对象是特定类所描述的一个具体对象,也称实例。 类和对象之间的关系是抽象和具体的关系。类是类和对象之间的关系是抽象和具体的关系。类是对多个对象进行综合抽象的结果,对象又是类的个对多个对象进行综合抽象的结果,对象又是类的个体实物,一个对象是类的一个实例。体实物,一个对象是类的一个实例。1.3 面向对象的基本概念面向对象的基本概念14例如:教

11、师李明是一个对象例如:教师李明是一个对象类名:类名: 教师教师 对象名:对象名: 李明李明类属性:年龄类属性:年龄 对象属性:年龄:对象属性:年龄:30 学历学历 学历:博士学历:博士 职称职称 职称:副教授职称:副教授 专业专业 专业:计算机软件专业:计算机软件类操作:授课类操作:授课 对象操作:讲对象操作:讲C语言课语言课 判作业判作业 判判C语言作业语言作业 吃饭吃饭1.3 面向对象的基本概念面向对象的基本概念153、对象的交互:、对象的交互: 对象与对象之间的交互采用对象与对象之间的交互采用消息传递机制消息传递机制。 消息的内容一般应包括接收者的名字、请求的消息的内容一般应包括接收者的

12、名字、请求的方法、一个或多个参数。方法、一个或多个参数。 消息分为两类:公有消息和私有消息。消息分为两类:公有消息和私有消息。1.3 面向对象的基本概念面向对象的基本概念164、类的确定与划分:、类的确定与划分: 类的确定与划分没有统一标准和固定方法,主类的确定与划分没有统一标准和固定方法,主要考经验和对实际问题的理解。要考经验和对实际问题的理解。 基本原则是对事务进行分类。把具有相同属性基本原则是对事务进行分类。把具有相同属性和相似行为的对象归为一类。和相似行为的对象归为一类。 同一事务在不同情况下地位可能不同(有时是同一事务在不同情况下地位可能不同(有时是类,有时只是某个类的成员属性或函数

13、)。类,有时只是某个类的成员属性或函数)。 一个类中也可以包含其它类的对象。一个类中也可以包含其它类的对象。1.3 面向对象的基本概念面向对象的基本概念175、继承:、继承: 继承是子类直接继承父类的数据和操作的机制。子类继承是子类直接继承父类的数据和操作的机制。子类可以沿用父类的属性和操作,也可以修改和增加新的数可以沿用父类的属性和操作,也可以修改和增加新的数据和操作。据和操作。 被继承的类称为被继承的类称为基类、父类基类、父类或超类或超类,继承类称为,继承类称为子类或派子类或派生类生类。 狼狗哺乳动物狗1.3 面向对象的基本概念面向对象的基本概念18继承的作用:继承的作用:一、避免公用代码

14、的重复开发,减少代码和数据冗余一、避免公用代码的重复开发,减少代码和数据冗余二、通过增强一致性来减少模块间的接口和界面二、通过增强一致性来减少模块间的接口和界面 继承机制允许派生类继承基类的数据和操作(即数据继承机制允许派生类继承基类的数据和操作(即数据成员和成员函数),也就是说,允许派生类使用基类的成员和成员函数),也就是说,允许派生类使用基类的数据和操作。同时派生类还可以增加新的操作和数据。数据和操作。同时派生类还可以增加新的操作和数据。 继承具有传递性。继承具有传递性。1.3 面向对象的基本概念面向对象的基本概念19继承的分类:继承的分类: 继承有两种分类方法:一种是从继承源上分,继承有

15、两种分类方法:一种是从继承源上分,另一种是从继承内容上分。另一种是从继承内容上分。 从继承源上分,继承分为单继承和多继承。从继承源上分,继承分为单继承和多继承。 单继承:子类只有一个父类。单继承:子类只有一个父类。 多重继承:子类有两个以上父类。多重继承:子类有两个以上父类。 1.3 面向对象的基本概念面向对象的基本概念20从继承内容上分,可分为:从继承内容上分,可分为:取代继承:取代继承:子类对父类的所有属性和方法均完全继承,子类对父类的所有属性和方法均完全继承, 可取代父类。如:徒弟代替师傅可取代父类。如:徒弟代替师傅包含继承:包含继承:子类包含了父类的所有属性和方法,在其基子类包含了父类

16、的所有属性和方法,在其基 础上增加新的属性或方法。础上增加新的属性或方法。受限继承:受限继承:子类不具有父类的部分属性或方法。如:鸵鸟与鸟子类不具有父类的部分属性或方法。如:鸵鸟与鸟特化继承:特化继承:子类是特殊的父类,需要修改或增加新的属子类是特殊的父类,需要修改或增加新的属 性和方法。如:运动员性和方法。如:运动员1.3 面向对象的基本概念面向对象的基本概念216、消息:、消息: 消息是对象间的交互手段,是一个对象向另一对消息是对象间的交互手段,是一个对象向另一对象发出的请求。即一个对象请求另一对象执行特定象发出的请求。即一个对象请求另一对象执行特定的方法。的方法。消息内容包括:消息内容包

17、括:Destination Object接收者名字接收者名字Operation请求的方法请求的方法Parameters一个或多个参数一个或多个参数1.3 面向对象的基本概念面向对象的基本概念227 7、封装:、封装: 封装是将对象抽象的外部接口与内部具体的实封装是将对象抽象的外部接口与内部具体的实现细节分离的机制。现细节分离的机制。 操作操作1,2,3 的实现的实现状态(属性値)操作操作1操作操作2操作操作3 对象对外只提供其各种操对象对外只提供其各种操作的接口形式,而不公布其作的接口形式,而不公布其内部私有数据和操作实现算内部私有数据和操作实现算法,使对象使用方便,且具法,使对象使用方便,且

18、具有高安全性和可靠性。有高安全性和可靠性。1.3 面向对象的基本概念面向对象的基本概念238 8、多态性:、多态性: 多态性指多态性指不同的对象不同的对象收到收到相同的消息相同的消息时产生时产生多种多种不同的行为方式不同的行为方式。 C+语言支持两种多态性,即语言支持两种多态性,即编译时的多态编译时的多态性性和和运行时的多态性运行时的多态性。编译时的多态性通过通。编译时的多态性通过通过重载来实现,运行时的多态性通过虚函数来过重载来实现,运行时的多态性通过虚函数来实现。实现。1.3 面向对象的基本概念面向对象的基本概念249 9、重载:、重载:重载一般包括重载一般包括函数重载和运算符重载函数重载

19、和运算符重载,指相同的函,指相同的函数名或运算符在不同的参数作用下可以执行不同的行数名或运算符在不同的参数作用下可以执行不同的行为。为。Class Apublic: void Print(int i) 语句段语句段1; void Print(float f) 语句段语句段2; void Print(const char *c) 语句段语句段3; . 1.3 面向对象的基本概念面向对象的基本概念25源文件源文件源文件源文件源文件源文件头文件头文件头文件头文件头文件头文件项目配置文件项目配置文件预编译预编译编译编译连接连接可执行程序可执行程序库函数库函数1.4 C+程序开发过程程序开发过程C+程序

20、的开发过程程序的开发过程预编译程序负责处理预编译指预编译程序负责处理预编译指令,将程序文件转化为纯粹的令,将程序文件转化为纯粹的C+程序文件;程序文件;编译程序将一个个编译程序将一个个C+源程序源程序翻译成对应的二进制目标代码翻译成对应的二进制目标代码文件,编译程序输出的是一个文件,编译程序输出的是一个个后缀名个后缀名“.obj”的文件;的文件;连接程序将连接程序将“.obj”文件和库文件和库文件连接形成一个完整的可执文件连接形成一个完整的可执行程序。行程序。26C+程序的编辑、编译和运行程序的编辑、编译和运行 C源程序文件扩展名为源程序文件扩展名为.c,而,而C+源程序文件扩展源程序文件扩展

21、名为名为.cpp。 在在Windows下,我们常用下,我们常用Visual C+开发环境来开发环境来编辑、编译和运行编辑、编译和运行C+程序。程序。1.4 C+程序开发过程程序开发过程27 C+的程序结构由注释、编译预处理和程序主体的程序结构由注释、编译预处理和程序主体组成。组成。 注释分为:序言注释和注解性注释,前者用于程注释分为:序言注释和注解性注释,前者用于程序开头,说明程序或文件的名称、用途、编写时间及序开头,说明程序或文件的名称、用途、编写时间及输入输出说明等,后者用于程序中难懂的地方。输入输出说明等,后者用于程序中难懂的地方。 每个以符号每个以符号“#”开头的行,称为编译预处理行。如开头的行,称为编译预处理行。如“#include”称为文件包含预处理命令。称为文件包含预处理命令。 每一个每一个C+程序都必须有一个程序都必须有一个main()函数,作为程函数,作为程序的入口。序的入口。C+程序中的名字是大小写程序中的名字是大小写“敏感敏感”的。的。1.4 C+的程序结构的程序结构28/*/* ch1_1.cpp */*#includevoid main() cout”仍保持了仍保持了C C中的中的“右移右移”功能,但用于输入时功能,但用于输入时扩充了其功能,表示将扩充了其功能,表示将标准输入流(键盘)读取的数值传送给标准输入流(键盘)读取的数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论