2014年9月11日(面向对象范式)
- 本章不能让你成为面向对象方法的专家。它甚至不能为你解释面向对象领域所有的基础概念。但是,它将帮助你为阅读本书的其他部分做好准备。
- 功能分解是一种自然的解决问题的方式。我们经常如此。大化小的一种方式。比如:组装一个自行车。
- 功能分解的问题:办不到我们为未来可能发生的变化做准备。步骤中的任何一个发生一点变化,我们都必须改变这个函数或模块。
- 许多错误来自于代码的变化。所以,不敢该。
- 需求总是在发生变化。
- 在功能分解中模块化问题。比如:展示几何图形。输入形状,判断是哪种,再展示。
- 5所带来的问题:低内聚 紧耦合
- 内聚度:程序中操作之间联系的紧密程度。
- 耦合度:两个子程序之间联系的强度。耦合度与内聚度成反比。内聚度描述了一个子程序的内部成分之间的强度。耦合度描述了子程序与其他子程序之间联系的强度。
- 我们的目标:创建具有内部完整性(强内聚)的子程序,以及小的、直接的、可见的、灵活的与其他子程序之间的联系(松耦合)。
- 改变一个函数乃至函数使用的数据,都可能引起对其他函数的严重破坏。(紧耦合了)
- 功能分解的问题+1:一个函数或数据结构的变化会影像其他的函数和数据,于是受影响的部分也需要修改。滚雪球。。。
- 在一个层次(概念层次)上通信而在另一个层次(实现层次)上执行,其结果就是请求者(下达统一的步骤者)不知道具体发生了什么。。。比如:领导在概念层面上,制定了一个计划。职员们便按计划行事。有点诸葛亮锦囊妙计的样子。。
- 面向对象范式的核心是“对象”的概念。所有的东西都聚焦于对象。围绕对象---而非函数---组织代码。
- 使用对象优点:可以定义对自己负责的东西。
- 对象应该对自己负责,并且这种责任应该被清楚的定义出来。。。比如:长官下达命令的责任,士兵执行命令的责任。(这次的 数据分析类 网络类 数据库类)
- 抽象类不仅仅是“不能被实例化的类”。抽象类定义了一组类可以做的事情。抽象类就像是其他类的占位符。它们给我们为一组相关的类命名的方法。这让我们可以把这一组类当做同一个概念处理。
- 诸葛亮能控制很多人。但是却不用知道具体是那个人、什么职位的人去做事了。。。这就是对于诸葛亮隐藏了下属的类型。
- 封装有几个优点。“向用户隐藏一些东西”的事实直接意味着下面这些优点
-
- 使用容易。用户不必操心实现。
- 实现可以在不考虑调用者的情况下变更。(接口不变撒)
- 对象外部的代码不知道内部的情况。
总结:
- 面向对象能够帮助我们尽量减少系统需求变更造成的不良后果。它与功能分解(将问题切分到一个个规模小、易于管理的函数)有很大的差异。

浙公网安备 33010602011771号