Das Objekt wäre das einzelne Schaf mit seinen speziellen Eigenschaften und den Methoden. Aus einer Klasse können wir beliebig viele Objekte erzeugen. Diese können sich in ihrem Namen und den Werten der Eigenschaften unterscheiden.
Etwas salopp gesagt ist die Klasse eine Vorlage für das Objekt.
Sowohl Methoden also auch Eigenschaften sind bereits in der Klasse definiert. Das Objekt gibt den Eigenschaften Werte und kann die Methoden aufrufen.
Definition: Abstraktion
Abstraktion bedeutet, die wesentlichen, bedeutsamsten Eigenschaften von etwas zu identifizieren, während man gleichzeitig alles Nebensächliche und Unbedeutende verwirft.
Im Sinne der Abstraktion überlegen wir uns, welche Eigenschaften und Methoden unser Objekt haben muss, damit wir unser Programm so wie geplant funktioniert. So ist bei der Turtle eigentlich egal, ob sie lieber Karotten oder Salat ist. Aber ihre Position und ihre Ausrichtung sind für unsere Turtle-Anwenundung sehr wichtig.
Aufgabe: Turtle
Als Vorbereitung haben wir bereits die Klasse Turtle
verwendet.
- Notiere Eigenschaften der Turtle (auch solche die du selber nicht direkt siehst)
- Notiere Methoden (also Fähigkeiten) der Turtle (die hast du wohl bereits verwendet)
Zusatzaufgabe: Schaf
- Kommen dir weitere Eigenschaften für die Klasse
Sheep
in den Sinn? - Hast du Ideen für zusätzliche Methoden?
Objekte erzeugen
Im ersten Kapitel haben wir gesehen, wie wir die Turtle
-Klasse verwenden können um Turtles zu erzeugen und diese zu steuern. Jede Turtle hat eigene Werte für Posititon, Richtung und Farbe:
from turtle import Turtle, done
jake = turtle.Turtle()
jake.color("lightblue")
cindy = turtle.Turtle()
cindy.color("violet")
cindy.left(30)
jake.right(30)
cindy.forward(200)
jake.forward(200)
done()
Ein Objekt der Klasse Sheep
können wir nicht erstellen, da Python diese Klasse gar nicht kennt. Im nächsten Kapitel lernen wir, wie man eine eigene Klasse definiert.
Hätten wir aber eine Datei sheep.py mit einer Klasse Sheep
, so könnten wir auch Sheep-Objekte erzeugen:
from sheep import Sheep
shaun = Sheep()
timmy = Sheep()
Eigenschaften setzen
Normalerweise greift man nicht direkt auf die Eigenschaften des Turtle-Objektes zu. So wird z.B. die Farbe über die Methode color()
gesetzt. Wir wissen nicht einmal wie die Eigenschaft heisst, die über diese Methode verändert wird – aber irgendwo muss ja die gesetzte Farbe gespeichert werden.
Wir können uns in Thonny über den Menupunkt View die Bereiche Variables und Object inspector anzeigen lassen. Wenn wir dann eine Turtle erzeugen und nicht done()
aufrufen, dann können wir das Objekt und seine Eigenschaften (Attributes) inspizieren:
So finden wir z.B. die Eigenschaften _pencolor
und _position
. Darauf lässt sich nun auch direkt zugreifen:
from turtle import Turtle
jake = Turtle()
jake._pencolor="violet"
jake.forward(100)
print(jake._position)
Zusatzaufgabe
Was spricht für den direkten Zugriff auf diese Eigenschaften? Was dagegen? Überlege und halte fest.