Wir haben die Security-Objekte: S0, S1,
S2
und X0.
S0 trifft eine Aussage für alle Objekte einer
Klasse bzw. davon abgeleiteter Klassen.
S1 beschreibt eine abweichende Aussage für eine
bestimmte abgeleitete Klasse und S2 nur für ein ganz bestimmtes
Objekt.
X0 beschreibt alle übrigen Fälle - d.h. für die Objekte
anderer Klassen.
Man kann die Objekte wie folgt in einem Security-Set zusammenstellen:
Set = { S2, S1, S0, X0 }
und erhält das gewünschte Verhalten.
Ein Alternative ist:
Set = { S0, X0}
|
spezializations
|
S1
|
spezializations
|
S2
Das Resultat ist das gleiche, aber für den Zugriff auf ein Objekt, für das X0 eine Aussage macht, werden jetzt 2 überflüssige Tests eingespart.
Security-Objekte werden dauernd gelesen, ganz selten geschrieben. Deshalb ist es sinnvoll: