第8章类和对象的特性_第1页
第8章类和对象的特性_第2页
第8章类和对象的特性_第3页
第8章类和对象的特性_第4页
第8章类和对象的特性_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

1、第第8章章 类和对象的特性类和对象的特性 面向对象程序设计方法概述面向对象程序设计方法概述类的声明和对象的定义类的声明和对象的定义类的成员函数类的成员函数对象成员的引用对象成员的引用类和对象的简单应用举例类和对象的简单应用举例类的封装性和信息隐蔽类的封装性和信息隐蔽数学科学学院:汪小平数学科学学院:汪小平2/35一、面向对象程序设计方法概述一、面向对象程序设计方法概述面向过程的设计方法面向过程的设计方法l 重点重点: 如何实现细节过程,将数据与函数分开。如何实现细节过程,将数据与函数分开。l 形式:形式: 主模块主模块+若干个子模块(若干个子模块(main()+子函数)。子函数)。l 特点:特

2、点: 自顶向下,逐步求精自顶向下,逐步求精功能分解。功能分解。l 缺点:缺点: 效率低,程序的可重用性差。效率低,程序的可重用性差。1、面向过程与面向对象简介、面向过程与面向对象简介3/35面向对象的方法面向对象的方法l 目的:目的: 实现软件设计的产业化。实现软件设计的产业化。l 观点:观点: 自然界是由实体(对象)所组成。自然界是由实体(对象)所组成。l 程序设计方法:程序设计方法: 使用面向对象的观点来描述模仿并处理现实问题。使用面向对象的观点来描述模仿并处理现实问题。l 要求:要求: 高度概括、分类、和抽象。高度概括、分类、和抽象。一、面向对象程序设计方法概述一、面向对象程序设计方法概

3、述4/352、面向对象程序设计中的几个概念、面向对象程序设计中的几个概念一、面向对象程序设计方法概述一、面向对象程序设计方法概述(1)对象与类:对象与类: 对象对象(Object)是客观事物或概念的抽象表述,即对是客观事物或概念的抽象表述,即对客观存在的事物的描述统称为对象。客观存在的事物的描述统称为对象。 对象可以是事、物或抽象概念,是将一组数据和使对象可以是事、物或抽象概念,是将一组数据和使用该数据的一组基本操作或过程封装在一起的实体。用该数据的一组基本操作或过程封装在一起的实体。属性属性 (attribute) 对象本身的性质。对象本身的性质。操作操作(operation) 给对象定义一

4、组运算。给对象定义一组运算。对象将它自身的属性及运算对象将它自身的属性及运算“包装起来包装起来”,称为,称为“封装封装”(encapsulation). 对象的对象的最基本的特征是封装性和继承性最基本的特征是封装性和继承性。5/35一、面向对象程序设计方法概述一、面向对象程序设计方法概述 类又称类又称对象类对象类(Object Class),是一组具有相同),是一组具有相同属性和相同操作的对象的集合。属性和相同操作的对象的集合。 在一个类中,在一个类中,每个对象都是类的实例每个对象都是类的实例(instance) ,它们都可以使用类中提供的函数。它们都可以使用类中提供的函数。 类具有属性类具有

