第八章类与对象修改

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

int a[10], b[20]; 结构:反映相关属性, 结构:反映相关属性,可以描述较复杂的事 物的属性(不同类型) 物的属性(不同类型) Struct student{ int id; char name[20]; float score[5]; };

“时钟”类的定义 时钟” 时钟
class Clock{ private: int hour, minute, second; public: void Settime(int h, int m, int s){ hour=h;minute=m;second=s; } void Gettime(int &h, int &m, int &s){ h=hour; m=minute; s=second; } };
2. 面向对象设计 面向对象设计(object oriented design,OOD)
根据面向对象分析形成的需求模型 对每一部分分别进行具体的设计 先是进行类的设计包含多个层次(利用继承与派生) 以这些类为基础提出程序设计的思路和方法包括对算法的设计 在设计阶段,并不牵涉某一种具体的计算机语言,而是 用一种更通用的描述工具(如伪代码或流程图)来描述。
4. 继承与重用
面向对象程序设计中的继承机制 建立了A类 又想建立B 类 B与A内容基本相同 只是A的基础上增加一些属性和行为
只需在类A的基础上增加一些新内容即可 只需在类 的基础上增加一些新内容即可 “白马”继承了 “马”的基本特 征,又增加了新 “白马”是从“马”派生出来的,称为子类或派生类 的特征(颜色) “马”是父类,或称为基类 C++的继承机制,采用继承的方法可很方便地利用一个 的继承机制, 的继承机制 已有的类建立一个新的类。 已有的类建立一个新的类。 这就是 “软件重用”(software reusability) 的思想。 软件重用”
私有成员, 私有成员,只有类内部 class Clock{ 定义的函数可以访问。 定义的函数可以访问。 private: int hour, minute, second; 公有成员,类内部、 公有成员,类内部、外部定 public: 义的函数都可以调用。 义的函数都可以调用。 void Settime(int h, int m, int s){ hour=h;minute=m;second=s; } Main()相对于 相对于Clock类是 外部” 类是“ 相对于 void Gettime(int &h, int &m, int &s){类是“外部” 的,不能直接访问Clock内的私有 不能直接访问 内的私有 h=hour; m=minute; s=second; 成员,但可以通过调用Clock定义 成员,但可以通过调用 定义 } 的公有函数,实现对Clock私有成 的公有函数,实现对 私有成 void main(){ }; 员的设置与数据获取。 员的设置与数据获取。 Clock ck; int h,m,s; ck.Settime(8,15,23); ck.Gettime(h,m,s); cout<<"Time "<<h<<":"<<m<<":"<<s<<endl; }
1.对程序进行严格的测试 对程序进行严格的测试 2.发现程序中的错误并改正它 发现程序中的错误并改正它
面向对象测试是用面 向对象的方法进行测 试,以类作为测试的 基本单元。 基本单元。
5. 面向对象维护(object oriented soft maintenance,OOSM)
因为对象的封装性, 因为对象的封装性,修改一个对象对其他对象影响很 利用面向对象的方法维护程序, 小。利用面向对象的方法维护程序,大大提高了软件 维护的效率。 维护的效率。
调用对象中的函数就是向该对象传送 一个消息(message),要求该对象实现 一个消息 , 某一行为(功能 功能)。 某一行为 功能 。
2. 封装与信息隐蔽 可以对一个对象进行封装处理, 可以对一个对象进行封装处理,把它的一部分属性和功能对 外界屏蔽,也就是说从外界是看不到的,甚至是不可知的 甚至是不可知的。 外界屏蔽,也就是说从外界是看不到的 甚至是不可知的。 面向对象程序设计方法的一个重要特点 封装性(encapsulation) 封装性 将有关的数据和操作代码 封装在一个对象中形成一 个基本单位各个对象之间 相对独立, 相对独立,互不干扰 将对象中某些部分对外隐 即隐蔽其内部细节, 蔽,即隐蔽其内部细节, 只留少量接口, 只留少量接口,以便与外 界联系, 界联系,接收外界消息
发动机
底盘
车身
轮子 各部分之 间有一定 的联系
组装在一起
几个有关的概念: 几个有关的概念
1. 对象 对象(object) 客观世界中任何一个事物都可以看成一个对象 对象是构成系统的基本单位
对象 两个要素 属性(attribute) 属性(attribute) 对象之间就是通 过发送和接收消 息互相联系的。 息互相联系的。 行为(behavior) 行为 通过传送相应的消息 使某一个对象实现某 一种行为(即操作 即操作) 一种行为 即操作 根据外界给的信息进 行相应的操作
8.1.4 面向对象的软件开发
随着软件规模的迅速增大,软件人员面 临的问题十分复杂。
规范整个软件开发过程 明确软件开发过程中每个阶段的任务 保证前一个阶段工作的正确性的情况下,再进行 下一阶段的工作
面向对象的软件工程包括以下几个部分:
1. 面向对象分析 面向对象分析(object oriented analysis,OOA)
外界获取时钟的 时间, 时间,比如钟表 正面的表盘
从外界对时钟设 置时间, 置时间,比如钟 表背面的设置按 钮
8.2 8.2.1定义类类型 定义类类型
类和对象的定义
类是构造类型:包含数据和与这些数据相关的函数 是构造类型:包含数据和与这些数据相关的函数 数据和与这些数据相关的 类(类型)的定义: 类型)的定义: 类型关键字: 类型关键字 class 成员存取控制关键字: 成员存取控制关键字: private: 私有成员,只有在类内部定义的函数可以 私有成员, 访问 public: 公有成员,类外部的函数可访问 公有成员, protect: 保护成员,只有“类的家族”可以访问 保护成员,只有“类的家族” 类是对象的抽象,而对象是类的具体实例(instance) 类是对象的抽象,而对象是类的具体实例 抽象 具体实例
这种对外界隐蔽的做法称为信息隐蔽 信息隐蔽(imformation hiding) 信息隐蔽 有利于数据安全,防止无关 的人了解和修改数据
3. 抽象 (abstraction)
相同的属 性和行为
类(class)
类是对象的抽象, 类是对象的抽象,而对象则是类的特 或者说是类的具体表现形式。 例,或者说是类的具体表现形式。 抽象的过程 抽象的作用 是将有关事物的共性归纳、集中的过程。 是表示同一类事物的本质。C和C++中的数据 类型就是对一批具体的数的抽象。
3. 面向对象编程 面向对象编程(object oriented programming,OOP)
根据面向对象设计的结果,用一种计算机语言把它写成程 根据面向对象设计的结果,用一种计算机语言把它写成程 显然应当选用面向对象的计算机语言(例如 例如C++) 序,显然应当选用面向对象的计算机语言 例如
4. 面向对象测试(object oriented test,OOT) 在写好程序后交给用户使用前,所做工作
软件工程中的系统分析阶段,系统分析员要作的事: 对用户的需求作出精确的分析和明确的描述 从宏观的角度概括出系统应该做什么 按照面向对象的概念和方法,对任务进行分析 从客观存在的事物和事物之间的关系中,归纳出有关 归纳出有关 的对象(包括对象的属性和行为)以及对象之间的联系 的对象 将具有相同属性和行为的对象用一个类(class)来表示 建立一个能反映真实工作情况的需求模型
8.1 面向对象程序设计方法概述
当程序规模较大时,c就显得力不从 心了。C++就是为了解决编写大程序过 程中的困难而产生的。
8.1 面向对象程序设计方法概述 8.1.1 什么是面向对象的程序设计
面向对象的程序设计的基本思路 和人们日常生活中处理问题的思路是相似的 一个复杂的事物分解为许多部分组成 生产汽车
对问题表述的从简到繁
•属性与动作的集合 属性与动作的集合 问题二: 问题二:对于复杂 问题三: –在一个类型中定义属性,同时定义 在一个类型中定义属性, 在一个类型中定义属性 问题三:对客观世 单个变量: 单个变量 系统的描述, : 系统的描述,将有 反映无关联的属性 问题一: 问题一: 界的描述, 对变 与这些属性相关的操作 界的描述,总是属 大量属性数据及其c; int a, b, 量的操作是另 数据) 性(数据)与性能 相关操作, 相关操作,数据与 外定义的,与 外定义的, 动作)相联系的, (动作)相联系的, 变量的集合 操作之间的对应关 变量定义分离。 变量定义分离。 在计算机内部如何 系也十分复杂反映同类型相关属性 数组: 数组: 表达? 表达?
基于对象和面向对象程序设计是把一个算 法和一组数据结构封装在一个对象中
对象 = 算法 + 数据结构 程序 = (对象+对象+对象+…) + 消息 程序 = 对象s + 消息 消息的作用 就是对对象 的控制
“对象s”表示 多个对象
程序设计的关键是: 设计好每一个对象 确定向这些对象发出的命令 使各对象完成相应操作。
第3 篇 基于对象的程序设计
第8章 类和对象 章 第9章 关于类和对象的进一步讨论 章 第10章 运算符重载 章
第8章 类和对象 章
8.1 8.2 8.3 8.4 8.5 8.6 面向对象程序设计方法概述 类的声明和对象的定义 类的成员函数 对象成员的引用 类的封装性和信息隐蔽 类和对象的简单应用举例
8.1.3 类和对象的作用
C++程序是由许多类所构成的 程序是由许多类所构成的 C++程序设计 支持
面向过 程的程 序设计
基于对 象的程 序设计
面向对 象的程 序设计 在基于对象的程序设 计上利用了继承机制 和多态性,就成为面 向对象的程序设计
基于对象就是基于类。与面向过 程的程序不同,基于对象的程序 是以类和对象为基础的,程序的 操作是围绕对象进行的
●基于对象程序设计所面对的是一个个对象 所有的数据分别属于不同的对象 ●在面向过程的结构化程序设计中
程序=算法+数据结构
算法和数据结构两者是互相独立、分开设计的,面 向过程的程序设计是以算法为主体的 在程序设计中,算法和数据结构是互相紧密联系不可 一个算法对应一组数据结构,而不宜 分的,应当以一个算法对应一组数据结构 一个算法对应一组数据结构 提倡一个算法对应多组数据结构,以及一组数据结构 对应多个算法。
面向对象的程序设计方法设计一个复杂的软件系统 1.确定该系统是由哪些对象组成的 确定该系统是由哪些对象组成的 2.设计这些对象。 设计这些对象。 设计这些对象
对 数 据 函 数 (操作代码) 象
体现了“属性” 体现了“属性”, 如三角形3个边长 如三角形 个边长
是用来对数据进行操作,实现某些功能 是用来对数据进行操作, 如:三角形面积和输出有关数据用函数实现 三角形面积和输出有关数据用函数实现 就是行为 也称为方法 行为,也称为方法(method)。 就是行为 也称为方法 。
启动文本编辑器并打开该文件
多态性是面向对象程序设计的一个重 能增加程序的灵活性。 要特征,能增加程序的灵活性 能增加程序的灵活性
8.1.2 面向对象程序设计的特点
面向过程程序设计是围绕功能进行 一个函数实现一个功能 所有的数据都是公用的
一个函数可以使用任何一组数据, 一个函数可以使用任何一组数据, 而一组数据又能被多个函数所使用
5. 多态性 多百度文库性(polymorphism)
由继承而产生的相关的不同的类,其对象对同一消息会作 其对象对同一消息会作 出不同的响应 Windows环境下 几个相似而不完全相同的对象, 几个相似而不完全相同的对象, 双击 有时要求在向它们发出同一个 消息时,它们的反应各不相同, 消息时,它们的反应各不相同, 一个文本文件 分别执行不同的操作。 分别执行不同的操作。这种情 一个可执行文件 况就是多态现象 执行此程序
图8.3
面向对象程序设计它面对的是一个个对象
程序设计者的任务包括 设计所需的各种类和对象 决定把哪些数据和操作封装在一起 怎样向有关对象发送消息 以完成所需的任务
每一组数据都是有特定的用途的,是某种操作的对象 也就是说,一组操作调用一组数据。 这时他如同一个总调度,不断地向各个对象发出命令, 让这些对象活动起来,完成自己职责范围内的工作。各 个对象的操作完成了,整体任务也就完成了。 面向对象程序设计方法是十分有效的,它能大大降低程序设计 人员的工作难度,减少出错机会。
相关文档
最新文档