第4章c类与对象

上传人:博****1 文档编号:510671840 上传时间:2022-11-08 格式:DOCX 页数:50 大小:495.97KB
返回 下载 相关 举报
第4章c类与对象_第1页
第1页 / 共50页
第4章c类与对象_第2页
第2页 / 共50页
第4章c类与对象_第3页
第3页 / 共50页
第4章c类与对象_第4页
第4页 / 共50页
第4章c类与对象_第5页
第5页 / 共50页
点击查看更多>>
资源描述

《第4章c类与对象》由会员分享,可在线阅读,更多相关《第4章c类与对象(50页珍藏版)》请在金锄头文库上搜索。

1、第四章类与对象封装(Encapsulation)是面向对象程序设计最基本的特性,也就是把数据(属 性)和函数(操作)合成一个整体,这是用类与对象实现的。本章重点:1. 引入C+的类(class)和对象(object)的概念,建立 函数也可以是数据类型 的成员”的思想。2.运算符重载。4.1.1 C+类的定义类的引入:类是一种数据类型。描述客观事物必须用不同的数据类型来描述不同的方面。如商品:商品名称(用字符串描述),该商品数量(用整型数描述),该商品单价(用浮 点数描述),该商品总价(用浮点数描述)。这里用了属于三种不同数据类型的四个数据成员(data member)来描述一种商品类的表述:c

2、lassCGoodspublic:charName21 ;intAmount ;floatPrice ;floatTotal_value ; ; /最后的分号不可少,这是一条说明语句关键字class是数据类型说明符,指出下面说明的是类。标识符 CGoods是商品这个类的类型名。花括号中是构成类体 的系列成员,关键字public是一种访问限定符。4.1.1 C+类的定义访问限定符(access specifie):public (公共的)说明的成员能从外部进行访问。private (私有的)和protected(保护的)说明的成员不能从外部进行访问。每种说明符可在类体中使用多次。访问限定符的作用

