Bestmögliche Speicherung von Datensätzen?



  • genau so hab ichd as gemeint, dann müsste ich nämlich die Variablen von einem Objekt nicht in das andere Objekt übergeben, nur weiß ich nicht ob das auch noch nach der Vererbung in unterschiedlichen klassen gilt.
    Weisst du das??

    MFG

    Maruu



  • Das "static" bedeutet, das für alle Objekte die Variable die gleiche ist. Das heißt:

    Ich habe eine Klasse Auto. Darin ist eine Variable static int count. Bei jedem Aufruf des Konstruktors wird dieses count jetzt um eines erhöht.

    Wenn ich nun 2 Autos erstelle:

    Auto* auto1 = new Auto();
    Auto* auto2 = new Auto();
    

    und abfrage

    auto1->count;
    auto2->count;
    

    Liefert mir das beide male "2"! Heißt, das static erzeugt eine Klassevariable und keine Objektvariable.

    greifen die dann intern auf die gleichen Variablen zu, also wenn Objekt1 irgendwas in die Variable Name schreibt, kann das Objekt2 dann auch auslesen???

    Sollte eigendlich klappen. Nur mit dem Nachteil, das es egal ist, wieviele Objekte du hast, du kannst immer nur einmal Name, etc. speichern. Es wird ja immer in der Klasse (nicht dem Objekt) gespeichert und die Klasse gibts nur einmal.



  • ja nun ist es aber so das es ja 2 verschiedene Klassen sind. Sozusagen eine Basisklasse Auto mit den Variablen:
    Tempo
    Farbe

    und dann die 2 Klassen LKW und SPORTWAGEN die jeweils die 2 Variablen von Auto erben.

    und wenn ich nun ein Objekt von LKW und eins von SPORTWAGEN erstellen dann sind das ja eigendlich 2 verschiedene Klassen oder beziehen die sich dann auf die Klasse Auto wenns um die Variablen Tempo und Farbe geht??

    MFG

    Maruu



  • Probier's doch einfach aus. Ich weiß es auch nicht. ABER die Verwendung von static widerspricht Deiner Aussage, dass Du alle 'Datensätze' zwischenspeichern willst. Du kannst so nur noch einen Datensatz haben!



  • Ja, laut meinem Verständnis von Vererbung sollte es egal sein, ob du LKW->Farbe oder Auto->Farbe oder Sportwagen->Farbe sagst. Es sollte sich dann immer auf Auto beziehen.

    Aber wie schon so oft gefragt: Was bringt dir das?
    Du kannst jetzt viele viele Autos erstellen, die aber alle die gleiche Farbe haben. Das ist doch unsinn. Du willst doch viele viele Autos mit verschiedener Farbe haben.



  • So jetzt bin ich wieder zurück von der Arbeit.
    Also naja ich hab da ein bisschen rumgedacht aber wahrscheinlich
    ist es nicht
    die beste Lösung. und zwar wollte ich innnerhalb des Objektes eine Verkettete Liste anlegen also z.B. so:
    static int * PLZ
    static int * PLZnext

    usw. anstatt eine Verkettete Liste mit Objekten zu machen die jeweils die ganzen Variablen enthalten. Naja wird wohl besser sein eine Verkettete Liste mit Objekten zu machen anstatt die Verkettete Liste im Objekt anzulegen oder??

    MFG

    Maruu



  • Ein großes fettes JA. 😉

    EDIT: Das heißt unter der Voraussetzung, dass die Datensätze komplett in einer Tabelle landen. Wenn es sich um mehrere Zieltabellen (eigene Tabelle für PLZ/Ort, z.B.) könnte man diese Strukturen 'nachbauen'. Ob sich solch ein Aufwand lohnt sei mal dahingestellt. Normalerweise ist es weniger Aufwand, dies beim Speichern eines Datensatzes zu realisieren.



  • aber mal nur so, wo ist da der Vorteil??
    Weil wenn ich jedes mal ein Objekt neu erstelle um weitere Daten zu speichern dann muss er ja für die ganzen methoden und co auch wieder Speicher reservieren oder??
    Ist das dann ned unnötig Platz verbraucht??

    MFG

    Maruu



  • Nein, Methoden werden nicht 'dupliziert'. Die sind für alle Objekte nur einmal vorhanden. Nur die Datenvariablen werden für jedes Objekt erzeugt. Und wenn Du hier nur Zeiger verwendest, die Du zur Laufzeit mit dynamisch erzeugten Objekten belebst, hast Du den Speicherverbrauch minimiert (wenn auch auf Kosten von etwas Geschwindigkeit). Da es sich bei Deinen Daten um AnsiStrings handelt, würde ich mir allerdings nicht die Mühe machen, diese dynamisch zu erzeugen. Wenn das so viele Datensätze sind, dass Du befürchtest, der Speicher könnte nicht reichen, solltest Du vielleicht doch nach einer Möglichkeit suchen, immer nur einen 'Datensatz' einzulesen und diesen direkt zu speichern.



  • Aha, naja ich befürchte eigendlich nicht das der SPeicher nicht reicht (ist das jetzt ne doppelte Verneinung gewesen*g*), hat mich nur mal so interessiert.
    Dann werd ich wohl ne Verkettete Liste mit Objekten machen. Danke ihr habt mir sehr geholfen.

    Gruß

    Maruu


Anmelden zum Antworten