Klassen und Objekte

In der Objektorientierung werden die Art und der Name der Eigenschaften sowie der zugehörigen Programmteile in einer Einheit zusammengefasst. Diese Zusammenfassung wird Klasse genannt. Die Eigenschaften heißen Attribute und die Programmteile werden Methoden genannt.

Eine Klasse ist jedoch nur eine abstrakte Beschreibung, also eine Vorlage, so ähnlich wie ein Bauplan oder ein Kochrezept. Eine Klasse enthält keine konkreten Daten.

Um diesen Klassen Daten zuzuweisen erstellt man sogenannte Objekte, das nennt man Instanziierung. Dabei übernimmt jedes Objekt alle Attribute und Methoden der Klasse und erhält einen eindeutige Namen. Jedes Attribut der Klasse, also jeder Baustein des Bauplans, wird zusätzlich mit einem eindeutigen Wert gefüllt, das nennt man dann Initialisierung.

Beispiel 1:

  • Die Klasse haus beschreibt alle Häuser im Allgemeinen, ist also der Bauplan für Häuser
  • Alle Häuser haben zum Beispiel ein Dach, also ein Attribut dach.
  • Das Objekt haus1 wird instanziiert aus der Klasse haus , also nach dem Bauplan haus erstellt. Damit hat das haus1 auch ein Attribut dach, das zum Beispiel mit dem Wert "rot" initialisiert wird, das Dach von haus1 ist also rot.

Beispiel 2:
Roboter No.6 ist ein nach einem Bauplan für Roboter der Baureihe 6 gebaut worden. Dieser Bauplan besagt unter anderem, dass alle Roboter der Baureihe 6 einen Antrieb haben und herumfahren können. Jeder Roboter hat dabei natürlich seinen eigenen speziellen Antrieb. Damit ergibt sich für die objektorientierte Modellierung folgendes:

  • Es gibt eine Klasse RoboterBaureihe6.
  • Jeder Roboter der Baureihe 6 hat ein Attribut Antrieb und eine Methode Fahren.
  • RoboterNo6 ist ein Objekt, das aus der Klasse RoboterBaureihe6 instanziiert wurde.
  • Für RoboterNo6 ist bei der Instanziierung ein ganz spezieller Antrieb initialisiert worden und er hat die Fahr-Funktion bekommen.

 

Attribut

In jeder Klasse werden in allgemeiner Form die Attribute (Eigenschaften) zusammengefasst. Ein Attribut setzt sich immer aus 3 Teilen zusammen:

  1. Die Sichtbarkeit:
    Jede Klasse kann vor Zugriffen von außerhalb zum Beispiel durch andere Klassen geschützt werden. Dieser Schutz mithilfe der Sichtbarkeit wird im Laufe des Kapitels relevant (siehe Kapitel "Datenkapselung").
    Merken Sie sich zunächst folgende Optionen für die Sichtbarkeit:
    • private (Symbol: -): erlaubt keinen Zugriff von außen, das Attribut wird nicht vererbt
    • protected (Symbol: #): erlaubt keinen Zugriff von außen, das Attribut wird vererbt
    • public (Symbol: +): erlaubt immer den Zugriff
    Im Rahmen des Kurses werden und sollten Sie für die meisten Attribute die Sichtbarkeit "protected" wählen.
  2. Der Name:
    Jedes Attribut besitzt einen innerhalb der Klasse einmaligen und damit eindeutigen Namen.
  3. Der Datentyp:
    Jedes Attribut besitzt einen Datentyp. Dieser Datentyp kann einfach (z.B. integer) oder komplex (z.B. array) sein. Mehr Informationen zu Datentypen finden Sie im Skript zur Vorlesung.

 

Beispiel:
No.6 hat einen Namen. In der Klasse RobotorBaureihe6 oder einer übergeordneten Klasse (siehe Kapitel "Vererbung") existiert dafür z.B. das Attribut "#name: String" (gelesen: Eine Textfolge (String) mit dem Namen name und der Sichtbarkeit protected). Der Ausdruck wird Signatur des Attributes genannt.

 

Methode

Jede Klasse enthält auch spezifisch auf die Klasse angepasste Programmteile, Methoden oder Funktionen genannt. Eine Methode setzt sich immer aus 4 Teilen zusammen:

  1. Die Sichtbarkeit:
    Genauso wie bei Attributen:
    • private (Symbol: -): erlaubt keinen Zugriff von außen, die Methode wird nicht vererbt
    • protected (Symbol: #): erlaubt keinen Zugriff von außen, die Methode wird vererbt
    • public (Symbol: +): erlaubt immer den Zugriff
    Im Rahmen des Kurses werden und sollten Sie für die meisten Methoden die Sichtbarkeit "public" wählen.
  2. Der Name:
    Jede Methode besitzt, genau wie Attribute, einen innerhalb der Klasse einmaligen und damit eindeutigen Namen.
  3. Die Übergabeparameter:
    Einer Methode können mehrere Variablen, diese werden in der Objektorientierung Parameter genannt, übergeben werden. Diese können dann, wie gewohnt, im Programmcode der Funktion verwendet werden. Jeder Parameter setzt sich aus einem innerhalb der Methode eindeutigen Namen und einem Datentyp zusammen.
    In der Objektorientierung wird der Datentyp einer Variable vorab definiert. Dieser Datentyp kann leer (void), einfach (z.B. integer) oder komplex (z.B. array) sein. Mehr Informationen zu Datentypen finden Sie im Skript zur Vorlesung.
  4. Der Datentyp des Rückgabewertes:
    Jede Methode besitzt einen Wert in Form einer Variable, der nach Abschluss der Methode zurückgegeben wird. Dieser Wert ist vergleichbar mit der Antwort auf eine Frage. Der Datentyp der Variable muss vorab festgelegt werden.

 

Beispiel:
No.6 kann für eine beliebige Zeitdauer geradeaus fahren. In der Klasse RobotorBaureihe6 oder einer übergeordneten (siehe Kapitel "Vererbung") existiert dafür zum Beispiel die Methode "+fahreGeradeaus(zeitdauer: double): void" (gelesen: Eine Methode mit dem Namen "fahreGeradeaus", der Sichtbarkeit "public" und dem Übergabeparameter "zeitdauer" vom Typ "double" und einem keinem (void) Rückgabeparameter). Der Ausdruck wird Signatur der Methode genannt.