Menu Close

Objektorientierte Analyse und Design (Vorlesung 15)

Start: Seite 361

Wie erfülle ich die 5 Grundprinzipien / Wie modelliere ich „gut“?

Regel 1: Sparsames Einsetzen von Vererbung

  • Viele Vererbungen lassen sich mit Assoziationen umgehen
  • Vererbung nur bei echter “ist ein” Beziehung verwenden
  • Wenn man Vererbungen verwendet, dann möglichst nur Einfachvererbungen
  • Vererbungen nicht zu tief verschachteln

Regel 2: Normalisiere das Datenmodell

  • 1. Normalform:
    • Jedes Attribut der Relation muss einen atomaren Wertebereich haben
  • 2. Normalform:
    • jedes Nichtschlüsselattribut ist von jedem Schlüsselkandidaten voll funktional abhängig
  • 3. Normalform:
    • kein Nichtschlüssel hängt von irgendeinem Schlüsselkandidaten transitiv ab
  • Normalisiere das Datenmodell: Mindestens 3. NF

Regel 3: Vermeide transitive Assoziationen

  • Durch Zyklen gibt es mehrere Wege für eine Beziehung zwischen zwei Objekten
  • Man sollte versuchen solche Zyklen durch das entfernen von bestimmten Assoziationen aufzulösen
  • Wenn das Auflösen eines Zyklus‘ nicht möglich ist, müssen Widersprüche mithilfe von Constrains verhindert werden

Regel 4: Analysiere m:n-Beziehungen genau

BeispielLösung:

  • m:n-Beziehungen werfen oft Probleme auf
  • diese Beziehungen können jedoch meistens durch Assoziationsklassen dargestellt werden
    • Probleme können dadurch behoben werden
  • n:m Beziehungen werden durch eine Assoziationsklasse ersetzt, die zu den verbundenen Klassen mit 1:* Multiplizität verbunden ist.

Weitere Regeln

  • Vermeide 1:1-Beziehungen
    • Oft kann man sich diese Assoziation sparen und beide Entitäten zu einer zusammenfassen
  • Es werden nie technische Aspekte modelliert
  • Beschränkung bei der Modellierung auf die wirklichen Anforderungen

Entwurf von Operationen und Schnittstellen

Regel 1: Operationen sind unabhängig von der verwendeten Technologie !

  • Versuche, möglichst wenig über die interne Funktionalität / Umsetzung einer Operation zu verraten
    • nichts über die Datenspeicherung, Datenstrukturen, die das System verwendet sichtbar machen
      • z.B. Stack
      • SAP
  • Entwerfe Operationen so,
    • dass die Funktionalität intuitiv erkennbar sind
    • dass sie eigenständig funktionieren
      • so sind sie austauschbar
      • sie können gegebenenfalls für andere Systeme verwendet werden

Regel 2: Gib keine Referenzen nach außen!

  • Versuche keine Pointer zu übergeben
    • Pointer sind nur innerhalb dieses Systems gültig
    • Pointer verraten Weiteres über die Funktionalität
  • Referenzen erhöhen die Abhängigkeit zwischen Systemteilen
  • Gefahr von Fehlern erhöht
  • Ausnahme: Werden viele Daten benötigt, kann diese Regeln übergangen werden, da die Funktionalität ansonsten sehr umständlich wird

Regel 3: Normalisiere die Schnittstelle !

  • Entwerfe eine Schnittstelle so, dass es nichtmehrere Möglichkeiten gibt, die gleiche Funktionalität umzusetzen
    • Redundanz wird verhindert
  • Benenne die Schnittstelle so, dass ihre Funktionalität offensichtlich ist
    • Wartbarkeit wird verbessert
  • Unterscheide schreibende und lesende Methoden

Regel 4: Mache die Operationen grobgranular !

  • bietet mit einer Operation die Funktionalität, die der Aufrufer erwartet und braucht
  • verbirgt vor dem Aufrufer die Komplexität, die in der Umsetzung einer Funktionalität durch atomare Operationen und Befehle steckt

Regel 5: Mache die Operationen idempotent !

  • Auch wenn der Aufruf (versehentlich) mehrfach erfolgt, wird das gleiche Ergebnis geliefert
  • Beugt Gefahr von unerwarteten Ergebnissen vor
  • Zuverlässigkeit wird gefördert

Regel 6: Mache die Operationen kontextfrei !

  • besorgt sich selbst die erforderliche Kontext-Information
  • Aufruf wird einfacher
  • viele Probleme werden im Vorfeld verhindert

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahren Sie, wie Ihre Kommentardaten verarbeitet werden.

Index