设为首页 加入收藏

TOP

1.3.4 信息隐藏
2014-03-11 13:02:20 来源: 作者: 【 】 浏览:89
Tags:1.3.4 信息 隐藏

1.3.4  信息隐藏

您已经看到,抽象要求为每个模块编写功能规范,描述外部的或者公开的状况。此外,抽象还可以帮助确定应该隐藏的细节,也就是不应该出现在规范中而是应该私有的细节。信息隐藏原则指出,不仅应该在模块内部隐藏这些细节,还应该确保其他模块不会干扰这些隐藏的细节。

当编写一个模块的规范时,必须明确可以在模块中隐藏的细节。信息隐藏原则不仅涉及隐藏这些细节,而且还包括让这些细节在模块外不可访问。理解信息隐藏的方法之一是假想围绕着程序执行的不同任务的墙。这些墙可以阻止任务缠绕在一起,这些围绕着任务的墙阻止其他任务"看到"某个任务是如何执行的。

注释:所有的模块以及ADT都应该隐藏一些内容

然而,模块不可能完全独立。尽管MyProgram不知道sort是如何执行的,但是它必须知道sort的任务是什么,以及如何执行初始化。例如,假定程序要对某个已经排序的名字数组执行操作,这个程序可能需要在数组中搜索某个名字,或者按照字母表顺序显示名字。因此这个程序需要一个对名字数组排序的sort函数。尽管程序的其余部分知道sort可以对数组排序,但是并不关心sort如何完成任务。

因此,考虑墙的一个小裂缝,如图1-2所示。这个裂缝不够大,因此外界无法看到函数内部的运行状况,但是数据可以从这个裂缝进入并输出。这个裂缝就是函数的原型、声明或者头部。这个裂缝包含了函数或者方法的名称、参数列表以及返回类型。例如,可以向函数sort传递一个数组,这个函数将返回一个已经排序的数组。输入和输出已经由函数规范的条款规定:如果以这种方式使用函数,函数将执行这些确定的操作。

假定开发了更为快速的排序算法,由于函数sort独立于程序中的其他模块,因此新的算法可以在sort函数中实现而不影响其他模块。这样,如果MyProgram使用了sort而执行排序的算法以及实现发生了改变,则MyProgram不受影响,如图1-3所示。墙阻止sort的算法影响MyProgram的算法。

提示:信息隐藏限制了处理模块和数据的方式。作为模块的用户,不需要担心模块的实现细节。作为模块的实现者,不需要担心模块的使用。
 

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇1.3.2 特殊情况 下一篇1.3.5 最小且完整的接口

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Libevent C++ 高并发 (2025-12-26 00:49:30)
·C++ dll 设计接口时 (2025-12-26 00:49:28)
·透彻理解 C 语言指针 (2025-12-26 00:22:52)
·C语言指针详解 (经典 (2025-12-26 00:22:49)
·C 指针 | 菜鸟教程 (2025-12-26 00:22:46)