2013-11-27 80 views

回答

2

首先Modelica只有一种类型的对象,类和其他对象(模型,记录,包)只是特殊类型的有限制的类。这意味着每个对象都必须遵循相同的规则,因此我将引用对象类,但是我将写入的内容将应用于每个Modelica对象。 这些变量每个对象实例化意味着,如果你有一个的Modelica类像以下各项之一:

partial class MySimpleClass 

    Real variable1; 

equation 

    variable1 = time; 

end MySimpleClass; 

当在声明一个成员变量如MySimpleClass instanceOfTypeMySimpleClass

class mySecondClass 

    MySimpleClass instanceOfTypeMySimpleClass; 
    MySimpleClass instanceTwoOfTypeMySimpleClass; 

    Real variable1; 

equation 

    variable1 = instanceOfTypeMySimpleClass.variable1; 
    instanceTwoOfTypeMySimpleClass.variable1 = 3; 

end mySecondClass; 

你声明一个实例变量。每次创建类的实例时,Modelica编译器都会为实例创建每个类的实例变量的一个副本,并由对象完成。您可以使用语法<instanceName>.<VariableName>从对象访问对象的实例变量。

Modelica编译器为每个实例分配一次类变量。 Modelica编译器在每次遇到该类的实例时为类变量分配内存。因此,所有实例DID不是共享类的类变量的相同副本,例如,对于Java中的静态类。换句话说,在该示例中,instanceOfTypeMySimpleClass.variable1instanceTwoOfTypeMySimpleClass.variable1是两个不同的变量。

“Modelica类的变量是按每个对象实例化的。”意在描述这种差异。我希望这有助于, Marco