OOP Designproblem (Import)
Übersicht

![]() |
M0rgensternBetreff: OOP Designproblem (Import) |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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: |
||
Gewinner der 6. und der 68. BlitzCodeCompo |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group