# Entwurfsfragen zur Anbindung an einer MySQL DB - Klassenstruktur zum Data Model



## Dragonfire (26. Sep 2009)

Hi,
würde gerne Informationen aus einer MySQL-Datenbank laden.
Die Frage die ich mir jetzt stelle ist,
wie kommt die GUI am besten an die Informationen dran,
wie nutzt man Vererbung, generische Klassen am besten aus?

Meine Anwendung soll Kunden, Artikel und Aufträge verwalten können (hinzufügen, ändern und löschen).

Diese Daten stehen alle in einer separaten Tabelle.

Ich hätte jetzt mehrere Ansätze die Daten zu laden,
gibt es für so einen Fall schon ein Pattern?

Alle meine Ansätze gehen von einer Verwaltung aus,
diese generische Klasse hat ein Element (Auftrag, Kunde, oder Artikel)
und eine Key (meist Integer / int, wie Rechnugnsnummer, KundenID, ArtikelID).
Die Verwaltung stellt Methoden bereit, welche die Daten in der Datenbank aktualisieren.
(add, delete ...)

Meine erste Idee sieht man grob auf den "Klassendiagramm.pdf"
Ist gibt eine generische Klasse Verwaltung, und Subklassen Artikelverwaltung, Kundenverwaltung und Auftragsverwaltung.
Diese Klasse erben von Verwaltung die Methoden und können diese zu Not ergänzen oder anpassen (z.b. canAdd).


Meine zweite Idee wäre nur eine Abhängigkeit, siehe "Klassendiagramm2.pdf"
dass die Verwaltung nur benutzt wird (wie eine ArrayList) und Auftragsverwaltung die Methoden selbst deklariert.
Ich finde aber dass die drei Verwaltungsklassen sich dann ziemlich ähneln würden (Codeduplizierung).

Hat wer vielleicht noch eine bessere Idee?

PS.: Ich weiß, die Diagramme sind vielleicht nicht ganz sauber, aber ich wusste nicht wie ich sonst die Anbindung an die GUI und DB darstellen sollte.


----------



## DerEisteeTrinker (26. Sep 2009)

ich persönlich würde eine AbstractFactory (<< DesignPattern) empfehlen, da kannst du jede tabelle einzeln abbilden und die statements zusammenfassen und zur Trennung der schichten einen BusinessDelegate zwischen GUI und der AbstractFactory


----------



## Dragonfire (26. Sep 2009)

Also wäre das eher meine erste Idee?
Die Verwaltung ist die abstrakte Fabrik
und die Unterverwaltungen die konkreten Fabriken mit dem jeweiligen Produkt
(Artikel, Auftrag, Rechnung)?


----------



## DerEisteeTrinker (26. Sep 2009)

genau

und bevor die Ergebnisse aus der der Datenbank an die GUI gehen noch eine Klasse bauen, die die Arbeit an die richtigen Klassen weiterleitet.

GUI ==> BusinessDelegate ==> Datenbank-Klasse ==> Datenbank

viel Spaß beim Schreiben :toll:


----------



## Dragonfire (26. Sep 2009)

DerEisteeTrinker hat gesagt.:


> genau
> 
> und bevor die Ergebnisse aus der der Datenbank an die GUI gehen noch eine Klasse bauen, die die Arbeit an die richtigen Klassen weiterleitet.
> 
> ...



Das wäre bei mir die Klasse "Verwaltungssystem" nur ein wenig modifiziert,
DANKE


----------



## DerEisteeTrinker (26. Sep 2009)

Hat den entscheidenden vorteil, dass du so sehr schnell umsteigen kannst. sowohl bei der GUI als auch bei der DB. Die GUI ruft immer die Methoden des BusinessDelegate auf und weiß von der Implementierung der Datenbank-Klassen nichts und wenn sich die Datenverarbeitung ändert, dann interessiert es die GUI keine Bohne, weil das alles der BusinessDelegate übernimmt


----------

