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

Beispiel: Lö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
Maximilian
Maximilian

Herzlich willkommen! Ich bin Max, ein Informatiker mit über 15 Jahren Berufserfahrung. Hier teile ich meine Leidenschaften, Erlebnisse und Perspektiven. Ich lade dich ein, gemeinsam mit mir auf eine Entdeckungsreise zu gehen.

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.