- 1、本文档共36页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第二章 从结构到类的演变
第二章 从结构到类的演变;2.1 结构的演化
2.2 从结构演变一个简单的类
2.3 面向过程与面向对象
2.4 C++面向对象程序设计的特点
2.5 使用类和对象
2.6 string对象数组与泛型算法;2.1 结构的演化;例2.1:;2、封装性
如果在定义结构时,将数据成员使用private关键字,则产生封装性。
例2.2:;2.1.2 使用构造函数初始化结构的对象
结构中private的使用使其具有封装性,所以不能像C语言中那样使用初始化列表对结构对象进行初始化。为此我们可以设计两个特殊的成员函数来进行初始化。两个函数的名字与结构同名,其原型为
Point()
Point(double,double)
两函数为重载函数。
专门用于对象的初始化,称为构造函数。;例2.3:构造函数。;2.2 从结构演变一个简单的类;类的使用与结构相同。如,;2.3 面向过程与面向对象;C语言中的函数
是功能的抽象。
有利于结构化程序设计和模块化设计,适合于大型程序的开发。
解决了大系统多文件的组织与管理。
C++是混合型语言,可用于面向过程软件的开发。
当软件太复杂,结构化程序设计不能满足要求。
人们分析问题思考方式的不一致
全局变量的大量存在
面向过程存在的问题。
要求开发人员按计算机的结构去思考,而不是按要解决的问题的结构去思考。
开发人员必须在机器模型(解空间)和实际问题模型(问题空间)之间进行对应。
面向过程的方法充满“变数”。;面向对象
相对于过程,对象是稳定的。
在面向对象程序设计中,可以将一组密切相关的函数统一封装在一个对象中,从而可以合理、有效地避免全局变量的使用。
对象是功能抽象和数据抽象的统一。
面向对象的程序设计方法不是以函数过程和数据结构为中心,而是用对象代表求解问题的中心环节。;例2.6:输入三角形的3个顶点坐标,计算3条边的长度的面向对象的算法描述。
问题以“点”对象为中心环节。边长可以看作两点对象之间了距离。
设计Point类:
算法设计:
设计Point类
创建3个点对象
Point A(x1,y1);
Point B(x2,y2);
Point C(x3,y3);
计算边长:
AB:A.Getlength(B);
BC:B.Getlength(C);
AC:A.Getlength(C);
输出三边长:AB,BC,AC;软件开发是对给定问题求解的过程,包含两部:认识和描述。
问题域:软件开发者将被开发的整个业务范围称作“问题域”。
认识:就是通过人的思维,对该问题域客观存在的事物以及对所要解决的问题产生正确的认识和理解,包括弄清事物的属性、行为及其彼此之间的关系并找出解决问题的方法。
描述:是指人们用一种语言把对问题域中事物的认识、对问题及其解决方法的认识描述出来。最终描述成一种能被计算机读得懂的语言,即编程语言。;客观事物(问题域);2.4 C++面向对象程序设计的特点;例2.7:用简单对象表示平面上的两个坐标点:A(3.5, 6.4), B(8.5, 8.9)。;2.4.2 抽象和类
抽象是一种从一般的观点看待事物的方法,即集中于事物的本质特征,而不是具体细节或具体实现。可以从一组对象的共同特征进一步抽象出来从而形成“类”的概念。
类由类名、一组属性、一组操作组成。
类的属性只是性质的说明,对象的属性才是具体数据。
如,从上例中A,B两点抽象出来的点类,如右上图。;在抽象的过程中用到“归纳法”和“演绎法”:
归纳法:从特殊到一般,即“归类”。
演绎法:从一般到特殊,即“分类”。
类与对象:
对象由一些属性和操作组成,而这些属性和操作描述了对象的内部细节。
类是具有相同属性和操作的一组对象集合,它为属于该类的全部对象提供了统一的抽象描述。
类给出了属于该类的全部对象的抽象定义,而对象则是符合这种定义的实体。;2.4.3 封装
对象由属性与操作组成。
属性只能通过操作存取
操作分内部操作和外部操作
外部操作提供消息接口
对象内部数据结构的不可访问性称为信息(数据)隐藏。
数据封装减少了出错的可能性。
类中封装是通过存取权限实现的。
类的属性和操作分为私有的(private)和公有的(public)两种类型。;2.4.4 继承
继承是一个类可以获得另一个类的特性的机制,继承支持层次概念。低层的类只须定义特定于它的特征,而共享高层类中的特征。
;2.4.5 多态性
不同的对象可以调用相同名称的函数,但可导致完全不同的行为的现象称为多态性,程序中只须一般形式的函数调用,函数的实现细节留给接受函数调用的对象。有利于提高解决复杂问题的能力。
如“+”
7+8
1.1+2.2;2.5 使用类和对象;使用头文件string,即应有语句
#include string
string对象的构造
string str=“abc”
文档评论(0)