Nach dieser Lektion kannst du
Bevor wir Klassendiagramme zeichnen können, müssen wir zunächst verstehen, was wir überhaupt modellieren.
Die objektorientierte Programmierung orientiert sich an der realen Welt. Statt nur Daten und Funktionen zu betrachten, denken wir in Objekten. Fast alles, was uns im Alltag begegnet, kann als Objekt betrachtet werden: ein Auto, ein Smartphone, ein Kunde – oder eben ein Hund.
Stell dir vor, Bello sitzt vor dir. Er ist ein brauner Labrador und gehört Max. Bello kann bellen, fressen und schlafen.
Damit besitzt Bello zwei wichtige Eigenschaften:
In der Objektorientierung nennen wir diese Merkmale Attribute und das Verhalten Methoden.
| Objekt | Attribute | Methoden |
|---|---|---|
| Bello | Farbe = Braun Rasse = Labrador Besitzer = Max |
bellt() frisst() schlaeft() |
Bello ist also ein Objekt. Er existiert ganz konkret und besitzt ganz bestimmte Werte für seine Eigenschaften.
Natürlich gibt es nicht nur Bello. Es gibt unzählige Hunde. Manche sind schwarz, andere weiß. Manche gehören Anna, andere Tim. Wenn wir für jeden einzelnen Hund ein eigenes Modell erstellen müssten, wäre das äußerst unpraktisch.
Deshalb stellen wir uns eine andere Frage: Welche Eigenschaften besitzen eigentlich alle Hunde gemeinsam?
Abstraktion bedeutet, dass wir unwichtige Details weglassen und uns auf das Wesentliche konzentrieren. Wir betrachten also nicht mehr Bello als einzelnen Hund, sondern die allgemeine Beschreibung aller Hunde.
Aus dem Objekt entsteht eine Klasse.
Die Klasse Hund beschreibt deshalb alle Eigenschaften und Fähigkeiten, die jeder Hund besitzen soll.
In UML werden Klassen immer in einem rechteckigen Kasten dargestellt. Dieser Kasten ist in drei Bereiche unterteilt.
Jeder Bereich hat dabei eine feste Bedeutung.
Im oberen Bereich steht ausschließlich der Name der Klasse. In unserem Beispiel lautet dieser Hund.
Im mittleren Bereich stehen alle Eigenschaften der Klasse. Dazu gehören beispielsweise Farbe, Rasse und Besitzer. Diese Attribute beschreiben den Zustand eines späteren Hundes. Bello könnte beispielsweise die Werte Braun, Labrador und Max besitzen, während Luna ganz andere Werte hätte.
Im unteren Bereich befinden sich alle Methoden. Methoden beschreiben das Verhalten eines Objekts. In UML werden Methoden immer mit runden Klammern geschrieben – die Klammern zeigen an, dass es sich um eine Funktion handelt und nicht um ein Attribut. Später werden wir innerhalb der Klammern auch Parameter eintragen. Für den Einstieg bleiben sie jedoch leer.
Jetzt gehen wir noch einen Schritt weiter. Was haben Hunde, Katzen und Kaninchen gemeinsam? Alle besitzen einen Besitzer, alle können fressen, alle können schlafen. Offensichtlich gibt es Eigenschaften, die nicht nur für Hunde gelten. Deshalb können wir noch stärker abstrahieren und eine allgemeinere Klasse bilden – Haustier.
Im Vergleich zur Klasse Hund fehlen hier die hundespezifischen Eigenschaften – ein Haustier muss schließlich nicht bellen. Dafür enthält die Klasse genau die Eigenschaften und Methoden, die für alle Haustiere gelten.
Damit haben wir bereits zwei Klassen modelliert. Haustier beschreibt alle allgemeinen Eigenschaften eines Haustiers, Hund beschreibt einen spezielleren Fall.
Vielleicht fragst du dich jetzt, warum beide Klassen ähnliche Attribute und Methoden besitzen. Müssten wir diese Informationen wirklich zweimal aufschreiben? Zum Glück nicht – genau dafür gibt es in der Objektorientierung das Konzept der Vererbung.
In der nächsten Lektion verbinden wir beide Klassen miteinander und lernen, wie Klassen Eigenschaften und Methoden von anderen Klassen übernehmen können.