Zur Evaluation
- Aufzeichnungen von OOAD-Vorlesungen gibt es
- Prof. Hahn hat im WS11/12 aufgezeichnet
- Aufzeichnungen befinden sich auch seine Homepage (Link auch auf der Seite von Prof. Grieser)
Zur Klausur
- Es darf ein doppelseitig, handgeschriebenes A4 Blatt benutzt werden
- Ansonsten werden nur Stifte benötigt
Wann ist ein System gut?
1. Grundprinzip: Trennung von Zuständigkeiten
- Unterteilen des Systems, sodass jeder Teil nur eine Aufgabe hat
2. Grundprinzip: Minimierung von Abhängigkeiten
- Zusammenfassen von stark zusammenhängenden Teilen
- so wenige Aufrufe und Assoziationen wie möglich verwenden
3.Grundprinzip: Information Hiding / Geiheimnisprinzip
- Internes Wissen eines Systemteils wird gekapselt, sodass es keinem anderen Teil bekannt ist.
- Abläufe, Daten, Strukturen
- Der Systemteil muss nutzbar sein, ohne etwas über seine Realisierung zu verraten
- Internes darf nicht von außen einsehbar sein
- Implementierung
- „getter„/“setter“
- Attribute und Methoden als „private“ deklarieren
- „getter„/“setter“
- zusätzlicher Vorteil:
- Trennung von Zuständigkeiten und Minimierung von Abhängigkeiten werden unterstützt / erleichtert
- fördert Wartbarkeit, Änderbarkeit und Testbarkeit
4. Grundprinzip: Homogenität
- Es gibt Komponenten, die sehr Komplex sind uns Komponenten die sehr einfach zu realisieren sind. → Unterschiedliche hoher Arbeitsaufwand → inhomogen
- Löse ähnliche Probleme mit ähnlichen Lösungen
- bereits bekannte Lösungen wiederverwenden, wenn möglich.
- Systemteile innerhalb einer Strukturierungsebene so entwerfen, dass sie etwas gleich groß und komplex sind.
5. Grundprinzip: Redundanzfreiheit
- System so entwerfen, dass jeder Teil im System nur an einer Stelle umgesetzt wird.
- Herausziehen von mehrfach verwendeten Teilen
- Verfügbar machen dieser Teile für Andere
- Finden einer sinnvollen „Heimat“ für den Systemteil
- Herausziehen von mehrfach verwendeten Teilen
- fördert auch Trennung von Zuständigkeiten
- verringert die Aufwendigkeit von Änderungen / Korrekturen
→ Ein Entwurf ist gelungen („gut“), wenn er die 5 Grundprinzipien erfüllt
Wie erreiche ich diese Ziele?
Ein Beispiel:
- Ein Softwaresystem, dass Kunden, Lieferanten und Mitarbeiter verwalten soll
- Problem: Änderungen sind schwierig umsetzbar
- z.B. Beförderung eines Arbeiters zum Manager
Eine ganz andere Lösung
- Nun kann eine Person mehrere Rollen einnehmen
- Beförderungen und Ähnliches sind nun kein Problem mehr
- Es können einfach neue Rollen hinzugefügt werden
- „Rolle“ wird nicht als Attribut von „Person“ dargestellt
- Zuständigkeiten sind getrennt
- Bei Änderung der Rolle einer Person kann die Person „unverändert“ bleiben
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