5、属性,用数据结构来描述类的属性。,用数据结构来描述类的属性。 类具有操作类具有操作,它是对象的行为的抽象,操作实现的,它是对象的行为的抽象,操作实现的过程称为方法(过程称为方法(method) ,方法有方法名、方法体和,方法有方法名、方法体和参数。参数。6/35一、面向对象程序设计方法概述一、面向对象程序设计方法概述(2)抽象:抽象: 抽象是对具体对象(问题)进行概括,抽出这一类抽象是对具体对象(问题)进行概括,抽出这一类对象的公共性质并加以描述的过程。对象的公共性质并加以描述的过程。 先注意问题的本质及描述,其次是实现过程或细节。先注意问题的本质及描述,其次是实现过程或细节。 数据抽象:描述

6、某类对象的属性或状态(对象相互数据抽象:描述某类对象的属性或状态(对象相互区别的物理量)。区别的物理量)。 代码抽象:描述某类对象的共有的行为特征或具有代码抽象:描述某类对象的共有的行为特征或具有的功能。的功能。 抽象的实现:通过类的声明。抽象的实现:通过类的声明。7/35一、面向对象程序设计方法概述一、面向对象程序设计方法概述l 数据抽象:数据抽象: int Hour, int Minute, int Secondl 代码抽象:代码抽象: SetTime(), ShowTime()抽象实例抽象实例钟表:钟表:8/35一、面向对象程序设计方法概述一、面向对象程序设计方法概述l 数据抽象:数据抽

7、象: char *name,char *gender,int age,int idl 代码抽象:代码抽象:p 生物属性角度:生物属性角度: GetCloth(), Eat(), Step(),p 社会属性角度:社会属性角度: Work(), Promote() ,抽象实例抽象实例人:人:9/35一、面向对象程序设计方法概述一、面向对象程序设计方法概述(3) 继承与重用:继承与重用: 继承是使用现存的定义作为基础,建立新定义的技继承是使用现存的定义作为基础,建立新定义的技术。是父类和子类之间共享数据结构和方法的机制,术。是父类和子类之间共享数据结构和方法的机制,这是类之间的一种关系。这是类之间的

8、一种关系。 继承性分:单重继承和多重继承。继承性分:单重继承和多重继承。 单重继承单重继承:一个子类只有一个父类。即子类只继承:一个子类只有一个父类。即子类只继承一个父类的数据结构和方法。一个父类的数据结构和方法。 多重继承多重继承:一个子类可有多个父类。继承多个父类:一个子类可有多个父类。继承多个父类的数据结构和方法。的数据结构和方法。基类基类子类子类A A子类子类B B现存类定义现存类定义父类父类( (基类基类) )新类定义新类定义子类子类( (派生类派生类) )继继 承承10/35一、面向对象程序设计方法概述一、面向对象程序设计方法概述(4)多态性和动态绑定:多态性和动态绑定: 多态性多

9、态性(Polymorphism)是指相同的操作或函数、过程作用于是指相同的操作或函数、过程作用于不同的对象上并获得不同的结果。不同的对象上并获得不同的结果。 即相同的操作的消息发送给不同的对象时,每个对象将根据即相同的操作的消息发送给不同的对象时,每个对象将根据自己所属类中定义的操作去执行,产生不同的结果。自己所属类中定义的操作去执行,产生不同的结果。 例如:例如:“绘图绘图”操作作用在操作作用在“椭圆椭圆” 和和“矩形矩形” 上,画出上,画出不同的图形。不同的图形。 使用虚函数可实现动态联编,不同联编可以选择不同的实现,使用虚函数可实现动态联编,不同联编可以选择不同的实现,这便是多态性。继承

10、是动态联编的基础,虚函数是动态联编的这便是多态性。继承是动态联编的基础,虚函数是动态联编的关键。关键。11/353、面向对象技术的特点、面向对象技术的特点一、面向对象程序设计方法概述一、面向对象程序设计方法概述(1) 对软件开发过程所有阶段进行综合考虑。使问题对软件开发过程所有阶段进行综合考虑。使问题空间与解空间具有一致性,降低复杂性。空间与解空间具有一致性,降低复杂性。(2) 软件生存周期各阶段所使用的方法、技术具有高软件生存周期各阶段所使用的方法、技术具有高度的连续性,用符合人类认识世界的思维方式来分析、度的连续性,用符合人类认识世界的思维方式来分析、解决问题。解决问题。实体实体1实体实体

11、2实体实体n对象对象1对象对象n对象对象212/35一、面向对象程序设计方法概述一、面向对象程序设计方法概述(3) 将将OOA、OOD、OOP等有机地集成在一起,有利等有机地集成在一起,有利于系统的稳定性于系统的稳定性. 面向对象分析面向对象分析(Object-Oriented Analysis,OOA) 面向对象设计面向对象设计(Object-Oriented Design,OOD) 面向对象编程面向对象编程(Object-Oriented Program,OOP) 面向对象测试面向对象测试(Object-Oriented Test,OOT) 面向对象维护面向对象维护(Object_Orie

12、nted Soft Maintenance) 以对象为中心构造各种系统以对象为中心构造各种系统,而不是以功能为中心而不是以功能为中心,能很好地适应需求变化。能很好地适应需求变化。(4) 具有良好的可重用性具有良好的可重用性 由于对象所具有的封装性和信息隐蔽,具有很强的由于对象所具有的封装性和信息隐蔽,具有很强的独立性。独立性。13/35二、类的声明和对象的定义二、类的声明和对象的定义类是一种用户自定义类型,格式如下:类是一种用户自定义类型,格式如下: class 类名称类名称 public: 公有成员(外部接口)公有成员(外部接口) private: 私有成员私有成员 protected: 保

13、护型成员保护型成员;1、类的声明、类的声明公有类型成员公有类型成员:在关键字在关键字public后面声明,它们是类与后面声明,它们是类与外部的接口,任何外部函数都外部的接口,任何外部函数都可以访问公有类型数据和函数。可以访问公有类型数据和函数。私有类型成员私有类型成员:在关键字在关键字private后面声明,只允许本类后面声明,只允许本类中的函数访问,而类外部的任中的函数访问,而类外部的任何函数都不能访问。何函数都不能访问。保护类型成员保护类型成员:与与private类类似,其差别表现在继承与派似,其差别表现在继承与派生时对派生类的影响不同。生时对派生类的影响不同。14/35二、类的声明和对象

14、的定义二、类的声明和对象的定义例:时钟类例:时钟类class Clock public: void SetTime(int NewH, int NewM, int NewS); void ShowTime(); private: int Hour,Minute,Second;15/35二、类的声明和对象的定义二、类的声明和对象的定义void Clock : SetTime(int NewH, int NewM, int NewS) Hour=NewH; Minute=NewM; Second=NewS;void Clock : ShowTime() coutHour:Minute:Second

15、;16/35二、类的声明和对象的定义二、类的声明和对象的定义另一种形式:另一种形式:class Clock public: void SetTime(int NewH, int NewM, int NewS); Hour=NewH; Minute=NewM; Second=NewS; void ShowTime(); coutHour:Minute:Second; private: int Hour,Minute,Second;17/35二、类的声明和对象的定义二、类的声明和对象的定义一些说明一些说明:(1) 关于成员函数访问权限关于成员函数访问权限l 类的成员函数类的成员函数(简称类函数简称

16、类函数)是函数的一种,它的是函数的一种,它的用法和作用成普通函数基本上是一样的,它也有返用法和作用成普通函数基本上是一样的,它也有返回值和函数类型。区别为它可以被指定为回值和函数类型。区别为它可以被指定为private、public或或protected。这取决于调用它的权限以及它。这取决于调用它的权限以及它的作用域。的作用域。l 成员函数可以访问本类中任何成员成员函数可以访问本类中任何成员(包括私有的和包括私有的和公用的公用的),可以引用在本作用域中有效的数据。,可以引用在本作用域中有效的数据。18/35二、类的声明和对象的定义二、类的声明和对象的定义l 一般的做法是将需要被外界调用的成员函

17、数指定一般的做法是将需要被外界调用的成员函数指定为为public,它们是类的对外接口。当函数的作用是,它们是类的对外接口。当函数的作用是支持其它函数的操作,就应该将它们指定为支持其它函数的操作,就应该将它们指定为private,它们是类中其它成员的工具函数它们是类中其它成员的工具函数(utility function),类外用户不能调用这些私有的工具函数。类外用户不能调用这些私有的工具函数。(2) 在类中定义成员函数与在类中定义成员函数与inline函数函数l 如果在类体中定义的成员函数中不包括循环等控如果在类体中定义的成员函数中不包括循环等控制结构,制结构,C+系统会自动将它们作为内置系统会

18、自动将它们作为内置(inline )函函数来处理。数来处理。 19/35二、类的声明和对象的定义二、类的声明和对象的定义l 也可以通过添加也可以通过添加inline关键字自定义内置函数关键字自定义内置函数class Clock public: inline void SetTime(int NewH, int NewM, int NewS); void ShowTime(); private: int Hour,Minute,Second;inline void Clock : SetTime(int NewH, int NewM, int NewS) .void Clock : ShowTi

19、me() coutHour:Minute:ShowTime();(*p).ShowTime();(3)通过对象的引用变量来访问对象中的成员通过对象的引用变量来访问对象中的成员 Clock clock1,clock2;Clock &p=clock1;p.ShowTime();25/35四、类和对象的使用举例四、类和对象的使用举例例例1 Clock类的使用类的使用(单文件单文件)。文件:文件:2-1.cpp#include using namespace std;class Clock public: /公有接口公有接口 void SetTime(int NewH,int NewM,int NewS); void ShowTime(); private: /私有成员私有成员 int Hour,Minute,Second;26/35四、类和对象的使用举例四、类和对象的使用举例void Clock:SetTime(int NewH,int NewM,int NewS) Hour=Ne

温馨提示

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

评论

0/150

提交评论