:OOP: Objektorientierter Entwurfsprozess
Überblick über den Entwurfsprozess
Vorgehen beim Softwareentwurf
use case driven development => Der Anwendungsfall ist der Ausgangspunkt der Entwicklung.
Wozu brauche ich UML?
Nicht jammern sondern freuen! Bislang musste man sich bei der Problemlösung mit komplizierten Programmiersprachen rumschlagen, mit all ihren Besonderheiten und Tücken.. Nun gibt es die Unified Modeling Language eine vereinheitlichte Modellierungs-Sprache, bei der man sich nur auf das Wesentliche des Problems konzentrieren braucht...
Dank moderner Case-Tools (Computer added Software Engeneering - Tools) [Computer unterstützte Software Entwicklungs Werkzeuge] könnte die "Drecksarbeit" endlich der Computer selber übernehmen!
Damit dieses "Wunder" wahr werden kann, müssen wir diese Sprache unbedingt lernen, eigentlich weniger eine Sprache, sondern viel mehr eine Darstellungsform von Problemen, die unserer menschlichen "Denke" näher kommt als Java, C++, Delpi und Co.
Objektorientierte Analyse (OOA)
- In der Analyse wird das Problem untersucht und die Anforderungen an das Programm gesucht.
- Im Mittelpunkt steht das Problem und nicht die Lösung
- Zu beantwortende Frage: Was soll gelöst werden?
Vorgehen bei der Analyse eines Problems
- Suchen nach Klassen (Substantive sind Kandidaten)
- Suchen nach Beziehungen zwischen den gefundenen Klassen
- Suchen nach Kardinalitäten und evtl. Rollen
- Suchen nach Attributen in den Klassen (es kann sein, dass für manche Klassen keine Attribute gefunden werden)
Ergebnis: Domain Modell, ein Modell aus Sicht des Problembereichs (Domäne des Problems)
Objektorientiertes Design (OOD)
Designrichtlinien
- Informationsexperte
Wer ist der Informationsexperte für diese Aufgabe? D.h. wer hat bzw. sollte die Information für diese Aktion haben, wer muss also angefragt werden?
- Geringe Kopplung
Eine Klasse sollte möglichst wenig Verbindungen zu anderen Klassen aufweisen, so sind bei Änderungen weniger Klassen betroffen.
- Hoher Zusammenhalt
Die Verantwortlichkeit einer Klasse sollte sich möglichst nur auf eine logische Aufgabe beziehen.
- Erzeuger
Die Klasse ist für die Erzeugung neuer Objekte zuständig, welche die zu erzeugenden Objekte beinhaltet (Komposition, Aggregation), welche die Informationen zum Start des neuen Objekts enthält oder das zu erzeugende Objekt eng verwendet.