已阅读5页,还剩25页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章面向对象程序设计基础 随着软件开发规模的扩大 传统的面向过程的软件开发方法给软件的复用 调试 维护带来了很大的困难 为了解决满足软件开发的需求 人们提出了面向对象程序设计 ObjectOrientedProgramming OOP 的思想 如今面向对象的思想已经深入人心 已经应用到程序设计和软件开发 数据库系统 人工智能等很多领域 本章将详细介绍面向对象程序设计的相关概念 3 1面向过程与面向对象 传统的面向过程技术是围绕功能进行 普遍采用过程式或函数式的程序设计方法 面向对象程序设计围绕现实世界的概念来组织模块 采用对象来描述问题空间的实体 用程序代码模拟现实世界中真实或抽象的对象 面向对象程序设计把一个复杂的问题分解成多个能够独立的功能对象 然后把这些对象组合起来去完成复杂问题 每一个对象有可以有许多更小的对象组成 3 1 1面向过程的问题 面向过程编程的主要思想是以事件为中心 分析解决问题需要的步骤 然后按照这些步骤来编写函数 使用的时候依次调用这些函数 来完成所有功能 在面向过程开发过程中主要存在以下问题 软件重用性差 通过面向过程编程技术开发出的程序 主要以函数为模块来实现功能 数据和对数据的操作耦合性太高 想利用已有的程序代码开发新的程序时 只能通过简单的复制 然后作大量的修改 这种复用程序代码的效率非常低 软件可维护性差 软件程序越复杂 里面的函数模块越多 多个函数之间的关系就越复杂 维护起来就越困难 开发出的软件很难满足用户不断增长的需求 当客户提出新的需求时 需要修改原有软件的函数模块 需要进行大量的调试 使其满足用户的需求 并且还不会影响其他程序模块 软件的升级和维护非常困难 3 1 2面向对象的特性 面向对象编程的主要思想是以事物为中心 它把具体的事物抽象成 对象 的概念 围绕对象进行程序的开发 面向对象的程序设计方法有三大特性 封装 继承 多态 下面将对这三个特性做详细介绍 1 封装2 继承3 多态 3 2C 类的基本概念 传统的面向过程技术是围绕功能进行 普遍采用过程式或函数式的程序设计方法 面向对象程序设计围绕现实世界的概念来组织模块 采用对象来描述问题空间的实体 用程序代码模拟现实世界中真实或抽象的对象 面向对象程序设计把一个复杂的问题分解成多个能够独立的功能对象 类 然后把这些对象 类 组合起来去完成复杂问题 每一个对象可以由许多更小的对象组成 3 2 1结构体与类 在C语言 结构体就是一个可以包含其他类型数据的一种自定义数据类型 C语言中的结构体只能自定义数据类型 不允许有函数 而在C 中对结构体进行了扩展 它可以有成员变量 可以有成员函数 可以从别的类继承 也可以被别的类继承 可以有虚函数 3 2 2类与对象 在面向对象的概念中 有两个最基本的概念 类和对象 对象是组成程序的构件 所有的数据分别属于不同的对象 具有相同或相似性质的对象的抽象就是类 简而言之 类是对象的抽象 对象是类的具体化 1 对象2 类 3 2 3类的声明 定义和实现 类是面向对象编程的基础 它是用户自定义的数据类型 在C 中 类像结构体一样也定义了数据类型和数据行为 3 2 4成员变量 在上面 定义了4个成员变量 如下所示 private charEmployeeID 20 charEmployeeName 50 charsex doubletotalsalary 3 2 5成员函数 成员函数是函数的一种 它抽象了一类对象的行为 它的用法和作用与一般函数基本一样 唯一的差别就是它是一个类的成员 可以把访问限制定义为私有 公有或受保护的 一般地将成员函数的访问限制定义为共有 因为它们是一个类对外部程序提供的公共接口 也可将成员函数定义为私有 表示是类内部函数 只能被本类中其他函数成员调用 而不能被类外调用 3 2 6静态成员 在传统的面向过程程序设计时 有时需要在局部范围共享某一个数据 这就需要设立全局变量 而在面向对象的开发中程序由对象构成 C 为开发者提供了静态成员来实现在类范围内数据的共享 本节就是讲述静态成员的基础概述及其应用 C 中 可以用关键字static声明静态成员变量或静态成员函数 1 静态成员变量2 静态成员变量的初始化3 静态成员函数 3 2 7this指针 在面向对象的编程中 可以将类理解为一种数据类型 像int char float等类型一样 不同的是 类是用户自己定义的一种复杂数据类型 用这个数据类型就可以声明一个变量 例如Employeee1 Bookb1 那么这个变量的this就是这个变量的指针 例如变量e1的this就是指向e1的指针 this的类型是Employee 对其引用 this就应该是变量e1 3 3构造函数 构造函数是一种特殊的方法 主要用来在创建对象时初始化对象 本节将对构造函数的概念做详细介绍 3 3 1使用构造函数的原因 前面提到 在类体中不允许对所定义的成员变量进行初始化 那怎么办 C 中提供了一个好的办法 在类中用一个构造函数来初始化需要的成员变量 在C 中 构造函数是一个在构建对象的时候自动调用的特殊的成员函数 使用构造函数的目的就是对对象进行初始化的工作 从而使对象被使用之前可以处于一种合理的状态 3 3 2构造函数的使用 构造函数的一般格式如下图 3 3 3重载构造函数 构造函数可以重载 即可以定义多个参数个数不同的函数 以下面的例子说明构造函数是如何重载的 重载构造构造函数的使用示例 3 3 4析构函数 在构造函数中可以始化对象的某些成员变量 系统为其分配了资源 当这个对象生存周期结束时 就需要回收对象中无用的资源 这就用到了析构函数 析构函数的功能就是回收对象的无用资源 构造函数是被自动调用的 3 4继承 继承是面向对象编程的重要特征 继承的机制使得一个新类可以获得现有类的属性和方法 这就使得在软件的实际开发过程中代码的复用率得到提高 软件开发人员可以根据需求对现有类进行修改 最大限度地重复现有的软件 3 4 1继承的概念 在日常的生活中 关于继承的概念并不陌生 例如子女继承了父母的部分特征 新产品拥有以前产品的优点 也就是某个具体的人或事物从另一个人或事物中派生出的一些属性 同理 在C 语言中 一个类可以从一个类中继承它的属性和方法 从一个现有类派生出另一个新类的机制叫做继承 3 4 2继承的工作机制 在C 语言中 继承机制使一个新类可以拥有来自被继承类的成员变量和成员函数 而这一过程是通过派生完成的 一个类可以派生出另一个类 则派生出新类的类称为基类 被派生的类称为派生类 基类和派生类的关系可以描述为 基类是所有派生类的抽象 而派生类就是基类的具体化 例如定义了两个类A和B 类B是从类A中派生出来的 那么类A就是基类 类B就是派生类 1 单重继承2 多重继承 3 4 3公有继承 当类的继承方式为公有继承时 基类的public和protected成员分别成为派生类的public和protected成员 派生类的其他成员可以直接访问它们 但是派生类外部只能通过派生类的对象访问继承来的public对象 基类的private成员在派生类内部和外部都是不可访问的 公有继承在实际应用中是最常见的一种继承方式 3 4 4私有继承 当类的继承方式为私有继承时 基类的public和protected成员都成为派生类的private成员 派生类的其他成员可以直接访问它们 但是派生类外部无法通过派生类的对象访问继承来的对象 基类的private成员在派生类内部和外部都是不可访问的 3 4 5保护继承 保护继承 当类的继承方式为保护继承时 基类的public和protected成员都成为派生类的protected成员 派生类的其他成员可以直接访问它们 但是派生类外部无法通过派生类的对象访问继承来的对象 基类的private成员在派生类内部和外部都是不可访问的 3 4 6多重继承 单重继承机制可以描述现实世界中大多数客观事物的关系 在面向对象编程中 只从一个基类中派生新类 但是现实世界中也存在从多个基类中派生新类的情况 如图所示 3 5异常处理 任何一个应用程序都需要反复的修改 调试 务求做的尽善尽美 但在程序在运行的过程中不可避免地会出现一些异常情况 这些异常情况会影响程序的正常运行 为了处理这些异常 开发出稳定 可靠的程序 C 中提供了非常强大的异常处理机制 3 5 1异常的概念 本章节将介绍异常的基础知识 异常就是在程序执行过程中出现的错误 这些错误有些是可预见的 有些不可预见 常见的异常有很多 例如错误的函数定义 类定义时遗忘了 后的分号 数组下标溢出 自定义异常等 3 5 2异常处理机制 在C 语言中 使用异常处理机制来发现和处理异常 通常的做法是先抛出异常在 再处理异常 即当程序中出现异常时抛出异常 通知系统发生异常 然后系统捕捉发生的异常 并交给异常处理模块来处理异常 C 语言中的异常处理包括三个关键步骤 抛出异常 捕获异常和处理异常 1 抛出异常2 捕获异常3 处理异常 3 5 3基本的异常的方法 下面通过一个例子说明基本的异常处理的方法 3 5 4多个异常处理方法 在上面的例子中 只有一个异常发生的情况 但在实际程序开发中 往往存在有多种异常的情况 此时可以一次使用多条catch语句处理 关键字try关键字可用来圈定只有一种异常的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026中国黄金集团所属企业中金辐照股份有限公司招聘60人考试参考题库及答案解析
- 2026福建泉州晋江市陈埭民族中学春季英语合同教师笔试备考试题及答案解析
- 2026四川广安市武胜县公证处非在编公证员助理1人考试参考题库及答案解析
- 2026上半年甘肃省妇联直属事业单位招聘5人考试参考题库及答案解析
- 2026北京物资学院招聘39人笔试备考试题及答案解析
- 2026年上海中医药大学附属曙光医院淮南医院公开招聘专业技术人员16名考试参考试题及答案解析
- 2026浙江宁波市象山半边山紫冠投资有限公司酒店管理分公司(宁波象山海景皇冠假日酒店)招聘9人考试参考题库及答案解析
- 2026山东枣庄职业学院外聘教师招引23人考试参考试题及答案解析
- 2026广西柳州市消防救援局第一期政府专职消防员招录91人考试备考题库及答案解析
- 2026年铜陵交投公路运营有限责任公司劳务派遣收费员招聘考试备考试题及答案解析
- 收心归位聚合力 实干奋进创未来总经理在2026年春节复工全体员工大会上的致辞
- 泳池突发安全事故应急预案
- 03K501-1 燃气红外线辐射供暖系统设计选用及施工安装
- 2025-2026学年北京市通州区高三(上)期末语文试卷
- 2026年甘肃省公信科技有限公司面向社会招聘80人(第一批)考试重点题库及答案解析
- 2026年上海市虹口区初三上学期一模化学试卷和参考答案
- 涉密文件销毁设备选型与管理
- 高考英语同义词近义词(共1142组)
- 拆除电气施工方案
- 2024年上海市专科层次自主招生考试职业适应性测试真题
- 数控课程思政说课
评论
0/150
提交评论