2013-11-27 43 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