0

Modelica 类的变量是按对象实例化的。

谁能澄清这个说法?

4

1 回答 1

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

“Modelica 类的变量是按对象实例化的。” 旨在描述这种差异。

我希望这会有所帮助,马可

于 2013-11-28T10:51:05.450 回答