跳至内容

建模理论与实践/组件化建模

来自维基教科书,开放世界中的开放书籍
  1. 图的概念是表示常量或变量之间二元关系的基础。
  2. 通过将复杂图划分为组件来保持概述。
  3. 组件的基本概念可以从两个方面进行推广
    1. 关于组件之间连接强度的(连接性),导致耦合和内聚
    2. 关于组件与哪些外部元素相关(模块化),导致接口的概念

二元关系,n元关系。

常量与变量

[编辑 | 编辑源代码]

节点的两种含义

  • 常量:一辆汽车,“马克斯·迈尔驾驶着GO-123-FX汽车”。
  • 变量:任何汽车,“人驾驶汽车”,但属于特定类型(人,汽车,...)
一个具有 6 个顶点和 7 条边的 的图表。
1 2 3 4 5 6
1 X X
2 X X
3 X X
4 X X X
5 X X X
6 X

理解 的概念是基础。我们在这里只简要指出一些相关的概念。

一组元素之间的这种关系可以用矩阵形式或图表来表示。在大多数情况下,图表可以使读者更好地理解关系。请注意,这仅仅是视觉效果,因为在逻辑上没有区别。

此外,图不必是对称的,就像上面的图一样,它们的元素也可以拥有从自身指向自身或从自身出发并指向自身的边。

因此,图的概念为建模中的关系处理提供了形式基础。有关图论更精确和全面的介绍,请访问 图(维基百科)

还有一种关于图的更计算的视角,它被视为 数据类型 并对其执行操作,但是这不是我们在这里的关注点。

组件化结构

[编辑 | 编辑源代码]

将图细分为组件是结构化的基本思想。但是,我们需要稍微放宽组件的概念,以便使其真正有用。此外,组件可以细分为子子子...组件,因此我们讨论一些关于何时停止这种细分的经验法则。

三个村庄的街道地图。

街道地图:3 个村庄 -> 分解为 3 张地图(每个村庄一张)

一个具有三个连通分量的图。

一个 组件 是一个子图,其中任何两个顶点可以通过路径相互连接,并且该子图没有与超图中的任何其他顶点连接。

示例

一方面,这个组件的概念非常清晰,另一方面,它并不十分有用。为了涵盖像上面的例子(地图、街道、村庄)这样的情况,需要以以下方式推广组件的概念。

关于连接性的组件

连接性 询问需要移除多少个元素(节点或边)才能使剩余的节点彼此分离。相关概念:稀疏 图,代数连接性

进一步的概念

PS 另一个泛化是 模块 的概念,见类型。

组件的组成部分

[编辑 | 编辑源代码]

“小”组件 -> 合适的大小(软概念,通过经验解释)

  • 模块 中,每个顶点 ,要么 X 中的每个成员都是 v 的非邻居,要么 X 中的每个成员都是 v 的邻居。模块导致实体类型。
  • Kleppe, Anneke (2009). 软件语言工程. Addison-Wesley. ISBN 978-0-321-55345-4.
华夏公益教科书