1 / 51
文档名称:

第五章 类与对象.doc

格式:doc   页数:51
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

第五章 类与对象.doc

上传人:中国课件站 2011/9/6 文件大小:0 KB

下载得到文件列表

第五章 类与对象.doc

文档介绍

文档介绍:第五章类与对象
通过前几章的学习,我们初步了解了面向过程的程序设计方法。学习了什么是数据,怎样定义数据和怎样按一定的算法编写函数来对数据进行操作,怎样用结构化程序设计的思想来编写程序。这为学习面向对象的程序设计打下了基础,因为C++不是纯面向对象程序设计的语言,这一点尤其重要。从本章起将进入面向对象程序设计学习的实质阶段。
封装(Encapsulation)是面向对象程序设计最基本的特性,把数据(属性)和函数(操作)合成一个整体,这在计算机世界中是用类与对象实现的。本章将引入C++的类(class)和对象(object)的概念,建立“函数也可以是数据类型的成员”的思想。本章中用运算符的重载来体现类和对象封装的实用性和重要性。
学习程序设计(编制软件)的目的是要解决实际问题,只有具备了从实际问题中抽象出类和对象的能力,才能说初步掌握了面向对象的程序设计的方法。从本章开始逐步培养从实际问题抽象出类和对象来的能力。
类与对象
本小节引入类与对象的最基本的概念:类的定义、对象的创建与使用。
C++类的定义
在C++中,类是一种数据类型。在前面几章中讨论了基本数据类型,数组和枚举类型。后两者是导出的数据类型,是由用户自己定义,自己按规则构造出来的,但其基本组成单位(数据成员)都是同一种数据类型。然而客观事物是复杂的,要描述它必须从多方面进行,也就是用不同的数据类型来描述不同的方面。如商场中的商品可以这样描述:
商品名称(用字符串描述),该商品数量(用整型数描述),该商品单价(用浮点数描述),该商品总价(用浮点数描述)。
这里用了属于三种不同数据类型的四个数据成员(data member)来描述一种商品。在C++中可以这样表述:
class CGoods{
public :
char Name[21] ; //对于中文可用wchar_t name[11]
int Amount ;
float Price ;
float Total_value ;
} ; //最后的分号不可少
上面的表述中,关键字class是数据类型说明符,指出下面说明的是类。标识符CGoods是商品这个类的类型名。花括号中是构成类体的一系列的成员,关键字public是一种访问限定符,表示其后所列为公共成员,就是说可以在外部对这些成员进行访问。如没有该访问说明符,这些成员是不能在类的外部对它进行访问的。访问限定符(
access specifier)有三种:public(公共的),private(私有的)和protected(保护的),由后两种说明的成员是不能从外部对它进行访问的。这三种说明符的作用域是从该说明符出现开始到下一个说明符之前或类体结束之前结束。每种说明符可以在类体中使用多次,当然要做合理安排。如果在类体起始点没有访问说明符,则系统默认定义为私有(private)。访问说明符private(私有的)和protected(保护的)体现了类具有封装性(Encapsulation)。
定义一个类的一般格式为:
class 类名{
《《private:》
成员表1;》
《public:
成员表2;》
《protected:
成员表3;》
};
其中“class 类名”称为类头(class head)。花括号中的部分称为类体(class body),类体中定义了类成员表(class member list)。
但上面的定义还没有包括类定义的更关键部分:对数据成员的操作。下面给出有关商品类的定义还应该增加的操作部分:首先要求能够输入商品的名称、数量和单价,然后要求算出总价值,最后还要求能够取得有关数据。这可以用六个函数来完成:
void RegisterGoods(char* , int , float) ; //输入数据
void CountTotal(void) ; //计算商品总价值
void GetName(char*) ; //读取商品名
int GetAmount(void) ; //读取商品数量
float GetPrice(void) ; //读取商品单价
float GetTotal_value(void) ; //读取商品总价值
这就是对数据的操作,可以把它们与数据封装在一起,这样得到新的商品类:
class CGoods{
private :
char Name[21] ;
int Amount ;
float Price ;
float Total_value ;
public :
void RegisterGoods(char*,int,float) ;
void CountTotal(void)

最近更新

2025年博尔塔拉职业技术学院单招职业适应性考.. 39页

2025年厦门华厦学院单招职业倾向性测试模拟测.. 41页

2025年厦门华天涉外职业技术学院单招职业倾向.. 40页

2025年厦门南洋职业学院单招职业技能考试模拟.. 40页

2025年厦门工学院单招综合素质考试模拟测试卷.. 40页

2025年厦门演艺职业学院单招综合素质考试题库.. 39页

2025年厦门软件职业技术学院单招职业倾向性测.. 42页

2025年台州科技职业学院单招职业适应性测试模.. 40页

2025年台州职业技术学院单招职业适应性考试模.. 40页

2025年合肥共达职业技术学院单招综合素质考试.. 41页

2025年合肥科技职业学院单招职业适应性测试模.. 41页

2025年合肥财经职业学院单招职业倾向性测试题.. 42页

2025年吉林城市职业技术学院单招职业技能测试.. 42页

2025年吉林工业职业技术学院单招职业技能考试.. 41页

2025年吉林工程职业学院单招职业适应性测试模.. 41页

2025年吉林水利电力职业学院单招职业适应性考.. 40页

2025年吉林省松原市单招职业倾向性测试模拟测.. 41页

2025年吉林省辽源市单招职业倾向性测试模拟测.. 39页

2025年吉林科技职业技术学院单招综合素质考试.. 39页

2025年吉林职业技术学院单招职业倾向性测试模.. 40页

2025年吉林通用航空职业技术学院单招职业倾向.. 39页

2025年吉林铁道职业技术学院单招职业技能考试.. 41页

2025年呼伦贝尔职业技术学院单招职业适应性测.. 39页

2025年咸宁职业技术学院单招综合素质考试模拟.. 41页

2025年咸阳职业技术学院单招职业倾向性测试题.. 41页

ZR-003 建设单位法人授权书 1页

玩具购销合同通用6篇 10页

2023年四川省凉山州数学中考真题试卷【含答案.. 32页

卫生院医疗质量、医疗安全工作责任书 11页

2025年二手车经理工作总结模板 25页