




已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第9章 面向对象设计思想和类 人类利用计算机的目的是为了解决实际生活中的问题。计算 机和世界的沟通是通过设计的程序来实现的。怎样用计算 机语言来描述世界是首先要解决的问题。程序设计思想就 是用计算机程序语言来描述世界的。类是面向对象编程的 核心,它可以实现对数据的封装、安全控制以及代码的重 用。通过类的机制可以深入描述抽象的问题,使开发者不 断地提高对问题的认识,以获得更好的解决方案。通过本 章的学习,读者能够认识面向对象程序设计思想,掌握类 的使用方法,能够编写类来解决实际问题。 9.1 程序设计思想 从1946年计算机出现以后,计算机技术的发展已经是日新月 异了,程序设计的方法也经历了不断地发展。最先出现的 是结构化程序设计思想,之后又产生了一种具有哲学思想 的设计思想,这就是面向对象程序思想(Object Oriented Programming,简称OOP)。面向对象程序设计思想是 对结构化程序设计思想的继承和发展,它吸取了结构化程 序设计思想的优点,同时又考虑到现实世界与计算机设计 的关系。 9.1.1 结构化程序设计思想 结构化程序设计的基本思想是:采用自顶向下、逐步求精的 设计方法和单入口单出口的控制结构。通过这样的方法, 一个复杂的问题可以被划分为多个简单问题的组合。首先 将问题细化为若干模块组成的层次结构,然后把每一个模 块的功能进一步地细化,分解成一个个更小的子模块,直 到分解为一个个程序的语句为止。 9.1.2 面向对象程序设计思想 面向对象设计的基本思想是:首先将数据和对数据的操作方 法集中存放在一个整体中,形成一个相互依存不可分割的 整体,这个整体即为对象通过相同类型的对象抽象出其共 性而形成类;然后,类再通过外部接口与外界发生联系, 对象与对象之间用消息进行通信。 面向对象设计思想可以使程序模块间的关系变得简单,因为 只有外部接口进行联系;且程序模块的相对独立性高,数 据的安全也得到很好的保护。面向对象更引入了继承、多 态等高级特性,使软件的可重用性、软件的可维护性都得 到了更大的提高。 9.2 类 在面向过程的设计方法中,程序的基本单位是函数;在面向 对象设计方法中,程序的基本单位是类。类是C+封装的 基本单位,它把数据和函数封装在一起。 9.2.1 类的定义和组成 在面向过程的程序设计方法中,数据和函数是分开的。例如 ,在C语言中,数据是单独定义的常量或者变量,函数则 是操作这些数据的手段。类则把数据和函数集中在了一起 。 1类的定义和基本结构 2数据成员 类数据成员的声明方式和普通变量声明类似。 3成员函数 类中只有数据是不行的,还需要有操作这些数据的手段。 9.2.2 类成员的访问控制 对类成员访问权限的控制,是通过成员的访问控制属性来实现 的。类的访问控制属性有以下3种。 公有类型(public):公有类型成员用关键字public来声明。 公有类型的成员可以被类内部成员访问,也可以被类外部成 员访问。对于外部成员来说,想访问类的成员必须通过类的 public成员来访问。公有类型成员是访问外部类的惟一接口 。 私有类型(private):私有类型成员用关键字private来声明。 私有类型的成员只允许本类内部的成员函数来访问,类的任 何外部访问都是被拒绝的。这就对类中的私有成员进行了有 效的隐藏和保护。 保护类型(protected):保护类型成员用关键字protected来声 明。保护类型和私有类型的性质类似,主要差别在于类继承 过程中对新类的影响不同。这在后续章节将介绍。 9.2.3 类实例和类成员访问 类是对事物抽象的描述,它描述了一类事物的共同属性和行 为。当把抽象的描述变成一个具体的事物时,就称为类的 一个实例(Instance)或者对象(Object)。例如,上面 描述手机的类,它可以描述所有种类的手机,如Motorola A1200是一个具体的手机实体,它就是手机类的一个具体 实例。定义了一个类之后,可以定义多个实例。类的定义 就像是一个产品的模具,通过这个模具可以生产出多个产 品,这些产品就是实例。 在前面介绍的一些基本数据类型或者自定义数据类型,其实 都是对一种数据类型的抽象描述。当声明一个变量时,就 产生了其数据类型的一个实例。类也是一种自定义的数据 类型,所以类的实例也就是该类的一个变量。声明一个实 例和声明一般变量的方式相同,其格式如下。 类名 实例名1, 实例名2, 9.2.4 类的作用域和对象的生存周期 一般来讲,类的作用域作用于特定的成员名。但是,如果类 的成员函数内部出现与类成员相同的标识符的情况,那么 类中这个相同的标识符对这个成员函数的作用域不起作用 。例如,对于类CmobilePhone,如果成员函数 SetPhoneName中出现了与数据成员m_strPhoneType相同 名字的变量,则此时m_strPhoneTyped类作用域对此函数 不起作用。 9.2.5 this指针 在前面讲解类的作用域时讲到,如果成员函数内部声明了一 个局部变量m_strPhoneType,而此局部变量和类的数据 成员CMobilePhone:m_strPhoneType有相同名字的时候 (或者成员函数参数表中出现了与类中数据成员相同名字 的时候),类的数据成员在成员函数中是不可见的。可是 如果此时必须访问CMobilePhone:m_strPhoneType这个 数据成员时,该如何操作呢?这就可以利用类中的this指 针。 this指针是隐含在类的每一个成员函数中的特殊指针,用于 指向正在被成员函数操作的对象。 9.2.6 静态成员 类是一种类型而非真实的数据对象。当需要让类的所有实例 共享数据时,就需要用到静态成员。类的静态数据成员和 静态成员函数统称为类的静态成员。C+就是通过静态成 员来实现类的属性和行为的。 1静态数据成员 2静态成员函数 9.2.7 常成员 利用const可以修饰类的成员。当用其修饰数据成员时,该数 据成员为常数据成员。当修饰类的函数时,该数据为常成 员函数。 1常数据成员 和一般的数据类型类似,类的数据成员可以是常量或者常引 用。声明常数据成员通过const关键字来完成。声明格式与 一般常数据类型类似,其格式如下。 const 数据类型 常数据成员名; 2常成员函数 用const关键字定义的函数为常成员函数,其定义格式如下。 数据类型 函数名(参数表) const; 9.3 构造函数和析构函数 C+中,类的构造函数和析构函数是两种特殊的函数,属于 类的基本机制。构造函数负责创建类对象,初始化类成员 ;而析构函数负责撤销和清理类实例。 9.3.1 构造函数 类是一种复杂的数据类型。通过一个类来声明实例,是一个 从一般到特殊的过程。对于不同的实例之间,区别主要有 两方面:一是它们的实例名不同;二是数据成员的值不同 。在声明一个实例的时候,需要对其数据成员进行赋值, 这个过程称为实例(对象)的初始化。实例初始化的工作 是由构造函数来完成的。 1构造函数的基本概念 2构造函数的基本使用 3带参数的构造函数 9.3.2 拷贝构造函数 在普通变量的赋值中,可以利用另一个同类型的变量进行赋 值。实例的初始化也可以通过其他实例进行初始化,即用 一个实例去构造另一个实例。在构造的时候,将已存在的 实例中的数据成员值传递给新的实例,将其初始化为与已 存在的实例具有相同数据的实例。 用一个实例构造另一个实例的方法有两种。一种是先建立实 例,然后将已存在的实例值一一赋给新实例,但是这样做 非常烦琐;另一种就是利用类的拷贝构造函数实现。 类的拷贝构造函数是一种特殊的构造函数,具有一般的构造 函数的所有特性。它的作用是将一个已经存在的实例去初 始化另一个新的同类实例。拷贝构造函数的原型如下。 类名(类名 9.5.3 友元类 类也可以声明为另一个类的友元,这样的类叫做友元类。若 类A为类B的友元类,则类A中的所有成员函数都是类B的 友元函数,类A中的所有成员函数都可以访问类B的私有 成员和保护成员。声明友元类的一般格式如下。 class B friend class A;/说明A为B的友元类 ; 9.6 本章实例 【实例】定义学生类,实现员工信息的存储和输出。要求从 键盘输入3个员工的信息,并输出。 分析:本例要求利用类来定义学生信息,前面已经讲过利用 结构体来实现类似的功能。与结构体相比,用类来实现此 功能的最大优点在于可以使学生的信息进行隐藏,即把学 生信息封装到一个类中,通过公开的成员函数接口来操作 数据。 9.7 小结 本章主要讲述了面向对象设计思想、类以及类的组合问题。类 是面向对象程序设计的基础和核心,是本章的重点内容。类 是C+封装的基本
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安全文明施工培训文库课件
- 安全文明培训记录课件
- 农业温室建设项目2025:技术创新与产业发展分析报告
- 猫咪除虫知识培训课件
- 猫咪谢描画课件
- 安全教育线上公益培训课件
- 猎头顾问培训课件
- 农业无人机租赁市场2025年行业竞争态势与市场格局分析
- 电子监控工程安装方案(3篇)
- 安全教育微培训课件
- 2025年公证员助理招聘考试题库及模拟题答案
- 婴幼儿发展引导员岗前考核试卷及答案
- 2025湖北省监督数据分析应用中心专项招聘22人考试参考试题及答案解析
- 汽车维修工国家职业资格二级技能试题(附答案)
- 文创市集限定摊位协议
- 2025版旅游景区导游及服务人员派遣合同模板
- 2025年中国癌症筛查及早诊早治指南(试行)
- 人教鄂教版(2024)科学一年级上册每课教学反思
- 川教版(三起)(2024)三年级上册英语全册教案
- 名誉顾问聘任管理办法
- 五子棋教学课件
评论
0/150
提交评论