3、域是从该说明符出现开始到下一个说明符之前或类体结束之前 结束。如果在类体起始点无访问说明符,系统默认定义为私有(private)。访问限定符private (私有的)和protected (保护的)体现了类具有封装性(En capsulation)4.1.1 C+类的定义类的定义:class类名private :成员表1;public:成员表2;protected:成员表3;;/注意:所有说明都以分号结束其中“clas类名”称为类头(classhead。花括号中的部分称为类体(classbody,类体中定义了类成员表(classmemberlist),包含数据和函数4.1.1 C+类的定义成员

4、函数(memberfunction):classCGoodsprivate:charName21;i ntAmou nt;floatPrice;floatTotal_value;public:void RegisterGoods(char,int,float); 输入数据 voidCountTotal(void) ; /计算商品总价值 voidGetName(char) ; /读取商品名 intGetAmount(void) ; / 读取商品数量 floatGetPrice(void) ;/读取商品单价 floatGetTotal_value(void) ; ; /读取商品总价值4.1.1 C

5、+类的定义圭寸装:类把数据(事物的属性)和函数(事物的行为 一一操作)封装为一个整体。 接口:通常数据成员被说明成私有的,函数成员被说明成公有的;从外部对数据成员进 行操作,只能通过公有函数来完成,数据受到了良好的保护,不易受副作用的影响 公有函数集定义了类的接口( in terface)。成员函数可以直接使用类定义中的任一成员,可以处理数据成员,也可调用函数 成员。类是一种数据类型,定义时系统不为类分配存储空间,所以不能对类的数据成员 初始化。类中的任何数据成员也不能使用关键字extern、auto或register限定其存储类型。4.1.2成员函数的定义函数定义:通常在类定义中,成员函数仅

6、作声明。函数定义通常在类的说明之后进行,其格 式如下:返回值类型类名::函数名(参数表)函数体其中运算符“:称为作用域解析运算符(scoperesoluti on operator)它指出该函数是 属于哪一个类的成员函数。4.1.3对象的创建与使用定义对象:定义一种数据类型只是告诉编译系统该数据类型的 一个样板,以此样板可以在内存中开辟出同样结对象是类的实例(instanc9。 构造,并没有预定内存。类只是 构的实例一一对象。格式如下:CGoodsCa;这个定义创建了 CGoods类的一个对象Car,同时为它分配了属于它自己的存储 块,用来存放数据和对这些数据实施操作的成员函数(代码)。对象只

7、在定义它的域中有效。对象存储: 对象1对象2对象n图4.1::各对象完全独立地安排内存的方案图4.1是系统为每一个对象分配了全套的内存。数据区安放成员数据,代码区安 放成员函数。注意:区别同一个类的各个不同的对象的属性是由数据成员决定的,不同对象的 数据成员的内容是不一样的;而行为(操作)是用函数来描述的,这些操作的代 码对所有对象都是一样的。对象1对象2对象n图4.2各对象的代码区共用的方案图4.2仅为每个对象分配一个数据区,代码区(放成员函数的区域)为各对象类 共用。图4.1对应的是在类说明中定义函数,而图4.2对应的是在类说明外部定义函数。4.1.3对象的创建与使用内联函数:使用关键字i

8、nline,系统自动采用内联扩展方法实现,每个对象都有该函数一份 独立的代码。如RegisterGoods(函数可定义为:in li nevoidCGoods:RegisterGoods(char n ame ,in tam ount , floatprice)strcpy(Name,name) ; Amount=amount; Price=price ; 则每个对象都有RegisterGoods(函数一份独立的代码。注意:inline只是一个建 议,最后由编译器决定是否执行。对象的存储方式是物理的,这是由计算机来完 成的,它并不影响类在逻辑上的封装性。4.1.3对象的创建与使用商品类对象应用

9、实例对象使用规则:只要在对象名后加点号(点操作符,成员访问运算符(member access oprato之一),再加成员数据或成员函数名就可以了。但是这些成员必须是公有的成员, 只有公有成员才能在对象的外面对它进行访问【例4.1】中对象car的4个数据成员全是私有的,如写:car.Name;car. Amount; car.Price;car.Total_value;是错误的,必须用对象car所带的公有函数进行访问。4.2从面向过程到面向对象(阅读)结构化程序设计特点:采用的是 自顶向下,逐步细化(divide andconquer,stepwise refinemen)”的思想。具体操作方

10、法是模块化。模块是按功能来 分的,所以也称功能块。在 C+中称为一个函数,一个函数解决一个问题,即实 现一个功能或一个操作。在模块化的思想中已经出现了封装的概念,这个封装是把数据封装到模块中,即 局部变量。这是很不彻底的,因为模块是功能的抽象,而数据则是具有其个性 的,一但发生变化,抽象的功能模块就不再适用了。可维护性差成了制约结构化 程序设计的瓶颈。面向过程程序设计缺点的根源在于数据与数据处理分离。4.2从面向过程到面向对象(阅读)结构化程序设计弱点:当软件规模过大,采用结构化程序设计,其开发和维护就越来越难控制。其根本 的原因就在于面向过程的结构化程序设计的方法与现实世界(包括主观世界和客

11、 观世界)往往都不一致,结构化程序设计的思想往往很难贯彻到底。对象概念:对象的概念是面向对象技术的核心所在。面向对象技术中的对象就是现实世界中 某个具体的物理实体在计算机逻辑中的映射和体现。4.2从面向过程到面向对象(阅读)体可以抽象出类别的 概念。对应于计算机 世界就有一个类(団class)的概念。面 向对象是计算机世界 模拟现实世界。图4.3 表达了计算机世界与 现实世界之间的对应 关系。4.2E从面向过程到面向对象(阅读)对象、类与消息:面向对象程序设计模拟自然界认识和处理事物的方法,将数据和对数据的操作方 法放在一起,形成一个相对独立的整体 对象(object),同类对象还可抽象 出共

12、性,形成类(class )。一个类中的数据通常只能通过本类提供的方法进行处 理,这些方法成为该类与外部的接口。对象之间通过消息(message进行通讯。4.2从面向过程到面向对象(阅读) 对象属性表针旋钮 其他机械机构行为调节旋钮4.2从面向过程到面向对象(阅读)类- 1是一个抽象的概念,用来描述某一类对象所共有的、本质的属性和类行为。E34.2从面向过程到面向对象(阅读)消息我们把对象之间产生相互作用所传递的 信息称做消息发送消息接收并响应消息 转向启动4.2从面向过程到面向对象(阅读)面向对象程序设计的特点: 封装性对象是一个封装体,在其中封装了该隐藏”在对对象的属性和操作。通过限制对属性

13、和操作的访问权限,可以将属性 象内部,对外提供一定的接口,在对象之外只能通过接口对对象进行操作。C+通过建立数据类型一一类来支持封装和数据隐藏。封装性增加了对象的独立性,从而保证了数据的可靠性。一个定 义完好的类可以作为独立模块使用。动机作械零件读调表节盘旋钮4.2从面向过程到面向对象(阅读)继承与派生 以汽车为例看客观世界描述事物的方式: 面向对象程序设计提供了类似的机制: 当定义了一个类后,又需定义 一个新类,这个新类与原来的类 相比,只是增加或修改了部分属 性和操作,这时可以用原来的类 派生出新类,新类中只需描述自叵己所特有的属性和操作。新类称为子类或派生类E,原来的类称为基类。派生可以

14、一直进行下去,形成一个派生树。继承性大大简化了对问题的描述,大大提高了程序的可重用性,从而提高了程序 设计、修改、扩充的效率。RI4.2从面向过程到面向对象(阅读)多态性多态性指,同一个消息被不同对象接收时,产生不同结果,即实现同一接口,不 同方法。高中生大学生4.2从面向过程到面向对象(阅读)继承和多态性组合,可以生成很多相似但又独一无二的对象。继承性使得这些对 象可以共享许多相似特性,而多态又使同一个操作对不同对象产生不同表现形 式。这样不仅提高了程序设计的灵活性,而且団减轻了分别设计的负担4.3构造函数和析构函数数据成员多为私有的,要对它们进行初始化,必须用一个公有函数来进行。同时 这个函数应该在且仅在定义对象时自动执行一次。称为:构造函数(constructor1 )JD

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号