【发布时间】:2013-11-27 19:15:15
【问题描述】:
Modelica 类的变量是按对象实例化的。
谁能澄清这个说法?
【问题讨论】:
标签: modelica openmodelica
Modelica 类的变量是按对象实例化的。
谁能澄清这个说法?
【问题讨论】:
标签: modelica openmodelica
首先Modelica只有一种类型的对象,即类,而其他对象(模型、记录、包)只是有限制的特殊类型的类。这意味着每个对象都必须遵循相同的规则,因此我将引用对象类,但我将编写的内容将适用于每个 Modelica 对象。 变量是按对象实例化的,这意味着如果你有一个 Modelica 类,如下所示:
partial class MySimpleClass
Real variable1;
equation
variable1 = time;
end MySimpleClass;
当你在instanceOfTypeMySimpleClass中声明MySimpleClass等成员变量时:
class mySecondClass
MySimpleClass instanceOfTypeMySimpleClass;
MySimpleClass instanceTwoOfTypeMySimpleClass;
Real variable1;
equation
variable1 = instanceOfTypeMySimpleClass.variable1;
instanceTwoOfTypeMySimpleClass.variable1 = 3;
end mySecondClass;
你声明了一个实例变量。每次创建类的实例时,Modelica 编译器都会为该实例创建每个类的实例变量的副本,这是由对象完成的。您可以使用语法<instanceName>.<VariableName> 从对象访问对象的实例变量。
Modelica 编译器为每个实例分配一次类变量。 Modelica 编译器每次遇到该类的实例时都会为类变量分配内存。因此,所有实例不共享类的类变量的相同副本,例如,Java 中的静态类。换句话说,在这个例子中 instanceOfTypeMySimpleClass.variable1 和 instanceTwoOfTypeMySimpleClass.variable1 是两个不同的变量。
“Modelica 类的变量是按对象实例化的。”旨在描述这种差异。
我希望这会有所帮助, 马可
【讨论】: