OOP Designproblem (Import)

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

M0rgenstern

Betreff: OOP Designproblem (Import)

BeitragMi, Apr 03, 2013 22:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Leute,
Bevor jemand fragt: Ja, ich habe die Forensuche bedient. Ich weiß, dass ich Dateien nicht zyklisch importieren kann und das mit Include umgehen könnte (was ich aber nicht will, da das das Problem nur verschleiert).

Mein Problem ist folgendes:
Ich habe Klassen, die Ausnahmen im Programm darstellen.
Diese Ausnahmen werden in meinem kompletten Spiel genutzt, falls ein Fehler auftritt, oder eine Funktion auf eine Art und Weise benutzt wird, wie man sie nicht nutzen soll. Ganz normales Exception Handling eben.

Die Exceptions sind folgendermaßen aufgebaut:
Es gibt eine abstrakte Klasse Exception, von der sich alle anderen konkreten Ausnahmen ableiten.
Jetzt haben die Exceptions ein Attribut, das ihnen mitteilt, wann sie aufgetreten sind, also einen Zeitstempel.

Der Zeitstempel wiederrum besteht aus einem Datum und einer Uhrzeit.
Bei diesen Klassen können jedoch auch Fehler auftreten, welche dann eine Exception auslösen.

Das heißt im Klartext: Die Exceptions benötigen die Zeitstempel Klasse und die Zeitstempel Klasse sowie die Datums und Uhrzeit Klasse benötigen die Exceptions.
Mit Import sieht das natürlich ganz schön blöd aus, will heißen, es funktioniert nicht.
Ich könnte natürlich Include benutzen, das würde jedoch nur überdecken, dass das Design meines Codes nicht stimmt.
Als Zusatzinfo: Ich arbeite mit BLIde und das ganze Projekt ist eine Managed Solution.
Das heißt: Zeitstemel Klassen und Exception Klassen sind jeweils eigene Programmteile, die auch unabhängig voneinander in der Solution stehen. Allein schon von BLIde aus lassen sie sich nicht gegenseitig mit Include einbinden.

Mein Problem liegt also nicht dabei, dass ich nicht weiß, wie ich das Problem umgehen kann, sondern, dass ich Schwierigkeiten habe, das ganze so zu strukturieren, dass dieses Problem gar nicht erst auftritt.

Ich habe bereits versucht, ein zusätzliches Programm anzulegen, das abstrakte Überklassen der Zeit-Klassen enthält und dieses Programm dann in die Exceptions zu importieren.
Das Problem tritt dann jedoch bei "New" auf:
Die abstrakte Timestamp Klasse kennt das New der konkreten Timestamp Klasse nicht, und somit funktioniert in einer Exception sowas wie "New TTimeStamp" natürlich nicht.

Wäre wirklich super, wenn mir jemand nen Anstoss in die richtige Richtung geben würde, wie man sowas designtechnisch lösen kann.

Lg,
M0rgenstern

DAK

BeitragDo, Apr 04, 2013 11:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Brauchst du die Timestamp-Klasse überhaupt?
Wenn du nur einen Timestamp willst, nimm doch z.B. einen Unicode-Timestamp, den du in einem int speicherst und gib deiner Exception-Überklasse Methoden zum setzen und lesen des Timestamps. Aus diesen Methoden heraus kannst du so viele Exceptions werfen wie du willst, ohne dass es Probleme gibt.

Wenn du Timestamps auch in anderen Klassen brauchst, mach eine Klasse Timestampable, die die Timestamp-Funktionen inkludiert und lass deine Exception-Klasse davon erben.
Gewinner der 6. und der 68. BlitzCodeCompo

M0rgenstern

BeitragDo, Apr 04, 2013 14:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey.
ja, die Timestamp Klasse brauche ich auch anderswo.
Ich verstehe nicht ganz, warum exception von einer Überklasse von Datum erben soll.
Eine exception ist ja kein Datum, sie soll nur eines haben.
Das heißt, sie muss auf die Eigenschaften ihres Datums zugreifen können.

Vielleicht habe ich dich falsch verstanden.
Falls dem so ist, erkläre doch bitte nochmal was du meinst.

Lg, M0rgenstern

DAK

BeitragDo, Apr 04, 2013 17:29
Antworten mit Zitat
Benutzer-Profile anzeigen
In Java könnte man das mit einem Interface lösen, aber ich hab grad nicht im Kopf, ob es sowas in BMax gibt.
Und da sich ein Interface und eine abstrakte Klasse beinahe gleich verhalten, wäre das ein passender Ersatz.

Ich hab sowas in der Art gemeint:
user posted image
Gewinner der 6. und der 68. BlitzCodeCompo

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group