1.什么是模块化,为什么要模块化?
模块化是指解决一个复杂问题时,自顶向下逐层把系统划分成若干模块的过程。对于整个系统来说,模块是可组合、分解和更换的单元。
模块具有以下几种基本属性:接口、功能、逻辑、状态,功能、状态与接口反映模块的外部特性,逻辑反映它的内部特性。
模块化是一种处理复杂系统分解为更好的可管理模块的方式。
模块化的好处
避免命名冲突(减少命名空间污染)
灵活架构,焦点分离,方便模块间组合、分解
多人协作互不干扰
高复用性和可维护性
2.衡量模块独立的定性标准是什么?用自己的话表达其含义
内聚和耦合
内聚是一个模块内部各成分之间相关联程度的度量。若一个模块内各元素(语句之间、程序段之间)联系的越紧密,则它的内聚性就越高。
耦合是模块之间依赖程度的度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。
内聚和耦合是密切相关的,与其它模块存在强耦合的模块通常意味着弱内聚,而强内聚的模块通常意味着与其它模块之间存在弱耦合。模块设计追求强内聚,弱耦合。
3.如何理解信息隐藏和局部化?用自己的话或者例子表达其含义
信息隐藏和局部化是计算机科学中两个重要的概念,它们常常被用于数据处理和编程语言设计中。
信息隐藏是指将某些数据或实现细节隐藏在程序的内部,使得外部用户无法直接访问这些数据或细节。这样做可以提高程序的安全性和稳定性,同时也可以降低程序的复杂度。例如,一个类中的私有成员变量就是一个很好的信息隐藏的例子。这些私有成员变量只能通过类的公有方法访问,外部用户无法直接访问这些变量,从而保证了程序的安全性和稳定性。
class MyClass {
private:
int myPrivateVar;
public:
void setMyPrivateVar(int val) {
myPrivateVar = val;
}
};
在这个示例中,myPrivateVar
是一个私有成员变量,只能通过 setMyPrivateVar
方法进行访问。
局部化是指将程序中的不同部分分开处理,使得每个部分只处理它所需要的数据和功能。这样做可以提高程序的可维护性和可扩展性。例如,在一个大型的程序中,可以将不同的功能模块分开处理,每个模块只负责自己的功能,这样可以使得程序更加清晰和易于维护。此外,局部化还可以提高程序的性能,因为只有必要的数据和功能被处理,不必处理不必要的数据和功能。
void processA(int data) {
// 处理 A 功能模块需要的数据和功能
}
void processB(int data) {
// 处理 B 功能模块需要的数据和功能
}
int main() {
int data = 10;
processA(data);
processB(data);
return 0;
}
在这个示例中,processA
和 processB
分别处理不同的功能模块,每个模块只处理它所需要的数据和功能。