Einzelnen Beitrag anzeigen

Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#1

Designfrage bei Klassemodellierung

  Alt 23. Aug 2011, 12:18
Ich kann mich im Moment nicht so recht entscheiden, wie ich denn folgenden Sachverhalt modellieren soll. Würde mich daher mal interessieren, wie ihr an so etwas heran geht.

Ein Mitarbeiter kann einen Antrag via Formular tätigen, z.B. Antrag auf weitere Rollen. Dabei gibt es drei verschiedene Antragstypen: neu, ändern und Nutzer löschen. Wenn es sich um ein neu- oder ändern-Formular handelt, so muss der Mitarbeiter Rollen angeben. Zudem gibt es noch eine Zusatzoption, die weitere Pflichtfelder einblendet, aber eben nur, wenn diese Zusatzoption gewählt wurde.

Nun will ich einen solchen Antrag in Klassen gießen und bin bisher zu folgendem Ergebnis gekommen:

Delphi-Quellcode:
Request = class abstract
  DeleteRequest = class(Request)
  RequestEx = class abstract(Request)
    RequestNew = class(RequestEx)
      RequestNewEx = class(RequestNew)
    RequestEdit = class(RequestEx)
      RequestEditEx = class(RequestEdit)
(Die Einrückung symbolisiert die Ableitung)

Jedenfalls habe ich das "persönliche Problem", dass die Klasse DeleteRequet komplett leer ist, da ich (bisher) noch keinerlei Zusatzfunktionalität benötige und auch nicht weiß, ob ich diese überhaupt noch brauche. Zudem entstehen somit sehr viele Klassen, da da beschriebene Beispiel imho noch sehr klein ist. Daher kam auch sehr schnell die Idee alle Klassen in eine einzige zu mergen, wobei ich eben dann eine Typ-Property einbauen muss und manche Properties für gewisse Fälle "tot" und unbenutzt sind. Wie handhabt ihr sowas? Lieber wenige, dafür angereicherte Klassen, oder eher mehrere einzelne, wie im obigen Beispiel gezeigt?

PS: Das hier soll nicht in einem Glaubenskrieg ausbrechen! Mir ist definitiv bewusst, dass man immer einen Mittelweg gehen wird.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat