Signalgast

Eine simple Methode zur Kommunikation zwischen C++-Objekten

Wissen | Know-how

In der objektorientierten Programmierung gehört der Observer (Beobachter) zu den Standardentwurfsmustern. Damit lassen sich Aktionen in einem Objekt auslösen, sobald in einem anderen etwas geschieht. Weil sich die Objekte dafür untereinander nicht kennen müssen, bleibt der C++-Code hübsch übersichtlich.

Ereignisorientierte Programmierung ist in grafischen Bedienoberflächen gang und gäbe: Klickt der Anwender auf einen Knopf, löst das irgendwo im Code irgendetwas aus. Auch und vor allem in Spielen kommunizieren Objekte miteinander. Man denke nur an den Fall, dass ein Gegner zerstört wird: Dann muss zum Beispiel an dessen Position eine Explosion erscheinen, der Punktestand aktualisiert und der Gegner aus der Liste feindlicher Objekte gestrichen werden. Würde man dieses Verhalten so implementieren, dass die Objekte direkt die passenden Funktionen der Zielobjekte aufrufen (Explosion auslösen, Score erhöhen, Gegner löschen), führte das unweigerlich zu Spaghetticode.

Zur Lösung dieses Problems bieten C++-Bibliotheken wie Boost oder Qt Signalisierungsfunktionen an [1, 2, 3]. Vor allem der Signal/Slot-Mechanismus in Qt lockt mit einfacher Bedienung. Allerdings schleppt man mit beiden Frameworks eine Menge Ballast mit sich herum. ...

Sie möchten wissen, wie es weitergeht?

Als c't-Plus-Abonnent gratis lesen

Anmelden als c't-Plus-Abonnent

weiterführende Links

Anzeige
Anzeige