Python: Objekte (Klassen) mit turtle

lock
Bevorstehend

Lernen Sie, wie Sie mit Klassen eigene Objekte erstellen und diese in Turtle-Grafiken verwenden.

Ziele dieses Moduls
  • Sie können erklären, was eine Klasse und ein Objekt in Python ist.
    Verstehen
  • Sie können eine einfache Klasse mit __init__ und Methoden definieren.
    Anwenden
  • Sie können mehrere Objekte einer Klasse erstellen und diese individuell verwenden.
    Anwenden

In diesem Modul lernen Sie das Konzept der objektorientierten Programmierung (OOP) kennen. Sie werden verstehen, was Klassen und Objekte sind und wie Sie damit eigene «Dinge» in Ihrem Programm erstellen können.

Mit Klassen können Sie mehrere Turtles erstellen, die unterschiedliche Eigenschaften haben – zum Beispiel verschiedene Farben oder Positionen.

Was sind Klassen und Objekte?

Stellen Sie sich vor, Sie möchten in einem Programm mehrere Turtles verwenden – jede mit einer eigenen Farbe und Position. Bisher haben Sie Unterprogramme verwendet, um Code zu organisieren. Mit Klassen können Sie noch einen Schritt weitergehen.

Eine Klasse ist wie eine Bauanleitung oder ein Bauplan. Ein Objekt ist ein konkretes «Ding», das nach dieser Bauanleitung erstellt wurde.

Beispiel aus dem Alltag:

  • Klasse: Bauplan für ein Auto
  • Objekt: Ihr konkretes Auto (rot, 5 Türen)
  • Objekt: Das Auto des Nachbarn (blau, 3 Türen)

Eine Klasse in Python definieren

Eine Klasse wird mit dem Schlüsselwort class erstellt. Der Name beginnt mit einem Grossbuchstaben.

class MeineTurtle:
    def __init__(self, farbe):
        self.t = Turtle()
        self.t.color(farbe)
    
    def quadrat(self, groesse):
        for i in range(4):
            self.t.forward(groesse)
            self.t.right(90)

Note

Wichtige Begriffe:

  • class MeineTurtle: – Definiert eine neue Klasse
  • __init__ – Wird automatisch aufgerufen, wenn ein Objekt erstellt wird
  • self – Bezieht sich auf das aktuelle Objekt
  • self.t – Ein Attribut (Eigenschaft) des Objekts, hier die Turtle
  • Turtle() – Erstellt eine neue Turtle (dank from turtle import *)

Objekte erstellen und verwenden

Nun können Sie mehrere Turtles erstellen, die alle die Methode quadrat haben, aber unterschiedliche Farben:

from turtle import *

class MeineTurtle:
    def __init__(self, farbe):
        self.t = Turtle()
        self.t.color(farbe)
    
    def quadrat(self, groesse):
        for i in range(4):
            self.t.forward(groesse)
            self.t.right(90)

# Objekte erstellen
rot = MeineTurtle("red")
blau = MeineTurtle("blue")

# Methoden aufrufen
rot.quadrat(100)
blau.t.goto(-150, 0)
blau.quadrat(50)

done()

Challenge

Aufgabe 1: Eigene Klasse erweitern

Erweitern Sie die Klasse MeineTurtle um eine Methode dreieck(self, groesse), die ein gleichseitiges Dreieck zeichnet.

Challenge

Aufgabe 2: Mehrere Turtles

Erstellen Sie drei Objekte Ihrer Klasse mit verschiedenen Farben. Lassen Sie jede Turtle eine andere Form zeichnen (Quadrat, Dreieck, Sechseck).

Challenge

Aufgabe 3: Startposition

Erweitern Sie den __init__-Konstruktor, sodass er auch eine Startposition (x, y) als Parameter akzeptiert. Die Turtle soll dann direkt an dieser Position starten.

Reflection

Reflexion

Warum sind Klassen nützlich, wenn man mehrere ähnliche Objekte braucht? Was wäre die Alternative ohne Klassen?