000
27.12.2007, 18:58 Uhr
firefoxxi
|
Hallo,
erstmal vorweg ich habe die Suchfunktion nicht benutzt weil ich nicht wusste nach was genau ich suchen soll. Denn das was ich suche ist wohl eher ein allgemeines Konzept der OOP, falls es überhaupt eine elegante Lösung für das Problem gibt. Ich war gerade dabei die Klassenstruktur für ein kleines Spiel zu entwerfen. Dabei soll es eine abstrakte Basisklasse Player geben, die die Grundlage für alle späteren KI Implementationen sein soll. Damit die KI auch sinnvoll handeln kann, muss sie jedoch auch in der Lage sein zum Einen eigene Eigenschaften wie ihr immomentiges Vermögen abzurufen, zum Anderen auch auf diese Eigenschaft bei anderen Spieler zugreifen zu können. Schon der erste Punkt macht mir Probleme. Wenn ich diese Eigenschaft in der selben Klasse verwalte, in der auch die KI implementiert wird, dann ist die KI doch in der Lage ihr Geld zu verändern, obwohl sie dies eigentlich nicht selbstständig können sollte. Lagere ich diese Information aber auf eine 2. Klasse aus, so besitzt zwar die KI nur noch leserechte, doch wie erlaube ich dann der Game Klasse, bei der alle Fäden zusammenlaufen und die eben das Geld ändern können sollte, den Schreibzugriff auf diese Eigenschaft? Das einzige was mir bis jetzt als Lösung einfällt, ist eine 3. Klasse zu entwerfen die nur Lesezugriff bietet und die eben die 2. Klasse kapselt und eben nur die 3. Klasse dem Spieler zu übergeben. Dann muss ich aber für alle Eigenschaften die ein Objekt sind diese Kopieren bevor ich sie dem Spieler übergebe, da ich ansonsten ja Referenzen übergebe. Und was mache ich, wenn mein Objekt wiederum Eigenschaften enthält, die Objekte sind. Dann müsste ich ja diese auch Kopieren. Oder gibt es einen weg eine Klasse mit allen referenzierten Klassen zu kopieren. Diese Lösung scheint mir nicht gerade sonderlich elegant abgesehen von der effizienz, ist aber die Einzige die mir einfällt. Vielleicht haben einige von euch ja einen besseren Vorschlag. -- Gruß firefoxxi
http://firebird-browser.de/ |