Kennt sich jemand mit UML aus?

1 Antwort

1) Bezüglich der Bezeichner missachtest du regelmäßig Konventionen. Methodennamen beginnen mit einem Kleinbuchstaben und sollten der Eindeutigkeit halber mit einem Verb oder einer Imperativform (Bsp.: sayHello) benannt werden. Nur bei einem Konstruktor würde der Name mit einem Großbuchstaben beginnen.

Die Klasse MenuItem sollte außerdem zusammengeschrieben werden.

2) Bei den Typangaben würde ich mehr auf Einheitlichkeit achten. Da du für die Liste einen Typ im Stil der Java/C#-Syntax angibst, sollten Strings auch nicht als str, sondern als String angegeben werden.

3) Das Data-Hiding-Prinzip findet bei dir fast gar keine Anwendung. Mehrere Felder wären dem Diagramm zufolge von außen direkt änderbar.

Ich würde den Zugriff auf Felder prinzipiell auf die eigene Klasse beschränken. Den Zugriff von außen können Getter/Setter regeln. Die werden in solchen Diagrammen übrigens üblicherweise weggelassen / nicht erwähnt.

4) Eine reine Vermutung: Wenn die einzigen Anwender in dem System Kunden und die Kantine sind, es also sonst keine User-Objekte geben kann, wäre User eine abstrakte Klasse.

5) Kann ein Menu Item sowie eine Datenbankverbindung nur einem einzigen Nutzer zugeordnet werden? Es gibt doch mehrere Nutzerobjekte (mindestens einen Kunden und eine Kantine).

6) Den Preis mit einem String abzubilden, statt einem numerischen Typ, erscheint etwas seltsam. Wenn es darum geht, die Einheit mit zu speichern: Die (oder die zutreffende Locale-Info) könnte auch in einem eigenen Attribut stehen.

Bei dem Feld stars könnte ich mir vorstellen, dass ein float-Typ vollkommen ausreicht.

7) Meines Erachtens besteht zu Suggestions und Reviews jeweils keine Kompositionsbeziehung. Beide existieren noch, wenn man das jeweilig andere vernichtet. Womöglich könnte man bei der Multiplizität auch soweit gehen und sagen, dass eine Review ebenso mehreren Menu Items zugeordnet werden könnte.

Generell würde ich es wohl bei einfachen Assoziationen (also ohne Spezifikation) belassen.

8) Ein Nutzer mag zwar Zugriff auf ein Menu Item erhalten, doch es besteht ganz sicher keine ist-Teil-von-Beziehung (Aggregation).

Bei der Verbindung zwischen Nutzer und Datenbankverbindung bin ich ebenfalls skeptisch.