Wo kann OOP in Delphi hauptsächlich mit der Entwicklung von Datenbanken beginnen?

7

Ich möchte den Datenbankcode vom GUI-Design isolieren. Für eine angemessene Zeit habe ich Themen wie mgm / mvp / mvc / Persistenz / Objekte etc. gelesen / gesucht / skimming. Ich habe wirklich Schwierigkeiten, eine wiederverwendbare Objekthierarchie / ein Framework zu entwerfen. Delphi ist ein großartiges Werkzeug für RAD, aber wenn Sie die Dinge auf eine andere Weise bearbeiten möchten, scheint die Dokumentation unwirksam zu sein. Ich möchte einen König der Beständigkeit für den Datenzugriff und die Verdrahtung von Daten in eine Objekt- / Objektliste leicht entwickeln. Und um die Datenanzeige auf vielseitige Weise zu integrieren (unter Verwendung vorhandener Komponenten dbaware oder nicht, erstellen Sie Export / Import-Routinen für mehrere Formate). Wo soll ich anfangen? Kennen Sie Tutorials mit Code? Zum Beispiel ist die in der Delphi-Installation enthaltene Mastapp-Demo eine großartige Quelle für RAD-Way als Startup. Ich brauche das Äquivalent in OOP :) mit Kommentaren & amp; Anleitung

    
user114285 19.06.2009, 12:47
quelle

8 Antworten

12

Hmmm. Große Frage, dieses Zeug ist nicht in den Handbüchern :( würde wirklich ein Buch benötigen, um es zu beantworten. Jedoch, wenn Sie ein neues largish? Projekt beginnen, würde meine Ratliste, nach 10 Jahren, die dies mit Delphi machen, wie folgt beginnen:

Allgemein

THINK HARD, bevor Sie beginnen, welche Funktionalität Sie für Version 1 benötigen. Aber ignorieren Sie nicht die Wahrscheinlichkeit der Glocken und Pfeifen der Versionen 2 und 3.

Verwenden Sie keine datensensitiven Steuerelemente außer in einfachen separaten Utility- oder Basisdateneingabebildschirmen.

Begründung:

  • Sie brechen sofort Ihre GUI & lt; - & gt; Datenbanktrennung.
  • Sie lassen Sie beim Benutzerfreundlichkeitstest ein wenig im Stich.
  • Sie ermutigen Spaghetti Code

Verwenden Sie keine Standardsteuerelemente oder Steuerelemente von Drittanbietern, einschließlich Formulare, Rahmen oder Datenmodule NATIV. Erstellen Sie zuerst eigene Bibliotheken abgeleiteter Klassen - auch wenn Sie am Anfang keine Funktionalität hinzufügen und stattdessen immer diese Klassen verwenden.

Begründung:

  • Vollständige Kontrolle über das Verhalten Ihrer Anwendung.
  • Erleichtert die Vorwärtskompatibilität.
  • Bietet Ihnen die Freiheit, neue Eigenschaften / Funktionen an beliebiger Stelle in Ihrem neuen Komponentenbaum einzuführen, ohne all Ihre Dialoge und Formulare oder Objekte bearbeiten zu müssen.

Soweit möglich, erstellen Sie alles als ein Objekt mit Eigenschaften, die Getter enthalten, wo Sie Komplexität und Setter nur ausblenden, wenn sie nicht nur lesen können. Disziplinieren Sie Ihr Selbst, um immer Ihre eigenen Eigenschaften zu verwenden - das Cheaten mit einer schnellen öffentlichen Variable wird normalerweise immer dazu führen, dass Sie es später als Eigenschaft neu erstellen.

Datenbankdesign - lese ein Buch:)

GUI & lt; - & gt; Datenbanktrennung.

Da die Anwendung mit den Daten interagieren muss, halte ich eine 100% ige Trennung für nicht möglich. Stattdessen definieren Ihre Baseline-Objekte wahrscheinlich mindestens:

  • Ein Mechanismus zum Abrufen oder Laden von Daten
  • Ein Mechanismus zum Bearbeiten dieser Daten
  • Ein Mechanismus zum Speichern der Daten
  • Ein Mechanismus zum Anzeigen der Daten.

Dies würde ich locker gekoppelt nennen.

Erstellen Sie für jede Datentabelle oder Gruppe eng verwandter Tabellen ein separates Datamodul mit Nur-Lese-Abfragen, beschreibbaren usw. Halten Sie die SQL so einfach wie möglich - Ich habe meine letzte App in zwei Tagen von Oracle nach MYSQL verschoben - 150 Tabellen mit verwandten Objekten und edit Frames :). Verknüpfen Sie sie alle zu einer gepoolten Verbindung, zunächst auch in ihrem eigenen Datamodul.

Es hört sich so an, als ob Sie bereits erkannt haben, dass Listen, insbesondere TObjectLists, Ihre Freunde sind. Erneut - leiten Sie Ihre eigenen für jede Art von Objekt, die Sie benötigen. Ich verstecke die echten Listen tatsächlich in einfacheren Objekten. Das Freilegen der Eigenschaften Items und Count ist trivial. Dann fügen Sie dem Basiselement bei Bedarf mithilfe der internen Liste weitere Funktionen hinzu. Aus Listenlisten sind ein einfacher Schritt und folgen fast selbstverständlich der Struktur der Datenbankdaten, die sie repräsentieren.

Sie können mit diesem Ansatz differenzierter arbeiten, indem Sie die Typen der Listen, die verschiedene Teile Ihrer Anwendung verwenden, in der Datenbank speichern. Dann können Sie die richtigen Listen im laufenden Betrieb erstellen, ohne dass die Anwendung tatsächlich weiß, was sich in ihnen befindet - die Listen und Objekte selbst sollten zu diesem Zeitpunkt Ihrer Entwicklung alle Funktionen enthalten, die sie zum Bearbeiten / Laden / Speichern und Anzeigen ihrer eigenen Daten benötigen :). Dies kann auch auf die Funktionen ausgeweitet werden, die eine Liste ausführt. Ich verwende ein paar Basislistentypen, die einfache Anzahl und Elemente aufdecken - in meinem Fall haben diese etwa 50 Nachkommen.

Wenn Sie so arbeiten, kann Ihr Projekt eine große Anzahl von Dateien ansammeln, aber Sie können sich auf Delphi verlassen und ihm vertrauen - das OO-Modell ist sehr stark und wird selten erwischt.

Wenn Sie den meisten folgen, endet Ihre Hauptanwendung als Listen-Loader und das ist es :) In meinem letzten beschäftigt die Hauptfunktionalität nur etwa 100 Zeilen Code, aber was es startet, ist ziemlich komplex.

Zu guter Letzt - All das ist eine Menge Arbeit :( Das erste Mal wird es einfach nicht passieren, lass uns ehrlich sein, also sei darauf vorbereitet, dein schönes Objektmodell zu kompromittieren, um die App aus der Tür zu bekommen, aber mach GROSSE Kommentare und warum du es getan hast und wie du es später wieder korrigieren kannst.

Viel Glück :)

    
Despatcher 19.06.2009 16:28
quelle
5

Wenn Sie wirklich Ihr eigenes Objektpersistenz-Framework schreiben möchten, empfehle ich Ihnen, die Dokumentation auf der tiOPF Website zu lesen. Vor allem das Konzepthandbuch .

Während Sie diese Dokumentation lesen, könnten Sie auch daran interessiert sein, tiOPF tatsächlich zu verwenden. Es ist ein stabiles und robustes Persistenz-Framework, das mit allen wichtigen Datenbanken arbeiten kann.

    
Birger 19.06.2009 13:09
quelle
1

Delphi hat ziemlich viele Datenbanksteuerelemente, die für RAD ideal sind, aber es ist schwieriger, die Datenbank von Gui zu entkoppeln.

Sie können Client-Datasets (Midas) für die interne Kommunikation verwenden. Sie können mit datenbewussten Steuerungen verwendet werden und haben viele andere interessante Eigenschaften.

    
Toon Krijthe 19.06.2009 12:59
quelle
1

Ich habe das nie getan, aber ...

Sehen Sie sich Instant Objects an.

Um eine Klasse zu erstellen, um Klassen / Objekte in Delphi visuell zu erstellen, probieren Sie ModelMaker (eine kommerzielle Lösung) aus.

    
Yogi Yang 007 19.06.2009 14:36
quelle
1

Jazz SDK Werttyp, OPF und MVP-Frameworks

    
Cesar Romero 19.06.2009 17:10
quelle
1

Wie der Dispatcher sagte, ist das eine Menge Arbeit, aber am Ende zahlt es sich aus. Ich schlage vor, mehr als eines der bestehenden Systeme zu betrachten. Begnüge dich nicht einfach mit dem ersten, den du findest. Versuchen Sie zu verstehen, wie sie funktionieren und wie gut Ihre Vision Ihres Programms mit den Konzepten des Frameworks übereinstimmt.

Holen Sie sich ein paar gute Bücher über Muster. Sie werden sie von unschätzbarem Wert finden, wenn Sie diesen Pfad fortsetzen und häufig referenziert werden. Ich empfehle GOF für die Grundlagen und Muster der Enterprise Application Architecture für die Datenbankobjektmodellseite. Die meisten Konzepte in diesen Bibliotheken basieren auf den in diesen Büchern diskutierten Mustern.

    
skamradt 19.06.2009 18:56
quelle
1

Sie können auch hcOPF

in Erwägung ziehen     
Larry Hengen 04.10.2013 20:33
quelle
-1

Wenn Sie nach einem Rahmen suchen, Data Abstract ist das beste Werkzeug, das ich für diese Sache kenne.

    
Giorgio Gelardi 20.06.2009 00:59
quelle

Tags und Links