Modelica:实例化期间的类变量

时间:2013-11-27 19:15:15

标签: modelica openmodelica

  

每个对象实例化Modelica类的变量。

有人可以澄清这个陈述吗?

1 个答案:

答案 0 :(得分:2)

首先,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编译器每次遇到该类的实例时都会为类变量分配内存。因此,所有实例 DID NOT 共享类的类变量的相同副本,例如,对于Java中的静态类。换句话说,在本例中, instanceOfTypeMySimpleClass.variable1 instanceTwoOfTypeMySimpleClass.variable1 是两个不同的变量。

“每个对象实例化Modelica类的变量。”意在描述这种差异。

我希望这有帮助, 马可