13.07.2015 Views

Perl 语言编程 - Linux教程

Perl 语言编程 - Linux教程

Perl 语言编程 - Linux教程

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

当 一 个 对 象 调 用 attack( 攻 击 ) 方 法 时 , 产 生 的 效 果 可 能 取 决 于 该 对 象 是 一 把 剑 还 是 一 支箭 。 可 能 这 两 者 之 间 并 没 有 什 么 区 别 —— 如 果 剑 和 箭 都 是 从 通 用 的 武 器 类 中 继 承 他 们 的 攻 击(attack) 性 质 的 话 。 但 是 如 果 两 者 的 行 为 不 同 , 那 么 方 法 分 选 机 制 总 是 会 选 择 最 适 合 该对 象 需 要 的 那 个 attack 方 法 。 总 是 为 某 一 类 型 的 特 定 对 象 选 择 最 合 适 的 行 为 的 特 性 叫 做多 样 性 。 它 是 " 不 在 意 " 的 一 个 重 要 形 式 。当 你 在 实 现 一 个 类 的 时 候 , 你 必 须 关 注 那 些 对 象 的 “ 内 脏 ”, 但 是 当 你 使 用 一 个 类 的 时 候 , 你应 该 把 这 个 对 象 当 作 一 个 黑 盒 子 。 你 不 用 知 道 内 部 有 什 么 , 你 也 不 需 要 知 道 它 是 怎 么 工 作 的 ,而 且 你 和 这 个 黑 盒 子 的 交 互 只 用 它 的 方 式 进 行 : 通 过 类 提 供 的 方 法 。 即 使 你 知 道 这 些 方 法 对对 象 做 些 什 么 处 理 , 你 也 应 该 抑 制 住 自 己 干 的 冲 动 。 就 好 象 遥 控 电 视 一 样 , 即 使 即 使 你 知 道电 视 里 面 是 怎 样 运 转 的 , 如 果 没 有 特 别 充 分 的 理 由 , 也 不 应 该 在 电 视 里 上 窜 下 跳 地 摆 弄 它 。<strong>Perl</strong> 可 以 让 你 在 需 要 的 时 候 从 类 的 外 部 观 察 对 象 的 内 部 。 但 是 这 样 做 就 打 破 了 它 的 封 装 的原 则 —— 所 有 对 对 象 的 访 问 都 应 该 只 通 过 方 法 。 封 装 断 开 了 接 口 的 公 开 ( 对 象 应 该 如 何 使 用 )和 实 现 ( 它 实 际 上 是 如 何 运 转 的 ) 之 间 的 联 系 。<strong>Perl</strong> 除 了 一 个 未 写 明 的 设 计 者 和 用 户 之 间的 契 约 之 外 没 有 任 何 其 他 明 确 的 接 口 。 双 方 都 依 靠 常 识 和 公 德 来 运 做 : 用 户 依 靠 归 档 的 接 口 ,而 设 计 者 不 会 随 便 打 破 该 接 口 。<strong>Perl</strong> 并 不 强 制 你 使 用 某 种 编 程 风 格 , 并 且 它 也 不 会 有 一 些 其 他 的 面 向 对 象 的 语 言 里 的 私 有性 的 困 惑 。 不 过 ,<strong>Perl</strong> 的 确 会 在 自 由 上 令 人 迷 惑 , 并 且 , 作 为 一 个 <strong>Perl</strong> 程 序 员 , 你 所 拥有 的 一 个 自 由 就 是 根 据 自 己 的 喜 好 选 择 或 多 或 少 的 私 有 性 。 实 际 上 ,<strong>Perl</strong> 可 以 在 它 的 类 里面 有 比 C++ 更 强 的 私 有 性 。 也 就 是 说 ,<strong>Perl</strong> 不 限 制 你 做 任 何 事 情 , 而 且 实 际 上 它 也 不 限制 你 自 己 约 束 自 己 —— 假 如 你 必 须 这 么 做 的 话 。 本 章 稍 后 的 “ 私 有 方 法 ” 和 “ 用 做 对 象 的 闭 合 ”节 演 示 了 你 如 何 才 能 增 大 自 律 的 剂 量 。不 过 我 们 承 认 , 对 象 的 内 涵 比 我 们 这 里 说 的 多 得 多 , 而 且 有 很 多 方 法 找 出 面 向 对 象 的 设 计 的更 多 内 容 。 但 是 那 些 不 是 我 们 这 里 的 目 标 。 所 以 , 我 们 接 着 走 。12.2 <strong>Perl</strong> 的 对 象 系 统<strong>Perl</strong> 没 有 为 定 义 对 象 , 类 或 者 方 法 提 供 任 何 特 殊 的 语 法 。 相 反 , 它 使 用 现 有 的 构 造 来 实 现这 三 种 概 念 。( 注 : 现 在 有 了 一 个 软 件 重 用 的 例 子 了 !)下 面 是 一 些 简 单 的 定 义 , 可 以 让 你 安 心 些 :一 个 对 象 只 不 过 是 一 个 引 用 ... 恩 , 就 是 引 用 。因 为 引 用 令 独 立 的 标 量 代 表 大 量 的 数 据 , 所 以 我 们 不 应 该 对 把 引 用 用 于 所 有 对 象 感 到 奇 怪 。从 技 术 上 来 讲 , 对 象 不 太 适 合 用 引 用 表 示 , 实 际 上 引 用 指 向 的 是 引 用 物 。 不 过 这 个 区 别 很快 就 被 <strong>Perl</strong> 的 程 序 员 淡 化 了 , 而 且 因 为 我 们 觉 得 这 是 一 个 很 好 的 转 喻 , 如 果 这 么 用 合 适286

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!