OO: Wo persistente Instanz löschen?

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von Jakob, 09.02.2007.

  1. Jakob

    Jakob Thread Starter MacUser Mitglied

    Beiträge:
    1.067
    Zustimmungen:
    21
    MacUser seit:
    05.01.2004
    Hallo,

    in einer OO-Sprache erstelle ich eine Klasse und instanziiere diese. Dabei wird diese persistent, also bspw. in einer DB, gesichert.

    Wo lege ich jetzt die Methode „Lösche Instanz Nr. …“ bzw. „Lösche diese Instanz“ ab?
    Ich sehe drei Möglichkeiten:
    - in der Klasse selbst, public static void int:void
    - in der Klasse selbst, public void void:void
    - in der Superklasse, public void int:void

    Welche Variante würdet ihr wählen?
     
  2. wegus

    wegus MacUser Mitglied

    Beiträge:
    15.045
    Zustimmungen:
    1.318
    MacUser seit:
    13.09.2004
  3. Ischi

    Ischi MacUser Mitglied

    Beiträge:
    1.105
    Zustimmungen:
    28
    MacUser seit:
    01.05.2005
    Um welche OO-Sprache handelt es sich den überhaupt? Java,C++,Obj.C,OCaml,etc. etc., generell würde ich aber sagen in der Klasse selbst, denn wenn sich das Object erzeugen kann (Konstruktor) muss es sich auch wieder zerstören können (Destruktor).
    MFG

    EDIT: Sry hab nicht richtig geschaut, sollte PHP sein gell?
     
  4. jpv

    jpv MacUser Mitglied

    Beiträge:
    159
    Zustimmungen:
    10
    MacUser seit:
    09.06.2006
    Das hängt sicherlich wie so oft vom Anwendungsfall ab ...
    In der Klasse selbst - also public void void:void finde ich immer am praktischsten. Ich habe ein Objekt ... lösche es.
    Wenn ich nur die ID (int) habe, dann ist public static void int:void offensichtlich die eleganteste Methode.
    Die IDs könnten z.B. aus einer anderen Quelle stammen - einem Index, durch den ich mit einem Iterator durchlaufe und nach bestimmten Metadatenkriterien die zu löschenden wähle.

    Wenn das Löschen aus der DB Nachbereitung erfordert - z.B. Löschen des Objektes - dann ist die statische Variante das Mittel der Wahl.

    Vielleicht nützts ;)
    Winterlicher Gruß aus HH,
    jpv
     
  5. Jakob

    Jakob Thread Starter MacUser Mitglied

    Beiträge:
    1.067
    Zustimmungen:
    21
    MacUser seit:
    05.01.2004
    Ist in diesem Fall PHP, meinte die Frage generell, aber vielleicht ist's einfacher das erstmal auf PHP zu beschränken:

    Eine Klasse kann ja schon längst wieder zerstört sein, obwohl sie noch in der DB liegt.
    In PHP wird sie ja nach jedem fertigen Skriptdurchlauf zerstört. Da soll er natürlich nicht die Klasse aus der DB löschen.

    Ich tendiere zu meiner zweiten Möglichkeit. Der Nachteil der ersten ist, dass man erst die Klasse instanziieren muss, um sie zu löschen. Der Nachteil der dritten, dass die Superklasse unnötig aufgebläht wird.

    Edit: Danke jpv, sehe ich mittlerweile auch so. Übrigens hier unten scheint die Sonne bei sommerlichen 7°C :)
     

Diese Seite empfehlen