21 Ein Zwerg

Objektorientierung heißt virtuelles Leben im Rechner betrachten. Stellen wir uns einen vereinfachten Basiszwerg mit wenigen Eigenschaften vor:

Basiszwerg. Bild: Pixabay, CC0.
  • Name, z.B. „Hugo“ – der Datentyp ist eine Zeichenkette, also ein String, abgekürzt str,
  • Alter, z.B. 31 – der Datentyp ist eine Ganzzahl, also ein Integer, abgekürzt int,
  • Größe, z.B. 48,5 – der Datentyp ist eine Kommazahl, also Float.

Der Zwerg verfüge über zwei Methoden. Er kann

  • altern und
  • sich vorstellen.

Aufgabe 1:

Instanziere ein virtuelles Objekt der Klasse ZWERG und rufe anschließend zum Test die Methode stelle_dich_vor() auf.

Aufgabe 2:

Die Zeit bleibt nicht stehen. Selbst für Zwerge nicht. Mit jedem Aufruf einer Methode altere() soll der Zwerg um ein Jahr altern.

  • Implementiere die Methode altere(), indem du sie zur Klasse ZWERG hinzufügst. – Orientiere dich dazu an der Art und Weise, wie die Methode stelle_dich_vor() geschrieben wird.
  • Teste die Klasse und die Methode. 

Schlüsselwörter und Besonderheiten

class: Es leitet die Definition einer Klasse ein. Nach class folgt in allen Fällen der Name der Klasse, hier eben ZWERG, in anderen Fällen KREIS, RECHTECK, DREIECK, usw. Klassennamen können frei gewählt werden, solange es nicht Schlüsselwörter sind. Am Ende der Zeile steht ein Doppelpunkt. Alles was zur aktuellen Klasse gehört, wird danach um einen festen Abstand eingerückt.

def: Um eine Funktion oder eine Methode zu definieren dient das Schlüsselwort def. Es folgen der Name der Funktion oder Methode, zwei Klammern und ein Doppelpunkt. Alles was zur aktuellen Definition gehört, wird danach um einen festen Abstand eingerückt.

self: Dieses Wort stellt einen Bezug innerhalb einer Klasse her her. Weil ein Name häufig nur in einem bestimmten Raum, in einem bestimmten Kontext eindeutig ist, bedeutet self soviel wie „dein eigene(r)“. Innerhalb einer Klassendefinition wird daher immer dann self geschrieben, wenn die „eigene“ Eigenschaft oder die „eigene“ Methode gemeint ist. Im oberen Beispiel etwa self.alter oder self.stelle_dich_vor().

__init__: Dieses Wort bezeichnet die Konstruktormethode einer Klasse in Python. Der Konstruktor hat immer denselben Namen.

Links:

20 Das Zwergensystem

Objekte und Systeme von Objekten kann man sehr schön mit Zwergen veranschaulichen; Zwerge im Sinn von Gartenzwergen, im Sinn der Fabelwesen aus dem Herrn der Ringe, der Heinzelmännchen oder ähnlichem.
Warum?
In allen Filmen und Erzählungen sind Zwerge autonome Wesen. Sie haben bestimmte Eigenschaften (Attribute) und verfügen in der Regel über spezielle Fähigkeiten (Methoden). Ein System von Zwergen kann man daher sehr schön objektorientiert modellieren.  Die Darstellung und das Bild folgen dem fiktionalen Rahmen.

Bild: Pixabay, CC0.

Eine Rückübertragung der Vorstellung von Zwergen auf die menschliche Gesellschaft ist hier an keiner Stelle intendiert.