《代码大全(二)》青少年教育丛书.pdfVIP

  • 63
  • 0
  • 约11.65万字
  • 约 79页
  • 2017-11-08 发布于浙江
  • 举报

《代码大全(二)》青少年教育丛书.pdf

第六章 模块化设计 75 第六章第六章 模块化设计模块化设计 第六章第六章 模块化设计模块化设计 目录目录 目录目录 6.1 模块化:内聚性与耦合性 6.2 信息隐蔽 6.3 建立模块的理由 6.4 任何语言中实现模块 6.5 小结 相关章节相关章节 相关章节相关章节 高质量子程序的特点:见第 5 章 高层次设计:见第 7 章 抽象数据类型:见第 12.3 节 “你已经把你的子程序放入我的模块中” “不,你已经围绕着我的子程序设计好了模块” 人们对于子程序和模块之间的区别往往不很注意,但事实上应该充分了解它们之间的区别, 以便尽可能地利用模块所带来的便利。 “Routine ”和“Modu1e ”这两个单词的意义是很灵活的,在不同的环境下,它们之间的区 别可能会变化很大。在本书中,子程序是具有一定功能的,可以调用的函数或过程,关于这一 点在第五章已经论述过了。 而模块则是指数据及作用于数据的子程序的集合。模块也可能是指,可以提供一系列互相 联系功能的子程序集合,而这些子程序之间不一定有公共的数据。模块的例子有:C 语言中的 源文件,某些 Pascal 版本中的单元及 Ada 语言中的“包”等等。如果你所使用的语言不直接支 持模块,那么可以通过用分别编程技术来模仿它,这也可以得到许多由模块带来的优点。 6.6.11 模块化:内聚性与耦合性模块化:内聚性与耦合性 6.6.11 模块化:内聚性与耦合性模块化:内聚性与耦合性 “模块化”同时涉及到子程序设计和模块设计。这是一种值得研究的,非常有用的思想方 法。 在 1981 年出版的《Software Maintenance Guidebook》一书中,Glass 和 Noiseux 认为模 块化给维护性带来的好处要比给结构带来的好处多得多,它是提高维护性的最重要因素。Lientz 和 Swanson 在《Software Maintenance Management》一书中引用的一项研究表明,89%的代码使 用者认为使用模块化编程改进了维护性(1980)。在一次理解测验中发现,采用模块化设计程序 的可读性要比不采用这种设计的程序可读性高 15% (1979)。 模块化设计的目标是使每个子程序都成为一个“黑盒子”,你知道进入盒子和从盒子里出来 的是什么,却不知道里边发生什么。它的接 口非常简单,功能明确,对任何一个特定的输入, 第六章 模块化设计 76 你都可以精确地预测它相应的输出结果。如果你的子程序像一个黑盒子,那么它将是高度模块 化的,其功能明确,接口简单,使用也灵活。 使用单独一个子程序是很难达到这一目的的,这也正是引入模块的原因。一组子程序常常 要使用一套公用的数据,在这种情况下,由于子程序间要共享数据,因而它们不是高度模块化 的,作为一个单个的子程序,它们的接口也不简单。但是,作为一个整体,这组子程序则完全 有可能为程序的其它部分提供一个简单的接 口,也完全有可能达到高度模块化这一目标 。 6.6.11..11 模块内聚性模块内聚性 6.6.11..11 模块内聚性模块内聚性 模块的内聚性准则,与单个子程序的内聚性准则一样,都是十分简单的。一个模块应该提 供一组相互联系的服务 。 比如一个进行驾驶控制模拟 的模块,其 中应含有描述汽车 目前的控制设置和目前速度的数 据。它可以提供像设定速度、恢复到刚才的速度、刹车等功能。在其 内部,可能还有附加的子 程序和数据来支持这些功能,但是,模块外的子程序则不需对它们有任何了解。如果这样的话, 那么这个模块的内聚性将是非常强的,因为模块中的每个子程序都是为提供驾驶控制模拟服务 的。 再 比如一个进行三角函数计算的子程序,模块中可能含有 Sin()、Cos()、Tan()、Arcsin()等 全部密切相关的三角函数子程序。如果这些子程序都是标准的三角函数,那么它们无须共享数 据,但这些子程序间仍然是有

文档评论(0)

1亿VIP精品文档

相关文档