Verständnisfrage von Klassen
-
Hey @all,
ich weiß es ist zwar vielleicht eine etwas blöde Frage, jedoch weiß ich nicht wo ich sonst eine Antwort bekommen sollte.
Nun ich kann zwar mit Strings, usw. umgehen, jedoch fehlt mir das Verständnis von Klassen, ich weiss zwar wie ich sie ableite und erbe, und eine einfache Klasse erstelle, jedoch wenn ich versuche mehrere Klassen zu vereinen, weiss ich nicht ob das Beipiel sinnvoll ist, oder ob man es anders lösen sollte.Ich versuche gerade ein Programm zum Lesen und Schreiben von Daten zu programmieren. Und zwar habe ich folgende Klassen mData, mGet, mPut, mAppend, mMain.
Kurz zur Erklärung:
mData ..... ist zum speichern der Werte bzw. Daten
mGet ...... liest die Daten und speichert sie
mPut ...... schreibt Daten in die Datei
mAppend ... hängt Daten an die Datei an
mMain ..... verwaltet sozusagen die Klassen, erbt also von mData, mPut, mGet, mAppend.Nun kann man ja von mMain ein Objekt erzeugen, und auf die Methoden der anderen Klassen zugreifen. Nur weiss ich nicht, ob man etwas so programmiert, oder ob es da eine bessere Lösung gibt.
Vielen Dank im Voraus
MfG Roman1311
P.S.: Das Ziel wäre ja, das wenn ich zum Beispiel Probleme mit dem Einlesen habe, ich nur die Klasse mGet anschauen müsste, und nicht eine Klasse mit 100 Methoden.
-
Hm...
also, ich würde sagen, deine Klassen sind nicht sinnvoll. Jedenfalls wüde ich es nicht so machen. Ich würde eine Klasse einfach mDateiHandler nennen, die all möglichen Operationen mit der Datei ausübt und eine Klasse mDaten, die zB einen Zeiger auf mDateiHandler enthält und dann die Daten speichert.
Was soll denn bitte ein AnfügeObjekt sein? Ich denke, dafür reicht eine einfache Funktion doch aus, oder?
Hoffe, ich konnte helfen,
Gruß, Maxi
-
Ok, nur wenn ich einen Zeiger von einer Klasse für eine andere verwende, muss ich diese Klasse dann auch erben?
Kannst Du mir ein Mini-Beispiel zeigen?
MfG Roman 1311
-
class mDateiHandler { }; class mDaten { private: mDateiHandler *myHandler; };Würde das so funktionieren? und wenn ja, wie würde ich mit dem Objekt weiterarbeiten?
MfG Roman1311
-
So meine ich das, ja.
Grundsätzlich gilt erstmal, dass das Handler-Objekt mit new erzaugt werden muss. Wo, das steht dir selbst überlassen. Ich würde nciht sagen, dass sich das Datenobjekt selber um seine Quelle kümmern muss, sondern ich denke, man muss ihm eine zuweisen, zB im Konstruktor:
class mDaten { mDaten(mHander* DatenHandler) { m_Handler = DatenHandler; }; };Wenn du dann soweit bist, musst du ein DateiHandlerObjekt erstellen, es initialsieren, und dieses dann an die DatenKlasse weitergeben. Mit dem HandlerObjekt arbeiten kannst du ja dann so:
void mDaten::TuWas() { string Zeile = m_Handler->GetNewLine(); }Du darfst nur nciht vergessen, dass HandlerObjekt dann wieder mit delete zu löschen