接口和实现

概念定义

我们在本章提出的两个例子里,接口定义用作架构定义过程的一部分。术语“接口”并非来自Modelica。这个词是计算机语言中的一个常用术语。在Modelica里,我们可以认为接口是定义了所有外部可见细节的模型。你也可以把一个接口当作没有任何内部细节的“壳”。出于这个原因,接口模型几乎总是带有partial标记。

另一个重要的概念就是“实现”。这是从计算机语言世界借来的另一个词。接口用于简单地描述模型外部可见的部分。而实现除此以外还包括了内部细节。实现包括真正实现该接口所需的信息。某些情况下,该模型可能只是接口的部分实现(这种情况下,它也应该标记为partial)。而在另一些情况下,该模型可以代表特定子系统的架构。其中的进一步实现细节则在推迟到模型层级另一级(这是partial模型的另一种情况)。不过大部分的时间,这些实现将是特定子系统的完整(非partial)模型。

插件兼容性

当我们谈论接口和实现所要考虑的重中之重就是插件兼容性的概念。我们在传感器比较例子已经讨论过,模型X插件兼容于模型Y的条件是,每个Y公共变量都能在X找到具有相同名称的对应公共变量。此外,每个X的上述变量本身必须是插件兼容于其在Y内的对应变量。这可以确保如果你将Y类型的组件更换为X类型的组件,你需要的一切(参数,连接器等)将依然存在、并仍将兼容。不过,请注意如果X插件兼容于Y,这意味着Y插件兼容于X(我们稍后会看到)。

一般来说,大多数情况我们关注的插件兼容性问题是围绕着给定的实施是否插件兼容于给定的接口。正如我们在这些例子里看到的一样(我们也马上会回顾),Modelica的配置管理功能依赖于接口和实现间的关系。而配置管理的流程则是着围绕插件的兼容性为中心的。

结论

必须要知道,我们不但应该以接口与实现模型为基础进行思考。而且,我们也要正式创建接口模型,并区分接口模型与具体实现。因为,在创建架构驱动的模型时,上述思路都非常有用。