初识可以工作的类

什么样的类,才是一个合格的类,才是一个可以良好工作的类

通过阅读《代码大全》的第六章,我有了一点初步的认识,源于对一些最基本概念的了解。

类的基础:ADT

这个概念着重在抽象二字,类的根本目的也正是要设计不同的抽象层次。这样,在每一个抽象层次下,都可以定义若干个 ADT,抽象数据类型。

同时,ADT 最简洁、完美地展示了代码复用的实例。通过不同层次下的一个个 ADT 的编写,我们设计和实现了一个良好的抽象层次。

接口

创建高质量的类,第一步,也可能是最重要的一步,是设计一个好接口,一副好接口是合理抽象层次的基础。

好的接口是怎样的呢?实现一个好接口需要注意哪些规范呢?

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

Good Encapsulation 良好的封装

封装是一个比抽象更强的概念。抽象通过提供一个方便忽略实现细节的模型来管理复杂度,而封装则强制阻止你看到细节–即便你想那么做。

至于12345,就先不写了。记一条:让阅读代码比编写代码方便的多,阅读代码的次数比编写代码的次数多得多。

包含与继承

包含是一个非常简单的概念,它表示一个类含有一个基本数据元素或对象. 与包含相比,关于继承的论述要多的多,这是因为继承需要更多的技巧,而且更容易出错,而不是因为继承要比包含更好.包含才是面向对象编程中主力技术.

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

继承(是一个的关系)

  1. 如果多个类共享数据而非行为,应该创建这些类可以包含的对象
  2. 如果是行为而非数据,应该让它们从共同的基类继承而来,并在基类里定义共用的子程序
  3. 如果同时共享数据和行为,就要在基类里定义共用的数据和子程序
  4. 当想用基类控制接口时,使用继承;当想自己控制接口时,使用包含

类是一个关键概念,要反复理解,在这个过程里,熟悉一系列的相关概念,慢慢丰富和深化自己对类的理解和使用.

记住:实践—>理论—>实践—>理论—>实践,整个过程循环往复,核心在于绝不要懒于思考.


不知是该恭喜,还是该怎样,总之阅读到该文的,你是第 人。每一次刷新,都是不同的自己。