【发布时间】:2018-07-28 08:58:59
【问题描述】:
我无法理解模块的概念。他们是翻译单位吗?它们像 .ccp 文件和 .h 文件吗?
在我的教科书中,它被描述为,“模块化设计由一组模块组成,这些模块分别开发和测试。模块化编程实现了模块化设计,并受到过程语言和面向对象语言的支持。 C 编程语言通过由函数组成的库模块支持模块化设计。stdio 模块提供输入和输出支持,同时隐藏其实现细节;通常,scanf() 和 printf() 的实现以二进制形式随编译器一起提供。 .h 头文件提供了接口,这是我们完成源代码所需的全部。 本章介绍如何使用 C++ 在面向对象语言中创建模块,如何分别编译每个模块的源代码以及如何将编译后的代码链接到单个可执行二进制文件中。本章以对模块进行单元测试的示例结束。
模块
一个设计良好的模块是一个高度内聚的单元,它松散地耦合到其他模块。该模块解决了编程解决方案的一个方面,并尽可能多地隐藏了细节。编译器将模块的源代码独立于其他模块的源代码翻译成它自己的二进制代码单元。”
【问题讨论】:
-
也许可以得到一本更好的教科书——C 和 C++ 目前都没有这样实现模块。但是,它们确实提供了构建库所需的设施。
-
“模块作为语言特性”、“模块作为构建软件的方式”、“模块作为组织源文件的方式”等等,虽然相关,但它们都是不同的。也许你甚至不知道“模块”可能意味着这么多东西。你引用的文字反正不是很好。
-
我赞成这个问题,这似乎完全合理。我真希望我能对教科书投反对票。
-
这个问题的答案在您添加到这个问题的两个标签(module 和modular-design)的描述中。
-
这本书可能早在 C++ 委员会开始考虑模块之前就已经写好了。它使用“模块”一词作为“库”的同义词,尽可能少地暴露并经过彻底测试以证明是可靠的。在实践中,C 和 C++ 程序员已经创建了几十年的模块。单独构建的可执行代码块、Windows 上的 DLL、Unix 上的共享库。这种做法没有标准化,ISO 必须让每个人都同样不开心,而且当每个人都这样做了这么长时间时,这很难做到。
标签: c++ module modular-design