• 代码大全--第六章--可以工作的类


    类是由一组数据和子程序构成的集合,这些数据和子程序共同拥有一组内聚的、明确定义的职责。类也可以只是由一组子程序构成的集合,这些子程序提供一组内聚的服务,哪怕其中并未涉及共用的数据。成为高效程序员的一个关键就在于,当你开发程序任一部分代码时,都能安全地忽视程序中尽可能多的其余部分。而类就是实现这一目标的首要工具。

    6.1 类的基础:抽象数据类型(ADTs)

         抽象数据类型是指一些数据以及对这些数据所进行的操作的集合。

    使用ADTs的益处:

      1. 可以隐藏实现的细节
      2. 改动不会影响到整个程序
      3. 让接口提供更多的信息
      4. 更容易提高性能
      5. 让程序的正确性更显而易见
      6. 程序更具自我说明性
      7. 无需再程序内到处传递数据
      8. 你可以像在现实世界中那样操作实体,而不用在底层实现上操作它

    使用ADTs的指导建议:

    • 把常见的底层数据创建为ADT并使用这些ADT,而不再使用底层数据
    • 把文件这样的常用对象当成ADT
    • 简单的事物也可当作ADT
    • 不要让ADT依赖于其存储介质

    6.2 良好的类接口

    创建高质量的类,第一步,可能也是最重要的一步,就是创建一个好的接口。

    创建类的抽象接口的一些建议:

    1. 类的接口应该展现一致的抽象层次
    2. 一定要理解类所实现的抽象是什么
    3. 提供成对的服务
    4. 把不相关的信息转移到其它类中
    5. 尽可能让接口可编程,而不是表达语义
    6. 谨防在修改是破坏接口的抽象
    7. 不要添加与接口抽象不一致的公用成员
    8. 同时考虑抽象性和内聚性

    良好的封装:

    1. 尽可能限制类和成员的可访问性
    2. 不要公开暴露成员数据
    3. 避免把私用的实现细节放入类的接口中
    4. 不要对类的使用者做出任何假设
    5. 避免使用友元类
    6. 不要因为一个子程序里仅使用公用子程序,就把它归入公开接口
    7. 让阅读代码比编写代码更方便
    8. 要格外警惕从语义上破坏封装性
    9. 留意过于紧密的耦合关系

    6.3 有关设计和实现的问题

    包含(has a):

    包含是一个非常简单的概念,它表示一个类含有一个基本数据元素或对象。包含是面向对象编程的主力技术。

    1. 通过包含实现“有一个(has a)”的关系
    2. 在万不得已时通过private继承来实现“有一个”关系
    3. 警惕有超过7个数据成员的类

    继承(is a):

    1. 用public继承实现“是一个(is a……)”的关系
    2. 要么使用继承并进行详细的说明,要么就不要用它
    3. 遵循Liskov替换原则(派生类必须能通过基类的接口而被使用,且使用者无需了解两者之间的差异)
    4. 确保只继承需要继承的部分
    5. 不要“覆盖”一个不可覆盖的成员函数(即:派生类中的成员函数不要与基类中不可覆盖的成员函数重名)
    6. 把共用的接口、数据和操作放到继承树中尽可能高的位置
    7. 只有一个实例的类是值得怀疑的
    8. 只有一个派生类的基类也是值得怀疑的
    9. 派生后覆盖了某个子程序。但在其中没做任何操作,这种情况也值得怀疑
    10. 避免让继承体系过深
    11. 尽量使用多态,避免大量的类型检查
    12. 让所有数据都是private(而非protected)

    多重继承:

    为什么这么多关于继承的规则:

    成员函数和数据成员:

    构造函数:

    6.4 创建类的原因

    创建类的合理原因:

    1. 为现实世界中的对象建模
    2. 为抽象对象建模
    3. 降低复杂度
    4. 隔离复杂度
    5. 隐藏实现细节
    6. 限制变动的影响
    7. 隐藏全局数据
    8. 让参数传递更顺畅
    9. 建立中心控制点
    10. 让代码更易于重用
    11. 为程序族做计划
    12. 把相关操作包装到一起
    13. 实现某种特定的重构
    14. 相关阅读:
      地址null发布新的JS游戏《吞食蛇永恒激情版》
      iteratornullHDU4302(map的用法)
      对象类亮剑.NET的系列文章之.NET详解(开端)
      视频连接【视频】Arduino 以太网插板介绍
      选中条目android spinner的使用
      进口问题限制进口肯定解决不了煤炭业问题
      方向搜索hdu 1180 诡异的楼梯 楼梯可以变方向的搜索题
      添加设置Android编程心得为TextView添加各种样式
      字符字符串字符串笔试面试题
      设置部门公用流程,上级领导审批,设置注意事项
    15. 原文地址:https://www.cnblogs.com/dreamfree/p/3313682.html
    Copyright © 2020-2023  润新知