AREA in spezialisierten Klassen

    CLASS Hydrologische_Einzugsgebiet (ABSTRACT) =
      Geometrie : MANDATORY GeometryCHLV95_V1.Area;
      objectid : MANDATORY 0 .. 999999;
    END Hydrologische_Einzugsgebiet;

    CLASS Einzugsgebiet_gross
    EXTENDS Hydrologische_Einzugsgebiet =
    END Einzugsgebiet_gross;

    CLASS Einzugsgebiet_klein
    EXTENDS Hydrologische_Einzugsgebiet =
    END Einzugsgebiet_klein;

    CLASS Einzugsgebiet_mittel
    EXTENDS Hydrologische_Einzugsgebiet =
    END Einzugsgebiet_mittel;

Geometrien von „gross“ und „mittel“ überlappen sich. ilivalidator meldet dies als Fehler. In der Annahme, dass ilivalidator recht hat, kann mir das jemand anhand des Referenzhandbuches erklären.

Auf den ersten Blick war ich erstaunt über dieses Resultat (dass der ilivalidator Überlappungen als Fehler meldet), weil es scheint, als ob die Subklassen unabhängig voneinander sein sollten.

Aber auf den zweite Blick ist doch GeometryCHLV95_V1.Area eigentlich ein Datentyp, der implizit einen CONSTRAINT beinhaltet. Also wie wenn man auf Stufe der abstrakten Superklasse einen CONSTRAINT für einen numerischen Datentypen oder eine Zeichenkette definieren würde. Ein solcher CONSTRAINT wäre ja auch für alle Subklassen gültig, oder nicht?

Das steht zwar so nicht im RefHB, aber so interpretiere ich das in der objektorientierten Modellierung…

Also ein SET CONSTRAINT, der über alle vererbten Klassen hinweg aggregiert gilt? Geht mir noch nicht in den Grind.

Ja, stimmt. Mir auch nicht…

… scheint aber trotzdem so zu sein: