Klassenentwurf

Eine zentrale Rolle nehmen bei der objektorientierten, gemeinschaftlichen Softwareentwicklung die sogenannten Klassendiagramme ein. Nahezu allen größeren Softwareprojekte werden heutzutage nach diesem Paradigma entwickelt.

Ausgehend von den Entwurfsdiagrammen, die du im vorigen Abschnitt kennengelernt hast erstellt man ein Implementationsdiagramm, welches detailliert angibt, wie eine Klasse in einer Programmiersprache umgesetzt werden muss.

Beispiel: Münzen schnippsen

Es soll ein Spiel modelliert werden, das folgendermaßen funktioniert:

Zwei Spieler spielen mit jeweils einer Münze auf einem Spielfeld auf ein Tor. Zuerst werfen Sie ihre Münze ins Spielfeld ein. Anschließend schnippsen sie ihre Münze mit den Fingern in Richtung Tor. Wie gut die Münzen eingeworfen und geschnippst werden können, hängt von den Fähigkeiten der jeweiligen Spieler ab. Wenn die Münzen das Spielfeld verlassen, müssen sie neu „eingeschnippst“ werden. Die Position der Münzen und des Tors werden durch x-y-Koordinaten festgelegt.

Das Aufeinanderprallen der Münzen sowie die eigentliche Bewegung soll bei der Modellierung der Miniwelt vernachlässigt werden.

Spielverlauf:

Zwei Spieler mit jeweils einer Münze schnippsen ihre Münze vom Spielfeldrand auf der Seite des Tors aufs Spielfeld.

Befinden sich beide Münzen im Spielfeld können die Spieler abwechselnd versuchen, diese durch Schnippsen ins Tor zu befördern.

Wer seine Münze als erstes im Tor unterbringt, hat das Spiel gewonnen.

Objektdiagramm

In einem Objektdiagramm kann man jetzt den ersten Abstraktionsschritt festhalten: An konkreten Objekten veranschaulicht man sich die Situation und identifiziert wichtige Eigenschaften der Objekte. Außerdem kann man siech hier überlegen, welche Fähigkeiten die Objekte haben sollten.

Welche Objekte gibt es?

Zuerst überlegt man sich mal, welche Objekte es grundsätzlich abzubilden gibt:

Um Eigenschaften und Fähigkeiten besser analysieren zu können, bietet es sich an, sich eine konkrete Situation vorzustellen, dann wird schnell klar, was hier benötigt wird: