首页 文章

Modelica:实例化期间的类变量

提问于
浏览
0

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

任何人都可以澄清这个陈述吗?

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> 从对象创建每个类's instance variables for the instance and this is done by objects. You can access an object' s实例变量的一个副本 .

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

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

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

相关问题