最近在做项 目的 时 候, 发现 不少同志 对 面向 对 象概念不是很了解,有的同志都 毕业 好多年了 经验 也挺丰富的 。 | |
好多人编 程人 员 在做开 发 的 时 候,只要程序写出来就OK了,万事大吉了。 这样 的想法 是 不太好的, 对 自己, 对 公司都不是很 负责 的 态 度。如果 这 种思想比 较严 重的 话 ,即使工作很多年也和没工作多久是一 样 的,甚至可能 还 不如 刚毕业 不久的大学生。 | |
绝对 好的,最完美的等等在 现实 中是不存在的,我 们 也没有那么多 时间 和金 钱 去 抠 得那么 细 。但在我 们 有限的 时间 里面 应该 是要做到更好的。做 项 目的 时 候,可能 项 目的性 质 不一 样 可能方 针 会不同。但 总 体来 说 , 效率高,可 读 性 强 ,容易重用,容易 维护 ,容易 扩张 等方面的要求是共通的。 | |
现 在都大多数系 统 来 说绝 大多数都是面向 对 象 设计 的。如果基本 设计 或者 详细设计 没有明确提出,或者没有UML 类图设计环节 。在开 发实 装的 时 候也尽量 时时 刻刻想到是面向 对 象的开 发 的。 | |
简单 介 绍 一下面向 对 象的几个概念 | |
类 : (Class)定 义 了一件事物的抽象特点。通常来 说 , 类 定 义 了事物的属性和它可以做到的(它的行 为 ) | |
对 象: (Object)是 类 的 实 例。能 够发 生 动 作的 实 体。 | |
方法: (Method)是一个 类 能做的事情。具体的行 为 内容定 义 。 | |
封装性: (Encapsulation)的面向 对 象程序 设计隐 藏了某一方法的具体 执 行步 骤 ,取而代之的是通 过 消息 传递 机制 传 送消息 给 它。一般分 为 公有,保 护 ,私有3种。 | |
继 承性: (Inheritance)是指,在某种情况下,一个 类 会有子 类 。子 类 比原本的 类 (称 为 父 类 )要更加具体化。也就是不 仅 可以容有父 类 的属性 还 可以 拥有自己的特性。 简 言之就是共性与个性共存。 这 个特性可以防止面向 过 程 设计 中的内存膨 胀 。能 够 减少重复代 码 。 | |
多 态 性: (Polymorphism)指方法在不同的 类 中 调 用可以 实现 的不同 结 果。根据子 类 的属性可以 实现 子 类 特有的 处 理。 这 个特性能 够 很好地 结 局 扩张 性 问题 。 | |
抽象性: (Abstraction)是简化复杂的现实问题的途径,它可以为具体问题找到最恰当的类定义,并且可以在最恰当的继承级别解释问题。就是定义好接口,具体实现有子类去做。 | |
在做具体项 目是 继 承性,多 态 性和抽象性是一个系 统设计 好坏的决定性因素。如果 设计 不好, 对 后面的 维护 , 变 更都需要花 费额 外的 时间 和金 钱 ,当然了多花 钱 的 话 能 够 增加GDP的。 | |
不过对 一个公司来 说 如果做的不好,稍微懂点代 码 的客 户 一看就会不是很 满 意的。如果需要你修改,那个 难 受只有自己知道。因 为 可能已 经单 体 测试 , 结 合 测试 都已 经结 束了。如果返工的 话 ,成本大大上升。 如果一个公司没有一套比较 灵活健全的流程的 话 ,是比 较 吃 亏 的,同 时对员 工的成 长 也不太有利。 |