软考高级:耦合分类(内容耦合、公共耦合、外部耦合等)概念和例题

2024-05-24 15:51:26 浏览数 (1)

作者:明明如月学长, CSDN 博客专家,大厂高级 Java 工程师,《性能优化方法论》作者、《解锁大厂思维:剖析《阿里巴巴Java开发手册》》、《再学经典:《Effective Java》独家解析》专栏作者。

一、AI 讲解

耦合是衡量模块间相互依赖关系紧密程度的一个指标,在软件工程中,通常希望模块之间的耦合度越低越好,以提高代码的可维护性和可重用性。下面我将用表格的形式,对您提到的耦合分类进行讲解,并为每种耦合提供一小段示例代码(使用Java语言或伪代码)以帮助理解。

耦合类型

描述

示例代码

无直接耦合

模块之间没有直接的关系。

// 模块A和模块B之间没有直接联系,彼此独立工作。

数据耦合

模块之间通过参数传递基本数据类型进行通信。

// 模块A调用模块B,通过参数传递数据。public class A { public void methodA() { B.methodB(1); }}public class B { public static void methodB(int data) { // 使用数据 }}

标记耦合(Stamp Coupling)

模块之间通过复合数据类型(如结构体、类)进行通信,但不使用全部数据。

// 模块A调用模块B,传递对象,但B只用对象的一部分。public class Data { int part1; int part2;}public class A { public void methodA() { Data data = new Data(); B.methodB(data); }}public class B { public static void methodB(Data data) { // 只使用data的part1 }}

控制耦合

一个模块控制另一个模块的逻辑流程,通常通过传递控制参数实现。

// 模块A调用模块B,并通过参数控制B的逻辑流程。public class A { public void methodA() { B.methodB(true); }}public class B { public static void methodB(boolean flag) { if (flag) { // 逻辑1 } else { // 逻辑2 } }}

外部耦合

模块之间共享一个外部的环境(如全局变量、文件系统)。

// 两个模块共享同一个全局变量。public class Global { public static int sharedData;}public class A { public void methodA() { Global.sharedData = 1; }}public class B { public void methodB() { int data = Global.sharedData; }}

公共耦合

两个或多个模块共享同一个全局数据结构。

// 模块A和模块B都使用同一个全局数据结构。public class SharedData { public static int data;}public class A { public void methodA() { SharedData.data = 1; }}public class B { public void methodB() { int useData = SharedData.data; }}

内容耦合

一个模块直接使用另一个模块的内部数据或逻辑结构。

// 模块A直接访问和修改模块B的内部数据。public class A { public void methodA() { B.internalData = 1; // 直接修改B的内部数据 }}public class B { public static int internalData;}

二、AI 出题

  1. 下列哪种耦合方式的耦合度最低? A. 数据耦合 B. 控制耦合 C. 外部耦合 D. 内容耦合
  2. 如果两个模块通过参数传递基本数据类型进行通信,这种耦合类型是? A. 无直接耦合 B. 数据耦合 C. 标记耦合 D. 控制耦合
  3. 当模块之间共享全局变量时,这种耦合被称为? A. 外部耦合 B. 公共耦合 C. 控制耦合 D. 内容耦合
  4. 模块A调用模块B,并通过对象传递数据,但模块B只使用了传递对象的一部分数据,这种耦合类型是? A. 数据耦合 B. 标记耦合 C. 控制耦合 D. 内容耦合
  5. 下列哪种耦合方式耦合度最高? A. 数据耦合 B. 标记耦合 C. 外部耦合 D. 内容耦合
  6. 当一个模块直接访问另一个模块的内部数据时,这种耦合被称为? A. 外部耦合 B. 公共耦合 C. 控制耦合 D. 内容耦合

答案及解析:

  1. A. 数据耦合。因为数据耦合只涉及基本数据类型的传递,是耦合度最低的形式

。 2. B. 数据耦合。这是数据耦合的典型例子,通过基本数据类型进行模块间通信。 3. A. 外部耦合。共享全局变量属于外部耦合的范畴。 4. B. 标记耦合。因为虽然通过对象传递数据,但只使用了对象的一部分。 5. D. 内容耦合。内容耦合是耦合度最高的形式,因为一个模块直接依赖另一个模块的内部结构或数据。 6. D. 内容耦合。直接访问或修改另一个模块的内部数据是内容耦合的特征。

0 人点赞