目的: すべての派生クラスは、基本クラスからいくつかのデフォルトの式を継承する必要があります。デフォルトの式が派生クラスに対して有効でない場合は、再宣言する必要があります。
これは、ややばかげた最小限の例です。
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=0
と の両方がx=3
生成されるのはなぜですか?
package
宣言をコメントアウトすると、期待されるx=3
式だけが得られます。