《面向对象程序设计概述.ppt》由会员分享,可在线阅读,更多相关《面向对象程序设计概述.ppt(45页珍藏版)》请在优知文库上搜索。
1、C+面向对象程序设计面向对象程序设计1第第1章章 面向对象程序设计概述面向对象程序设计概述23本章主要内容本章主要内容 1.1 面向对象程序设计面向对象程序设计 1.2 为什么要使用面向对象程序设计为什么要使用面向对象程序设计 1.3 面向对象程序设计的语言面向对象程序设计的语言本章重点本章重点面向对象程序设计的基本概念、特征面向对象程序设计的基本概念、特征本章难点本章难点继承与封装的关系继承与封装的关系41.1 面向对象程序设计面向对象程序设计1.1.1 什么是面向对象程序设计什么是面向对象程序设计 范型:范型:设计程序的规范、模型与风格,是一类程序设计程序的规范、模型与风格,是一类程序设计
2、语言的基础。设计语言的基础。分类:分类:面向过程程序设计范型面向过程程序设计范型(C、PASCAL、Ada)函数式程序设计范型(函数式程序设计范型(LISP)逻辑式程序设计范型(逻辑式程序设计范型(ProLog) 新的程序设计范型新的程序设计范型面向对象程序设计是一种新型的程序设计范型。面向对象程序设计是一种新型的程序设计范型。这种范型的主要特征是这种范型的主要特征是: 程序程序 = 对象对象 + 消息消息 面向对象程序的特点:面向对象程序的特点: 1)程序由类的定义和类的使用两部分组成,在)程序由类的定义和类的使用两部分组成,在主程序中定义各对象之间传递信息的规律主程序中定义各对象之间传递信
3、息的规律 2)程序中的一切操作都是通过向对象发送信息)程序中的一切操作都是通过向对象发送信息来实现的,对象接到消息后,完成相应的操作来实现的,对象接到消息后,完成相应的操作5 1. 对象对象(object)实体对象实体对象 一台计算机一台计算机抽象对象抽象对象 一项计划一项计划什么是对象?什么是对象? 1)用来描述客观事物的一个实体,它是构成系)用来描述客观事物的一个实体,它是构成系 统的一个基本单元统的一个基本单元 2)一个对象由一组属性和服务组成)一个对象由一组属性和服务组成1.1.2 面向对象程序设计的基本概念面向对象程序设计的基本概念6对象构成要素对象构成要素: (1 1)对象标识符)
4、对象标识符( (对象名对象名) ) (2 2)属性)属性 (3 3)行为)行为属性属性: : 用来描述对象静态特征的一个数据项。用来描述对象静态特征的一个数据项。行为行为: : 用来描述对象动态特征的一个操作。用来描述对象动态特征的一个操作。标标识符:识符:对象的名称,用来区别于其他对象。对象的名称,用来区别于其他对象。78例题例题 1:考虑对象:考虑对象 “学生学生”,具体描述为:,具体描述为:1)三者为一体;)三者为一体;2)三者有区别)三者有区别对象名对象名静态属性静态属性动态特征动态特征学号、姓名、专业、性别、学号、姓名、专业、性别、年龄、身份证号、电话等等年龄、身份证号、电话等等获取
5、和修改学号、姓名、获取和修改学号、姓名、专业、性别、年龄等等专业、性别、年龄等等学生学生例题例题 2:对象:对象 “课程课程” 的有关抽象描述。的有关抽象描述。注意点注意点: 1. 属性是对对象的静态描述属性是对对象的静态描述. 2. 行为是对对象的动态描述行为是对对象的动态描述. 外部是通过调用行为(操作或方法)与对象外部是通过调用行为(操作或方法)与对象取得联系的。取得联系的。对象名对象名属性属性行为行为课程课程课程名、编号、学时数、选课要求、课程名、编号、学时数、选课要求、任课教师等任课教师等获取并修改课程名、编号、学时数、选获取并修改课程名、编号、学时数、选课要求、任课教师等课要求、任
6、课教师等910对象的操作可分为两类对象的操作可分为两类:一类是自身所承受的操一类是自身所承受的操作作,一类是施加于其他对象的操作。一类是施加于其他对象的操作。面向对象程序设计中对象的特点:面向对象程序设计中对象的特点:2. 类(类( class)11具有相同具有相同数据数据和相同和相同操作操作的的一组对象的集合一组对象的集合类与对象的关系类与对象的关系 类类 对象对象 抽象定义抽象定义 实例实例例:例:模具模具 由模具压出的工件由模具压出的工件学生学生 张张 三三程序设计语言程序设计语言 C+12类的分类类的分类 抽象类、抽象类、基类基类( (父类父类) )、派生类派生类( (子类子类) )等
7、等基基 类类 运用抽象原则,舍弃对象的特殊性,提取对象的运用抽象原则,舍弃对象的特殊性,提取对象的共同性共同性,得到的一个对象集的类,得到的一个对象集的类派生类派生类 在基类的基础上在基类的基础上,再考虑在抽象过程中被舍弃的对再考虑在抽象过程中被舍弃的对象的象的特殊性特殊性,而产生的新类,而产生的新类例:例:若考虑类若考虑类“学生学生”,则类,则类“大学生大学生”和和“中学中学生生”就是它的派生类。类就是它的派生类。类 “学生学生”是它们的基类。是它们的基类。13基类与基类与派生类派生类的关系的关系 派生类具有基类的全部特征。派生类具有基类的全部特征。 派生类有自己的特征派生类有自己的特征,
8、不完全等于不完全等于 基类。基类。 它们有继承关系,派生类是基类的它们有继承关系,派生类是基类的 子集。子集。分类的分类的 目的和目的和意义意义 对现实世界的实体进行分类对现实世界的实体进行分类 直观地、有层次地表达现实世界直观地、有层次地表达现实世界例如,例如,基类基类“学生学生”和和派生类派生类“大学生大学生”的关系的关系14 考虑运输工具这个实体,它包含了车辆,车辆考虑运输工具这个实体,它包含了车辆,车辆又包含机动车和非机动车,机动车又包含轿车和又包含机动车和非机动车,机动车又包含轿车和卡车等卡车等 如果建一基类如果建一基类“机动车机动车”,则,则“轿车轿车”和和“卡卡车车”就是就是“机
9、动车机动车”的派生类,而的派生类,而“车辆车辆”可以可以是基类是基类“机动车机动车”的基类的基类 即:即:基类可以有基类,派生类可以有派生类。基类可以有基类,派生类可以有派生类。例题例题3:15车辆类层次图车辆类层次图车车辆辆客车客车卡车卡车轿车轿车面包车面包车机机动动车车工程车工程车货货 车车大客车大客车非机动车非机动车16类的表示类的表示类名类名属性属性行为行为PersonID, Name, Add,.getID, getName,chID, chName,.例题例题4:类:类“课程课程”的表示的表示CourseCID, CName, Credit,Term, NotegetID, get
10、Name,getCredit,getNotechID, chName,chCredit,chNote17类名、属性、行为的命名注意点类名、属性、行为的命名注意点 标识符(即名字)要达义。标识符(即名字)要达义。 要简明,短小,符合人的思维习惯。要简明,短小,符合人的思维习惯。 类名宜用名词或动名词。类名宜用名词或动名词。 属性名用名词或动名词。属性名用名词或动名词。 行为名用动词或动名词。行为名用动词或动名词。183. 消息消息(message) 消息是向对象发出的服务请求消息是向对象发出的服务请求消息的组成消息的组成1)对象标志)对象标志2)行为标志)行为标志 3)输入信息)输入信息4)输出
11、信息)输出信息例题例题5:“请你把那本书拿给我!请你把那本书拿给我!” 1)对象标志)对象标志: 你你 2)行为标志)行为标志: 把那本书拿给我把那本书拿给我 3)输入信息)输入信息: 那本书那本书 4)输出信息)输出信息: 书给我书给我19消息的作用消息的作用1)提供类之间的动态联系)提供类之间的动态联系2)对象通过消息对外提供服务)对象通过消息对外提供服务消息的执行流程消息的执行流程接受消息接受消息创创建建对对象象发发送送消消息息分分析析处处理理消消息息返返回回相相应应信信息息结结束束20对象对象A: 打印机打印机对象对象B: 操作系统操作系统在例题中在例题中: 对象标志对象标志: 打印机
12、打印机 行为标志行为标志: 打印打印输入信息输入信息: 要打印的文件要打印的文件 输出信息输出信息: 打印出资料并结束打印出资料并结束分析两个对象分析两个对象 “打印机打印机” 和和 “操作系统操作系统” 之间的消息通信之间的消息通信.例题例题6:接接受受消消息息发送打印消息发送打印消息执执行行返返回回信信息息结结束束接受信息接受信息4.4.方法方法 方法(行为或服务)就是对象所能执行的方法(行为或服务)就是对象所能执行的操作。方法包括界面和方法体两部分。操作。方法包括界面和方法体两部分。211.1.3 面向对象程序设计的基本特点面向对象程序设计的基本特点抽象封装继承多态221. 抽象抽象抽象
13、是对具体对象(问题)进行概括,抽出这一类对象的公共性质并加以描述的过程。先注意问题的本质及描述,其次是实现过程或细节。数据抽象:描述某类对象的属性或状态(对象相互区别的物理量)。代码抽象:描述某类对象的共有的行为特征或具有的功能。抽象通过类的声明来实现。23抽象实例人 数据抽象:char*name;char*gender;intage;intid 代码抽象:eat();getCloth();live();step()24252. 封装封装(encapsulation) 属属性性行行为为价格表价格表,物品物品, 帐单,电话帐单,电话, 等等等等提供物品提供物品, 帐单等等帐单等等 仓库仓库例例1
14、: 考虑一个仓库,外部只能通过管理员获考虑一个仓库,外部只能通过管理员获 取物品。取物品。抽象抽象26例例2 考虑类考虑类“帐户帐户”,其表示如下:,其表示如下:帐户帐户帐户号,户主,身份证号,地址,电帐户号,户主,身份证号,地址,电话,密码,存款。话,密码,存款。修改显示帐户号,户主,身份证号,修改显示帐户号,户主,身份证号,地址,电话,密码,存款。地址,电话,密码,存款。问题的提出问题的提出从现实世界的实例表明,类的一些从现实世界的实例表明,类的一些信息需要保护,外界不能随意提取信息需要保护,外界不能随意提取修改,封装就提供这一需求。修改,封装就提供这一需求。27封装封装把对象的属性和行为
15、结合成一个把对象的属性和行为结合成一个独立独立的单元,并尽可能的单元,并尽可能隐蔽隐蔽对象对象的内部细节。的内部细节。封装的特点封装的特点1. 一个清楚的边界。一个清楚的边界。 所有对象的成分都在这个边界所有对象的成分都在这个边界内。内。2. 一个或多个接口。一个或多个接口。 外部通过这些接口访问对象的外部通过这些接口访问对象的内部成员。内部成员。28需要更多的输入输出函数。需要更多的输入输出函数。 封装的优点封装的优点1. 数据独立数据独立 ( (如每件事物都对应于如每件事物都对应于一对象一对象) )2.2.具有隐藏性和安全性具有隐藏性和安全性 ( (如银行的如银行的帐户帐户) )3.3.易
16、于维护易于维护( (由于数据独立由于数据独立, ,易于发易于发现问题现问题) ) 封装的缺点封装的缺点293. 继承继承(inheritance) 特殊类具有普通类的所有特性和特殊类具有普通类的所有特性和行为行为 是类之间的一种关系是类之间的一种关系 是面向对象方法的要点之一是面向对象方法的要点之一什么是继承什么是继承 继承的特点继承的特点 设设 A 为基类,为基类, B 为派生类。为派生类。1. 共享性共享性: 派生类具有基类所有特征,派生类具有基类所有特征, 即:即:A B2. 区别性区别性: 派生类不等于基类,即派生类不等于基类,即 AB 3. 层次性层次性: 表示了类之间的关系表示了类之间的关系30例例3:车辆的继承关系:车辆的继承关系车辆车辆非机动车非机动车客车客车 卡车卡车 轿车轿车机动车例例4:人类按职业划分的一种继承关系:人类按职业划分的一种继承关系人人学生学生工人工人教师教师农民农民中学生中学生研究生研究生讲师讲师教授教授大学生大学生31继承的优点继承的优点: :1. 1. 减少源代码,减少源代码, 即代码可重用。即代码可重用。2. 2. 代码的相互独立性。代码的相互