Woche 1 (13.10 – 19.10)

Fortschritt:

  • Das Design steht soweit:
    Alle Objekte werden vom IMemObjekt abgeleitet. Dieses kümmert sich um Garbage Collection und grundsätzliche Funktionalität wie toString funktion, Zurückgeben der Objektgröße usw.

  • Davon abgeleitet werden die Manager (Ressourcen, Kernel, Logging, Sound….) sowie inGame-Objekte, welche wiederum als Interface für zeichenbare und nicht zeichenbare Objekte dienen.

  • Von den Managern werden die benötigten Objekte und Subsysteme abgeleitet (Resourcen, Streams…)

  • → das Ganze wird fast vollständig top-down programmiert.

Implementiert sind jetzt ein Singleton, das „Über-Objekt“, ein einfaches to-String Makro, sowie ein Macro zum Zurückgeben der Größe. Für die Bestimmung von Engpässen und Performancefressern gibt es jetzt einen selbstgeschriebenen Profiler.

Probleme:

In C++ ist Vererbung sehr unterschiedlich zu Java implementiert. Während in Java eine abhängige Instanz von allen Parent-Klassen erzeugt wird ist dem in C++ nicht so: im Grunde besteh keine Abhängigkeit zwischen abgeleitetem und ableitendem Objekt – Das macht die Implementierung einer toString-Funktion sehr schwierig. Fürs Erste gebe ich mich damit zufrieden nur einen Default-toString auszuführen, dem man zusätzliche Attribute für jede abgeleitete Klasse mitgeben kann – eine doppelt abgeleitete Klasse erbt also nur die toString Funktionalität des IMemObjects, nicht die der unmittelebaren Parent-Klasse.

ToDo:

Ein Resourcenmanager ist der nächste Schritt, mit dem ich String-Tables laden kann, welche ich dringend für meinen Profiler brauche. Ausserdem wäre ein Smart-Pointer toll, damit ich einen Garbage-Collector implementieren kann.

Tags: , , , ,