Speicherbedarf dieser Implementierung
-
Hallo, Cpp Community.
Ich möchte beliebig komplexe 2D-Objekte mit einem OOP Ansatz als abstrakte Klassen repräsentieren.
Es gibt eine abstrakte Basisklasse
CZeichenObjektDiese Basisklasse hat die rein virtuelle Methode
drawObject()Nun kann man zum Beispiel eine Kreisklasse definieren, die von
CZeichenObjekterbt und
drawObject()so implementiert, dass beim Aufruf ein Kreis gezeichnet wird.
Außerdem habe gibt es eine Liste mit Pointern auf die Basisklasse.
In diese Liste kann man nun beliebige Zeichenobjekte reinpacken.
Wenn alles gezeichnet werden soll, muss diese Liste nur durchlaufen werden und diedrawObject()Methode aufgerufen werden. Also z.b.
meineZeichenObjektListe[i]->drawObject();Meine Frage ist wie folgt:
Ist diese Implementierung ineffizient, da jedes Zeichenobjekt in der Liste eine eigenedrawObject()Methode hat?
In meinem Programm wird es nur ca. 20 verschiedene Objekte geben, aber dafür sehr viele.Alternativ habe ich mir überlegt, die Zeichenmethoden nicht in den Zeichenklassen zu definieren un wenn ich die Liste durchlaufe einfach die Objekte zu unterscheiden und je nach dem eine Zeichenmethode aufzurufen.
Somit wären die Zeichnemethoden nur einmal, zentral vorhanden.
Allerdings würde ich den ersten Ansatz irgendwie eleganter finden.
Kann mir jemand was dazu sagen?
MfG, Knaggy.
-
Knaggy schrieb:
Ist diese Implementierung ineffizient, da jedes Zeichenobjekt in der Liste eine eigene
drawObject()Methode hat?
Nein, die Methode ist nur einmal pro Klasse vorhanden und wird nicht dupliziert. Nur die Attribute der Klasse werden für jedes Objekt instanziiert.
Dein Design ist gut und üblich.
-
Ah, super vielen Dank.
Jetzt habe ich die Gewissheit und kann es so umsetzen.