AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi [OOP-Struktur] Übergeordnete "Verwalter"-Klassen

[OOP-Struktur] Übergeordnete "Verwalter"-Klassen

Ein Thema von TheMiller · begonnen am 5. Jan 2010 · letzter Beitrag vom 5. Jan 2010
 
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#1

[OOP-Struktur] Übergeordnete "Verwalter"-Klassen

  Alt 5. Jan 2010, 11:59
Hallo,

zuerst einmal eine kleine Entschuldigung: Mir ist für mein "Problem" kein besserer Titel eingefallen. Ich änder ihn aber gerne ab, falls jemanden ein besserer Titel einfällt. Nun zum Problem:

Es geht mir um die Struktur und Aufgabenverwaltung von Objekten. Momentan ist es bei mir so, dass ein Objekt einen Datensatz aus der Datenbank repräsentiert. Jedes Objekt wird von einer Master-Klasse abgeleitet, welche die DB-Methoden "Select, Insert, Delete und Update" bereitstellt. Die Update und Delete-Methoden sind so programmiert, dass sie immer nur das Objekt in der DB ändern, welches diese Methode aufgerufen hat - also in der Master-Klasse wird fest eine ID des Datensatzes in die Where-Klausel eingesetzt. So können Objekte sich selbst ändern oder löschen.

Nun meine Frage: Angenommen wir bauen Autos und leiten von der Master-Klasse folgende Klassen ab um tolle Objekte zu erstellen: Auto, Reifen und Sitze. Das Auto soll auch wieder in der Datenbank gespeichert werden. Soll ich jetzt zum Speichern in der DB die Methoden des Objektes verwenden, oder soll ich für alle Klassen Verwalter-Klassen schreiben, die spezielle Verwaltungsmethoden übernehmen.

Beispiel 1 - Ohne Verwalterklasse

Delphi-Quellcode:
var
  Auto: TAuto;
  Reifen: TReifen;
  Sitz: TSitze;
begin
  Auto:=TAuto.Create;
  Reifen:=TReifen.Create;
  Sitz:=TSitze.Create;
  Reifen.Druck:=2;
  Sitz.Farbe:='Schwarz';
  Auto.Reifen:=Reifen;
  Auto.Sitz:=Sitz;
  Auto.Insert;
end;
Hier würde das erstellte Objekt zunächst keinen Datensatz der DB sein. Ich richte mein Objekt ein, konfiguriere es und lege es dann in der DB ab. Aber eine Verwalterklasse (zb. TAutos) bräuchte ich dennoch, um mehrere Autos zu verwalten oder abzuändern.

Beispiel 2 - Mit Verwalterklasse
Delphi-Quellcode:
var
  Autos: TAutos;
  Auto: TAuto;
  Sitze: TSitze;
begin
  Autos:=TAutos.Create;
  Autos.LadeAutosAusDerDB;
  ZeigeAlleAutosInEinerTreeViewAn();
  
  //Neues Auto bauen
  Auto:=TAuto.Create;
  Sitze:=TSitze.Create;
  Sitze.Farbe:='Schwarz';
  Auto.Farbe:='Quietschgelb';
  
  //Auto in der DB speichern; Verwalterklasse macht das!
  Autos.SpeicherInfosUeberNeuesAuto(Auto);

  //TreeView aktualisieren
  Autos.LadeAutosAusDerDB;
  ZeigeAlleAutosInEinerTreeViewAn();
end;
Ich hoffe, ihr erkennt den Unterschied und das, was ich mir dabei denke. Objekte in der DB ablegen soll nicht die Aufgabe eines "kleinen" Objektes sein - es soll nur einen Datensatz repräsentieren und alle DB-Aktionen ausführen können, die SICH SELBST betreffen.
Die Verwalterklasse soll sich um alles kümmern, was übergeordnet mit dem gesamten "Klassenthema" zusammenhängt, also "TAdressen", "TTiere" etc.

Ist das richtig, sinnvoll, zu kompliziert, hab ich mich komplett unverständlich ausgedrückt Ich kann das grad sehr schwer beschreiben, was ich mir da denke - aber ich hoffe, dass ihr es mit den Beispielen versteht.

Das Negative an der Sache ich, dass Verwalterklassen doch mehr Schreibarbeit bedeuten.

Nunja, ich lasse euch jetzt mit dem Roman mal kurz alleine.

Vielen Dank im Voraus!
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz