Kapitel 12
Objektorientiertes Modellieren
332
nach einem Wort in einem richtigen Wörterbuch. In unserem Modell jedoch sucht das
Wörterbuch selbst und nicht der Leser.
Mithilfe von Methode neu() kann in das Attribut vokabeln ein neues Wort nebst Über-
setzung in das Wörterbuch eingetragen werden.
Die Methode speichere() sorgt für das Speichern des momentanen Zustands des
Vokabulars (Attribut
vokabeln). Das entspricht in etwa dem Zurückstellen eines realen
Wörterbuchs in das Regal.
Klasse Benutzungsoberflaeche
Objekte dieser Klasse benötigen ein Attribut und eine Methode:
Das Attribut wb enthält den Namen eines Objektes der Klasse Woerterbuch. Dies ist ein
Objektattribut und kann individuell belegt werden. Das heißt, verschiedene Objekte der
Klasse
Benutzungsoberflaeche können unterschiedliche Wörterbücher verwenden.
Die Methode run() startet die Benutzungsoberfläche und überführt sie in einen Zustand,
in dem sie auf Benutzereingaben wartet.
Assoziationen zwischen Klassen
Die Klassen Benutungsoberflaeche und Woerterbuch sind nicht losgelöst voneinander,
sondern zwischen ihnen besteht eine Beziehung, eine Assoziation. Sie kommt dadurch
zustande, dass durch das Attribut
wb jedem Benutzungsoberflächenobjekt ein Objekt der
Klasse
Woerterbuch zugeordnet ist. Man kann sagen, jedes Objekt der Klasse Benutzungs-
oberflaeche
benutzt ein Objekt der Klasse Woerterbuch. Das Prädikat benutzt kann man
als Name für diese Assoziation zwischen den beiden Klassen betrachten. Abbildung 12.5
zeigt ein UML-Klassendiagramm für unser Modell.
Abb. 12.5: UML-Klassendiagramm zur Modellierung eines interaktiven Wörterbuchs (OOA)
12.2.2 OOD: Entwurf einer Klassenstruktur für eine
Implementierung in Python
Das Ergebnis der objektorientierten Analyse ist noch sehr abstrakt. Von Einzelheiten der
technischen Realisierung hat man bewusst abgesehen. In der nun folgenden Entwurfs-
phase (OOD) wird die Implementierung in einer Programmiersprache vorbereitet.
Woerterbuch
pfad
sprache1
sprache2
vokabeln
neu()
uebersetze()
speichere()
Benutzungsoberflaeche
wb
run()
benutzt
333
12.2
Fallstudie: Modell eines Wörterbuchs
Bei einer industriellen Software-Entwicklung würden nun Fachexperten und Anwender das
Team verlassen und das Feld den Informatikern überlassen.
Wir entscheiden uns, das Programm als Stand-alone-Skript (nur eine Skriptdatei), das auf
einem Einzelrechner laufen soll, zu implementieren. Die Programmiersprache soll natür-
lich Python sein.
Beachten Sie: Das OOA-Modell, das durch das Klassendiagramm in Abbildung 12.5 wieder-
gegeben wird, ist so allgemein, dass es auch auf ganz andere Weise realisiert werden könnte:
Anstelle von Python könnte man auch eine andere objektorientierte Programmierspra-
che wie C++ oder Java verwenden.
Anstelle eines Stand-alone-Programms könnte man auch ein Client-Server-System pro-
grammieren. Das Wörterbuch-Objekt würde sich dann auf einem zentralen Server und
die Benutzungsoberfläche in einem separaten Client-Skript auf einem anderen Rechner
befinden. Beide Systemteile könnten über das Internet kommunizieren.
Wir bleiben bei der einfachen Lösung als Stand-alone-Skript und verfeinern nun das OOA-
Modell zu einem OOD-Modell. Das ist unsere Vorgehensweise:
Wir ergänzen die vorhandenen Klassensymbole um weitere Attribute und Methoden.
Es wird festgelegt, welche Attribute Klassenattribute sein sollen.
Die Sichtbarkeit der Methoden und Attribute wird spezifiziert. Für UML-Klassendia-
gramme gibt es dafür eine spezielle Notation. Den Attribut- bzw. Methodennamen wird
ein
+,- oder # vorangestellt. Dabei bedeutet
+ öffentlich (public): sichtbar für alle anderen Klassen
# geschützt (protected): sichtbar innerhalb der Klasse und aller Unterklassen (das ent-
spricht ungefähr »schwach privat« in der Python-Redeweise)
- privat (private): sichtbar nur innerhalb der eigenen Klasse
Für Python-Skripte brauchen wir diese Schreibweise nicht. Wir definieren die Sichtbar-
keit der Attribute und Methoden durch führende Unterstriche in ihren Namen.
Für Methoden werden Vor- und Nachbedingungen präzisiert. Diese können später als
Kommentare oder Docstrings in den Programmtext übernommen werden.
Abbildung 12.6 zeigt ein Klassendiagramm der OOD-Phase zu unserem Wörterbuch-Projekt.
Abb. 12.6: UML-Klassendiagramm zur Modellierung eines interaktiven Wörterbuchs (OOD)
Woerterbuch
__pfad
sprache1
sprache2
__vokabeln
neu()
uebersetze()
speichere()
__lade()
Benutzungsoberflaeche
__menuetext
__wb
run()
__neu()
__uebersetze()

Get Python 3 - Lernen und professionell anwenden now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.