- 1、本文档共52页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1.4.2 抽象与封装 1、抽象 抽象(abstract)是指有意忽略问题的某些细节和与当前目标无关的方面,以便把问题的本质表达得更清楚。 案例:VCD机器的抽象 1.4.2 抽象与封装 2、封装性 封装encapsulation——将数据和与这个数据有关的操作集合在一起,形成一个实体——对象,且尽可能隐藏对象的内部细节. 特点: 具有一个清楚的边界,对象的所有私有数据、内部程序(成员函数)细节都被固定在这个边界内。 具有一个接口,描述了对象之间的相互作用、请求和响应——消息 对象内部的实现代码受到封装壳的保护,其它对象不能直接修改本对象所拥有的数据和代码。 封装的单位是对象。 1.4.2 抽象与封装 2、封装性 从外面看只能看到对象的外部特性,即能够受理哪些信息,具有哪些处理能力;对象的内部,即处理能力的实行和内部状态,对外是不可见的。 从外面不能直接使用对象的处理能力,也不能直接修改其内部状态,对象的内部状态只能由其自身改变。 封装的优点: 1.降低部件间的耦合度,提高部件的独立性 2.具有隐藏性和安全性 (如银行的帐户) 3.易于维护(由于数据独立,易于发现问题) 4.封装将对象的使用者与设计者分开,使用者只需要通过接口访问对象,不必须了解对象的内部细节.提高了软件复用. 封装的缺点: 需要更多的输入输出函数。 3、封装的形式 class classname { public: //public members //friend function private: //private members }; Public 成员1 Public 成员2 Public 成员n Private 一个Class定义了一种抽象的数据类型,用户只能访问Public成员,不能直接访问Private成员 直接访问private是禁止的 边界 1.4.2 抽象与封装 4、抽象与封装形成了程序接口与实现的分离 1.4.3 继承 1、继承的基本概念 古语:龙生龙,凤生凤,老鼠生儿会打洞 继承:对象类之间的相交关系,使得某类对象可以继承另外一类对象的特征和功能 类间具有继承关系的特性: 类间具有共享特征(包括数据和程序代码的共享):遗传 类间具有细微差别或新增部分(包括非共享的程序代码和数据):变异 类间具有层次结构(同人类通过继承构成了家簇关系一样) 1.4.3 继承 2、继承分类 从继承源上划分:单继承(一个派生类只有一个基类)、多继承(一个派生类有多个基类) 从继承内容上划分:取代继承、包含继承、受限继承、特化继承。 3、继承的作用: 实现软件的可重用性 实现软件的独立性 增加软件的可维护性 4、继承的层次结构 思考:B和C具有哪些成员? A B E C D a: int getA( ): int c: int getC( ): int setB( ): void b: int getB( ): int setB( ): void inheritance (“is-a” relation) e: int getE( ): int setB( ): void d: int getD( ): int 1.4.3 继承 5、继承的优势 能清晰体现相关类间的层次结构关系。 有效地址提高了程序的可重用性,减小了程序代码的冗余度。 增强了程序的一致性,减少了程序模块间的接口和界面,使程序更易维护。 继承是自动传播程序代码的有力工具。 继承是新类构造、建立和扩充的有效手段。 继承具有传递性 如果类C继承类B,类B继承类A,则类C继承类A “站在巨人的肩头上”。用户在开发新系统时不必从零开始,可以继承原有相似功能或者从类库中选取需要的类,再派生新类。 1.2.3继承 1、多态polymorphism 对象根据所接受的消息而做出动作,同样的消息为不同的对象接受时可导致完全不同的行动,该现象称为多态性。 简单的说:单接口,多实现 举例:sqrt_i (int i),sqrt_f (float f)sqrt (int i),sqrt (float f) 作用: 减轻程序员负担 降低程序员出错机率 1.4.4 多态 2、多态性的实现 运行时多态性:虚函数 编译时多态性:重载 重载 函数重载:是指在同一作用域内的若干个参数特征不同的函数可以使用相同的函数名字。 运算符重载:是指同一个运算符可以施加于不同类型的操作数上面。 优点:重载进一步提高了面向对象系统的灵活性和可读性 1.4.4 多态 3、多态的一个案例 图中同名函数area( )作用在Circle、Triangle等不同类上时,将执行不同的操作,这就是多态。 1.4.4 多态 1.5 C++与面向对象程序设计 1、面向对象程序设计语言的
您可能关注的文档
- ansys通用后处理探索.ppt
- 第2章绘制基本二维图形分析.ppt
- 10.2炮手答辩.ppt
- ARB在慢性肾病中的应用探索.ppt
- ARCGIS基本知识探索.ppt
- 10.09.13高三地理《3.3内力作用》答辩.ppt
- Aseeyouagain探索.ppt
- 第2章建立数据库和表分析.ppt
- 10.风筝答辩.ppt
- 典型零件加工技巧.ppt
- 数据仓库:Redshift:Redshift与BI工具集成.docx
- 数据仓库:Redshift:数据仓库原理与设计.docx
- 数据仓库:Snowflake:数据仓库成本控制与Snowflake定价策略.docx
- 大数据基础:大数据概述:大数据处理框架MapReduce.docx
- 实时计算:GoogleDataflow服务架构解析.docx
- 分布式存储系统:HDFS与MapReduce集成教程.docx
- 实时计算:Azure Stream Analytics:数据流窗口与聚合操作.docx
- 实时计算:Kafka Streams:Kafka Streams架构与原理.docx
- 实时计算:Kafka Streams:Kafka Streams连接器开发与使用.docx
- 数据仓库:BigQuery:BigQuery数据分区与索引优化.docx
文档评论(0)