Lade...
 

Messages und Vererbung

Messages und Vererbung

Messages werden an alle Module/Fenster verteilt

Grundsätzlich wird eine Message, die per SendMsg gesendet wird, von allen bereits geladenen Modulen und geöffneten Fenstern empfangen, die in ihrer Aktionsliste auf diese Message reagieren. Zusätzlich können Module über die Angabe der Message im triggeredBy der Extern-Anweisung des Moduls automatisch nachgeladen werden, sobald die entsprechende Message ausgelöst wird. Die nachgeladenen Module können auf diese Nachricht direkt reagieren. Auch ein Fenster, das in der Aktionsliste eines Moduls für eine Message geöffnet wird, kann in der Fenster-Aktionsliste diese Message behandlen (nach dem INITIALIZE).

Abgeleitete Module reagieren durch geerbte Aktionslisten auf Messages von Basismodulen

Bei der Vererbung von Modulen wird die gesamte Aktionsliste des Basismoduls an jedes davon abgeleitete Modul (0-n) weitergegeben und kann dort im einzelnen überschrieben werden. Das heißt aber auch, dass alle abgeleiteten Modul auch auf die Messages empfange, die in der Aktionsliste des Basismoduls definiert wurden. Das hat natürlich den praktischen Effekt, dass alle abgeleiteten Module eines Modul, das auf eine ACCOUNT_CHANGED-Message hin das Fenster neu befüllt, ebenfalls ihre Fenster beim Empfang dieser Message neu befüllen. 

Falls dieser Mechanismus in einem bestimmten Fall störend ist, dann sollte geprüft werden, ob die Message wirklich in das Basismodul gehört. Alternativ kann in dem abgeleiteten Modul auch die Aktionsliste für die problematische Message mit einem NoOperation überschrieben werden.

Basismodule reagieren nie auf eine Message

Eine wichtige Festlegung im Zusammenhang mit Messages und Vererbung ist diejenige, dass ein Basismodul (also ein Modul, von dem mindestens eine Ableitung über die Extern-Angabe bekannt ist) nie instanziiert werden kann. Mit anderen Worten: Das Modul kann nie direkt eine Message empfangen, die Message wird immer von dem abgeleiteten Basismodul empfangen. Dies ist eine für das ClassiX-System als sinnvoll erachtete Regel, da ein abgeleitetes Modul meistens die Aufgaben des abgeleiteten Moduls übernimmt und um zusätzliche Funktionalität ergänzt. Somit wäre es störend, wenn als Reaktion auf eine Message sowohl das Basismodul, als auch das abgeleitete Modul ein eigenes Fenster öffnen würden.