- 1、本文档共57页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第8章 类和对象
从简单到复杂
人类发展史,是一部从简单到复杂,从容易到困难的探索历史
以交通工具的生产制作为例说明。
任何一个合格的木匠都能独立制作一辆马车。
复杂的交通工具
再优秀的工程师都无法独立生产一辆汽车甚至一辆自行车。那该怎么办呢?采用面向对象的设计思想
对问题的表述从简到繁
单个变量:反映无关联的属性
int a, b, c;
变量的集合
数组:反映同类型相关属性
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;
}
};
从外界对时钟设置时间,比如钟表背面的设置按钮
外界获取时钟的时间,比如钟表正面的表盘
8.1 面向对象程序设计方法概述
对象
对象的两个要素:
静态特征:属性;考虑汽车有哪些属性?
动态特征:行为;考虑汽车有哪些行为?
一个系统的多个对象之间通过消息相互联系。
考虑行驶到路口的汽车考到红灯这个信号(消息)时会产生什么样的行为?
注意:汽车是一个大的对象,它是由许多更小的对象组成的,如,发动机、地盘、轮子等。
封装与信息隐蔽
考虑一台电视机,它里面的结构和工作原理我们知道吗?对普通的人来说,需要知道吗?
封装的含义:
将有关的数据和操作代码封装在一个对象中,形成一个基本的单位,各个对象之间相对独立,互不干扰。
将对象中某些部分对外隐蔽,即隐蔽其内部细节,只留下少量接口,以便与外界联系,接受外界的消息。
电视机的接口
抽象
什么是汽车?把具有轮子,能滚动前进的陆地交通工具统称为“车子”。
再进一步,把用汽油发动机驱动的车子抽象为“汽车”,把用马拉的车子抽象为“马车”,用脚蹬的车子抽象为脚踏车。
具有某些相同的属性和行为
类与对象:类是对象的抽象,对象是类的特例,是类的具体表现形式。
继承与重用
现代工业高效的重要原因:重用性,一件工业产品的生产通常都不是从零开始的,总是尽可能利用前有的成果。那么软件产品呢,是不是也可以实现重用?怎么实现呢?
重用要通过继承机制来实现。
继承
车子
多态性
考虑,停在路口的汽车和马车,当看到左转向的信号灯由红灯变为绿灯时,分别拐向机动车道和非机动车道。
多态性:由继承而产生的相关的不同的类,其对象对同一消息会作出不同的响应。
8.1.2 面向对象程序设计的特点
面向过程程序设计:围绕功能,面向函数;
面向对象程序设计:围绕对象的设计,面向对象;
面向对象程序设计,程序设计者的任务:
设计所需的各种类和对象,即决定把哪些数据和操作封装在一起;
考虑怎样向有关对象发送消息,以完成所需的任务。
8.1.3 类和对象的作用
基于对象:Object-Based,以类和对象为基础,程序的操作时围绕对象进行的。
面向对象:Object-Oriented,在基于对象的基础上,利用继承机制和多态性,实现重用性。
类是所有面向对象的语言的共同特征,所有面向对象的语言都提供了这种类型
一个有一定规模的C++程序是由许多类所构成的
一个有一定规模的C++程序在执行时表现为许多相关的对象相互之间的作用
8.2 类的声明和对象的定义
8.2.1 类和对象的关系
类与对象的关系如同结构体类型与结构体变量的关系。
具体来说,就是:类是对象的抽象,而对象是类的具体实例。类是抽象的,不占用内存,而对象是具体的,占用存储空间。
8.2.2 声明类类型
类声明方法及例子如下:
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)
您可能关注的文档
- 05进程管理2互斥和同步一讲稿.ppt
- 5.1四大地理区域的划分1讲稿.ppt
- 2013年中考化学专题复习-推断题L讲稿.ppt
- 05类与对象讲稿.ppt
- 05秋天的怀念讲稿.ppt
- 5.1文化创新的源泉与作用讲稿.ppt
- 5.1状态元件、顺序功能图讲稿.ppt
- BENQ投影机基础知识讲稿.ppt
- 5.2.1动物的运动讲稿.ppt
- 5.2.1平行线讲稿.ppt
- 2025年网络文学平台版权运营模式创新与版权保护体系构建.docx
- 数字藏品市场运营策略洞察:2025年市场风险与应对策略分析.docx
- 全球新能源汽车产业政策法规与市场前景白皮书.docx
- 工业互联网平台安全标准制定:安全防护与合规性监管策略.docx
- 剧本杀剧本创作审核标准2025年优化与行业自律.docx
- 2025年新能源电动巡逻车在城市安防中的应用对城市环境的影响分析.docx
- 全渠道零售案例精选:2025年行业创新实践报告.docx
- 2025年网约车司乘纠纷处理机制优化与行业可持续发展报告.docx
- 2025年宠物烘焙食品市场法规政策解读:合规经营与风险规避.docx
- 2025年宠物行业数据安全监管政策影响分析报告.docx
文档评论(0)