2012-04-16 6 views
0

目的:すべての派生クラスは、基本クラスからいくつかのデフォルト方程式を継承する必要があります。デフォルトの方程式が派生クラスに対して有効でないときは、それを再宣言する必要があります。メンバーは予想通りに交換されません。なぜですか?

ここでは多少ばかげた最小限の例があります。いくつかの神秘的な理由

package Pkg 

    class Equations 
    Real x; 
    end Equations; 

    class DefaultEquations 
    extends Equations; 
    equation 
     x = 0.0; 
    end DefaultEquations; 

    class Base 
    replaceable DefaultEquations equations extends Equations; 
    end Base; 

end Pkg; 

model DuplicateEquations 

    import Pkg.*; 

    class CustomizedClass 
     extends Base; 
     redeclare Equations equations; 
     equation 
     equations.x = 3; 
    end CustomizedClass; 

    CustomizedClass customized; 

end DuplicateEquations; 

は、デフォルトの式がオーバーライドされていない場合:

omc Test.mo Package.mo 
class DuplicateEquations 
    Real customized.equations.x; 
equation 
    customized.equations.x = 0.0; 
    customized.equations.x = 3.0; 
end DuplicateEquations; 

ですが、なぜでしょうか?なぜ両方ですかx=0x=3が生成されていますか?

私がpackage宣言をコメントアウトした場合、私は予想されるx=3の式しか得られません。

答えて

関連する問題