Benutzer-Werkzeuge

Webseiten-Werkzeuge


schule:klassendiagramm

UML-Klassendiagramm

Häufig stellt man fest, dass es Objekte gibt, die sich in ihren Eigenschaften oder Verhalten (Attributen oder Methoden) ähneln. Diese Gemeinsamkeiten werden in Klassen zusammengefasst. Neben Eigenschaften bzw. Attributen habe Klassen Methoden, die aufgerufen werden können und ihr Verhalten bestimmen. Alle Objekte einer Klasse haben den gleichen Aufbau und verhalten sich ähnlich. Man kann sie übersichtlich in Klassendiagrammen darstellen.

Details stehen in UML 2.0 Pocket-Reference im Abschnitt »Class Diagrams« und in der UML-Notationsübersicht.

Aufbau und Zweck

Person
- name: string
- alter: int
+ erfrage_Name(): string
+ erfrage_Alter(): int
+ alter_Festlegen(neuesAlter: int): void
+ laufen(): void
+ essen(nahrungsMittel: Nahrung): void
  • Warum? Um Übersicht über ein komplexes Programm zu erhalten.
  • Für jede Klasse wird ein Kasten gezeichnet.
  • Der Kasten hat drei Bereiche:
    1. oben steht der Klassenname
    2. in der Mitte stehen die Attribute
    3. unten stehen die Methoden
  • Rückgabewerte von Methoden und Datentypen von Attributen und Parametern stehen am Ende und sind durch einen Doppelpunkt getrennt.
  • Sichtbarkeiten public/private/protected werden durch +/-/# abgekürzt.
  • Beziehungen zwischen Klassen lassen sich darstellen: „besteht aus“, „erbt von“

Umsetzung in Quelltext

Programmiersprachen realisieren Klassen auf unterschiedliche Arten, die sich häufig jedoch in weiten Teilen ähneln.

Klassen in Python

Klassen werden in Python mit dem Schlüsselwort class beschrieben. Attribute werden im Konstruktor __init__(self) mit self an die erzeugte Instanz gebunden. Methoden haben einen Namen (häufig ein Verb), ggf. Parameter und ggf. einen Rückgabewert.

Achtung: Jede Methode hat als ersten Parameter das Attribut self. Beim Aufruf der Methode wird dieser jedoch nicht angegeben.

class Person:
 
    def __init__(self):
        self.name = ""
        self.alter = 0
 
    def erfrage_Name(self):
        return self.name
 
    def erfrage_Alter(self):
        return self.alter
 
    def alter_festlegen(self, neues_Alter):
        self.alter = neues_Alter
 
    def laufen():
        # ...
        pass
 
    def essen(self, nahrungsMittel):
        nahrungsmittel.aufessen()
 
 
# Sobald die Klasse deklariert ist, können Objekte erzeugt
# und die Methoden und Attribute verwendet werden.
 
peter = Person()
peter.name = "Peter"
print(peter.erfrage_Name())  # "Peter"
peter.alter_festlegen(18)
print(peter.erfrage_Alter()) # 18

Kapitel 8: Objektorientierte Programmierung in dem Buch Raspberry Pi programmieren mit Python beschreibt, wie die Objekt-Orientierte Programmierung in Python realisiert wurde.

Weitere Details stehen in Python Crashkurs Kapitel 9: Classes/Klassen.

In Python können auch Typen mit sogenannten type hints angegeben werden.

Klassen in C#

Klassendiagramme für Python

Verschiedene IDEs wie etwa PyCharm ermöglichen es, Klassendiagramme direkt aus dem Quelltext generieren zu lassen. Für Dokumentationszwecke ist das sinnvoll, für die Planung hingegen nicht, da zu diesem Zeitpunkt ja noch kein Quelltext existiert.

Achtung! Klassendiagramme, die von IDEs generiert werden, sind häufig nicht standardkonform, sondern bilden spezifische Besonderheiten der Programmiersprache ab.

Mit dem Programm pyreverse können Klassendiagramm aus Python-Quelltext automatisch erstellt werden. Es ist Bestandteil des größeren Paketes Pylint, das den Quelltext analysieren und auf Fehler hinweisen kann.

Ein Klassendiagramm wird mit dem folgenden Aufruf erstellt

pyreverse -o png -f ALL quelltext.py

Die Option -o gibt das Ausgabeformat und -f einen Filter an (ALL zeigt alle Zugriffsebenen: private, public und protected). Leider ermittelt das Programm keine Rückgabewerte und zeigt auch keine Parameter von Methoden an.

Klassendiagramme in IHK-Prüfungen

Klassendiagramme kommen häufig in IHK-Prüfungen vor. So z.B. in 2015, Winter, Handlungsschritt 2.

schule/klassendiagramm.txt · Zuletzt geändert: 2024-01-03 10:06 von pintman