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
Thema durchsuchen
Ansicht
Themen-Optionen

[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
 
#7

Re: [OOP-Struktur] Übergeordnete "Verwalter"-Klass

  Alt 5. Jan 2010, 18:48
Zitat:
Datenobjekte sollten im Prinzip dumm sein.
Schöner Satz, aber was bedeutet das genau für meine TAuto-Klasse...?

Wir haben ein Auto aus der Datenbank geladen und in einem Objekt der Klasse TAuto gespeichert. Darf/Sollte TAuto bzw. das konkrete Objekte Methoden haben, ausschließlich sich selbst zu ändern und zu löschen?

Alle Methoden, die mit mehreren Datensätzen zu tun haben (Alle anzeigen, bestimmte anzeige, alle löschen etc) sind bei mir in der Verwalterklasse (TAutos) und alle Methoden die für einen speziellen Datensatz gelten (FarbeÄndern etc...), sind in der Objektklasse (TAuto).

Hier mal meine derzeite Hierarchie

Code:
dmDatenbank (Datenbankmodul mit Zeos-Komponente)

TDBBaseFB = class(TObject) //Datenbank-Basis-FB = Firebird
"Objekte" = class(TDBBaseFB)

"Verwalterklassen" = class(TObjectlist)
Delphi-Quellcode:
TDBBaseFB = class(TObject)
private
  Fdb_path: String; //Pfad zur DB
  Fdb_utf8: Boolean; //UTF8?
  Ftabelle: String; //Name der Tabelle
  FdbIDField: String; //Feldname der ID
  FdbID: Integer; //ID des Datensatzes
  FdbData: array of TSQLData; //Parameter der Query
  FdbSQLWhere: String; //Where-Condition
  FdbSelectFields: TStringList; //Zum Selektieren spez. Felder
  procedure setDbPath(Value: String);
  procedure setDbUtf8(Value: Boolean);
  procedure set_db_params; virtual;
  procedure setTabelle(Value: String);
  procedure setDbIDField(Value: String);
  procedure setDbID(Value: Integer);
  procedure setDbWhereSQL(Value: String);
public
  {* Standard SQL-Aktionen / MUST HAVE *}
  procedure Select; virtual;
  procedure SelectFields(Fields: TStringList); virtual;
  procedure Insert; virtual;
  procedure Update; virtual;
  procedure Delete; virtual;
  ...
Durch die Vererbung dieser Methoden haben alle Objekte Zugriff auf die FB-Datenbank. Nun ist die Frage, wie ich dies nutze. Ich hatte für mich entschieden, Verwalterklassen zu benutzen, wenn mehrere Objekte tangiert werden, und direkten Zugriff zu erlauben, falls sich ein Objekt selbst ändern oder löschen will. Es kann sich aber nicht selbst in die Datenbank eintragen.

Es ist bei mir immernoch ein bissl durcheinander - sowohl im Kopf, als auch im Code...
  Mit Zitat antworten Zitat
 


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 14:21 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