Skip to content

Das Objekt

Objektorientiertes Programmieren

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.

  1. Notiere Eigenschaften der Turtle (auch solche die du selber nicht direkt siehst)
  2. Notiere Methoden (also Fähigkeiten) der Turtle (die hast du wohl bereits verwendet)

Zusatzaufgabe: Schaf

  1. Kommen dir weitere Eigenschaften für die Klasse Sheep in den Sinn?
  2. 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:

python
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:

python
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:

Object Insepctor

So finden wir z.B. die Eigenschaften _pencolor und _position. Darauf lässt sich nun auch direkt zugreifen:

python
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.

Gymnasium Kirchenfeld, fts & lem