- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
3.4 数据抽象 3.4.1 什么是抽象? 3.4.2 数据抽象和抽象数据类型 抽象性的例子 class student { int number; char *name; float score; public: student( int number1,char * name1, float score1); ~student( ); void modify(float score1); void print( ); }; 抽象是有选择地忽略。 抽象性(Abstraction) 抽象是对复杂的现实世界的简明的表示。 抽象强调了我们所关心的(感兴趣)的信息,而将我们不关心的其他信息忽略。 名家之言 E.Dijkstra:“设计并实现一个大规模的软件的中心问题是怎样减小复杂度,一个途径就是通过抽象”。 Bjarne Stroustrup说:“在C++语言中,我一直在努力提高程序设计的抽象层次”。 抽象数据类型 一个值集和作用在值集上的操作集 C++语言中的一个类就是一个抽象数据类型 每个抽象数据类型自成一个模块,模块的接口和内部实现分离开来, 使用模块的应用程序员只需要知道如何使用该模块,而不必知道模块内部是如何实现的, 也就是说,可以忽略模块内部的实现细节。 3.5 封装性和信息隐藏 所谓封装(encapsulation) ,就是包含和隐藏对象信息,如内部数据结构和代码的能力。 在面向对象的程序中,通过创建对象将代码和数据捆绑在一起,并且在对象中包含了所有必需的代码和数据。 对象是支持封装的元素。 一个程序中的对象把现实世界中的实体的属性和行为封装成一个整体。 信息隐藏(information hiding ) 信息隐蔽(Information Hiding)的含义: 有效的模块化可以通过定义一组独立模块来实现,这些模块相互之间只交流软件功能必需的信息。 换句话说: 模块所包含的信息,不允许其它不需要这些信息的模块访问,独立的模块间仅仅交换为完成系统功能而必须交换的信息。 封装的好处 封装性降低了程序设计的复杂度。 封装将操作对象的内部复杂性与应用程序的其他部分隔离开来。 应用程序员只需要通过对象的接口来操作对象完成特定的任务,而不需要知道对象内部复杂的细节。 封装的好处(续) 提高了代码的安全性和可靠性; 通过类实现封装,集中和统一了对类中数据成员的所有操作,从而可避免因分散操作造成的错误。 能有效提到程序模块的独立性、可重用性和可维护性; 只要类的接口(即类的共有部分)保持不变,类的结构部分的任何变化(包括数据结构和算法)都不会对使用该类的源程序有所影响,源程序可以不做任何修改。 面向对象程序设计的主要特征 抽象性 封装性 继承性 多态性 3.6 继承性与软件重用 面向对象程序设计的第二个主要特征就是继承性,继承的目的就是为了重用(reuse)。 继承,就是在一个已有的类的基础上创建一个新类 ,这个新类获得了已有类的数据和操作代码,并且新类可以增加新的数据和操作代码。 继承与派生问题举例 派生类的概念 在已有类的基础上新增自己的特性而产生新类的过程称为派生。 被继承的已有类称为基类(或父类)。 派生出的新类称为派生类(或子类)。 参见图3.5 类的继承 继承与派生的目的 继承的目的:实现代码重用。 派生的目的:当新的问题出现,原有程序无法解决(或不能完全解决)时,需要对原有程序进行改造。 C++中类的继承层次自然地表达了人们分析问题时所用的分类结构。大大改善了软件系统的可理解性和可维护性。 继承的好处 (1)继承性很好地实现了代码的重用。 (2)能改进软件系统的可维护性。 (3)继承性使已有的程序库具有清晰的层次结构关系。 3.7 多态性 广义多态性:自然语言中的多态性; 面向对象程序设计中的多态性 什么是多态性?(广义) polymorphism,“many forms”:即多种形态 在自然语言中,多态性即是“一词多义”; 更准确地说,多态性是指相同的动词作用到不同类型的对象上, 例如: 驾驶摩托车 驾驶汽车 驾驶飞机 驾驶轮船 驾驶宇宙飞船 什么是多态性?(OOP) 当不同对象接受到相同的消息产生不同的动作,这种性质称为多态性。 通俗地说,多态性是指用一个名字定义不同的函数,这些函数执行不同但又类似的操作, 即用同样的接口访问功能不同的函数,从而实现“一个接口,多种方法”。 多态性的例子 在C语言中,由于不支持多态,求绝对值的动作要求三个不同的函数名字: abs(), labs(),fabs() 分别用来求整数,长整数、浮点数的绝对值。 在C++语言中,由于支持多态,求绝对值的动作可以只用一个
您可能关注的文档
- COE培训课件81.ETDRS视力表在中国幻灯片.ppt
- 高考复习二轮冲刺化学课件2基本理论4化学反应速率幻灯片.ppt
- 高考复习二轮冲刺化学课件2基本理论5化学平衡幻灯片.ppt
- Linux教学课件项目5服务与进程管理1章节幻灯片.ppt
- 高考复习二轮冲刺化学课件2基本理论6化学平衡的应用2课件幻灯片.ppt
- COE培训课件82.如何进行ETDRS视力检查幻灯片.ppt
- 高考复习二轮冲刺化学课件2基本理论8电离平衡的应用幻灯片.ppt
- COE培训课件湿性AMD诺适得治疗的患者管理幻灯片.ppt
- COE培训课件中国湿性AMD诊疗流程优化管理幻灯片.ppt
- 高考复习二轮冲刺化学课件3元素复习碱金属幻灯片.ppt
文档评论(0)