面向对象多态变量讲解.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 被顺序化的类应确保自身能够以正确的顺序实现操作,不应仅依赖于调用者的正确处理 class MyClass { public: doStuff () { doFirst(); doSecond(); doThird(); } protected: doFirst() { ... } doSecond() { ... } doThird() { ... } } 控制或者顺序耦合 * * 组件耦合发生在一个类包含的数据字段或数值为另外一个类的实例时 Class Set{ . . private: List data; }; 组件耦合 * * 参数耦合发生在一个类必须调用另外一个类的服务和例程时,此时两个类之间所发生的唯一关系就是一个类需要为另一个类提供参数数目、类型和返回值类型。 Class myClass{ public: void doSomething(Set aset){ //do something using the argument value . } } 参数耦合 * * 子类耦合是面向对象编程所特有的,描述了一个类与其父类之间的关系。通过继承,子类的实例可以被看成父类的实例。 Class Parent{ . . } Class Child extends Parent{ . . } 子类耦合 * * 类的内部内聚性是该结构中各个元素之间绑定程度的量度。 内聚 * * 从最弱的内聚到最强的内聚: 随机内聚:对程序随意划分 逻辑内聚:算术函数库 时间内聚:如实现程序初始化的类 通信内聚:数据或者设备的manager 顺序内聚:避免顺序耦合 功能内聚:类中元素通过执行特定功能关联起来 数据内聚:数据结构 内聚的种类 * * 目的:通过限制对象之间的互连来减少其耦合度。 也叫最少知识原则 德墨特尔法则 * * 德墨特尔法则:对于绑定于C类中的任一个方法M,只有通过下面的类所定义的方法才可以使用: C的实例变量类 方法M的参数类。(全局对象或者方法M内部创建的对象都被当作M的参数) 德墨特尔法则 * * 在一个方法内部存取数据时,消息只能发送给下面这几种对象: 与正在执行的方法相关的参数 关于方法接收器的实例变量 文件范畴和程序范畴的全局变量 方法内部建立的临时变量 弱形式德墨特尔法则 * * 在一个方法内部,只允许下面这几种对象存取或发送消息: 与正在执行的方法相关的参数 包含正在执行方法的类中所定义的实例变量 全局变量 方法内部建立的临时变量 强形式德墨特尔法则 * * 符合该规则的程序所消除的主要存取形式就是对另外一个类中的实例变量进行操纵,一种内部数据耦合形式。 由于符合德墨特尔法则意味着多个类之间只能以简单且定义良好的方式进行交互,因此可以对其独立地进行理解和研究。 德墨特尔法则 * * 面向对象语言通常使用两类模型来描述名称的可视性:类级别可视性和对象级别可视性 两者之间的区别可以归纳为一个简单的问题:是否允许对象检查兄弟对象的内部状态? 类级别可视性与对象级别可视性 * * 类级别可视性:C++ 允许对象存取其兄弟对象的内部状态 对象级别可视性:Smatlltalk。不允许 类级别可视性与对象级别可视性 * * 用户客户创建类的实例并传递消息给这些对象。 子类客户创建基于父类的新类。 子类客户和用户客户 * * 各语言 存取控制和可视性 * * 实例变量私有 方法公有 Smalltalk * * Public,protected,private C++ * * Protected : 弱德墨特尔 Private : 强德墨特尔 构造函数 * * Private针对类,不是针对实例。同一个类的兄弟成员允许相互存取私有数据字段。 java * * Protected用于包。 包 * * 允许内部类存取其所在类的所有数据。 内部类 * * * * * * * * * * * * * Template class T class Box{ public: Box(T initial):value(initial){} T getValue(){return value;} setValue(T newValue){value=newValue;} private: T value; }; 模板类 * * 为了创建模板实例,模板参数必须与具体类型联系起来。 Box(int)

文档评论(0)

挑战不可能 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档