Klassenarchitektur-Design-Frage
Verfasst: 30. September 2006 20:38
Hallo,
ich stehe vor einer Frage des Designs meiner Klassenarchitektur.
Ich habe eine abstrakte Basisklasse die von QList erbt und dabei gleich den Template-Typ spezifiziert. Sie hat zwei abstrakte (rein virtuelle) Methoden load() und save() die von den Unterklassen implementiert werden müssen.:
Diese beiden Methoden sollen dafür sorgen, dass die Unterklassen ihre Werte vom Typ Something aus verschiedenen Dateiformaten lesen und auch in diesen speichern können.
Nun soll diese Liste aber auch in einem QTreeView dargestellt werden können.
Deswegen habe ich mir überlegt, AbstractSomethingList neben QList auch noch von QAbstractTableModel abzuleiten und die vier Methoden rowCount(), columnCount(), data() und headerData() zu implementieren.
Das Problem ist nun, dass zu Programmbeginn noch keine Instanz einer Unterklasse existiert, sie wird auf Benutzereingaben hin erstellt, das QTreeView sollte aber zumindest schon mal die Header-Spalten richtig anzeigen. Ich kann allerdings keine Instanz einer abstrakten Klasse erstellen.
Nun meine Frage: sollte ich nun
a) mich auf irgendeine Unterklasse als Standardinstanz festlegen, da sich die Header in den verschiedenen Unterklassen sowieso nicht ändern
b) AbstractSomethingList nicht von QAbstractTableModel ableiten sondern eine neue Klasse SomethingListModel erstellen, die von QAbstractTableModel erbt und lediglich einen Zeiger auf eine AbstractSomethingList enthält
c) einen ganz anderen Weg gehen?
MfG, Cedric
ich stehe vor einer Frage des Designs meiner Klassenarchitektur.
Ich habe eine abstrakte Basisklasse die von QList erbt und dabei gleich den Template-Typ spezifiziert. Sie hat zwei abstrakte (rein virtuelle) Methoden load() und save() die von den Unterklassen implementiert werden müssen.:
Code: Alles auswählen
class AbstractSomethingList : public QList<Something>
{
public:
virtual void load() = 0;
virtual void save() = 0;
};
Nun soll diese Liste aber auch in einem QTreeView dargestellt werden können.
Deswegen habe ich mir überlegt, AbstractSomethingList neben QList auch noch von QAbstractTableModel abzuleiten und die vier Methoden rowCount(), columnCount(), data() und headerData() zu implementieren.
Das Problem ist nun, dass zu Programmbeginn noch keine Instanz einer Unterklasse existiert, sie wird auf Benutzereingaben hin erstellt, das QTreeView sollte aber zumindest schon mal die Header-Spalten richtig anzeigen. Ich kann allerdings keine Instanz einer abstrakten Klasse erstellen.
Nun meine Frage: sollte ich nun
a) mich auf irgendeine Unterklasse als Standardinstanz festlegen, da sich die Header in den verschiedenen Unterklassen sowieso nicht ändern
b) AbstractSomethingList nicht von QAbstractTableModel ableiten sondern eine neue Klasse SomethingListModel erstellen, die von QAbstractTableModel erbt und lediglich einen Zeiger auf eine AbstractSomethingList enthält
c) einen ganz anderen Weg gehen?
MfG, Cedric