4.6.3 Klassen Grundlagen
🐎 Erste eigene Klasse
Man kann sich eine Klasse wie einen Bauplan vorstellen: Eine Klasse beschreibt, wie ein späteres Objekt aussehen soll und was es kann. Wir erstellen also immer zuerst die Klasse, die aus Methoden (Funktionen einer Klasse) und Attributen (Variablen einer Klasse) besteht.
- In diesem Beispiel definieren wir mit dem Schlüsselwort
class
eine Klasse namensHorse
. - Klassennamen beginnen IMMER mit einem Großbuchstaben.
- Die Methode
__init__
ist der sogenannte Konstruktor. Er wird automatisch aufgerufen, wenn ein neues Objekt (also ein konkretes Pferd) erzeugt wird. self
ist ein Verweis auf die Klasse selbst. Damit kann man Attribute (wiename
oderbeine
) zugreifen oder sie erstellen.- Die Methode
wiehern()
beschreibt, was ein Pferd tun kann – nämlich wiehern.
Im Hauptprogramm wird dann ein konkretes Objekt meinPferd
erzeugt, mit dem Namen "Lotte"
. Dieses Objekt hat:
- einen Namen (meinPferd.name
)
- vier Beine (meinPferd.beine
, wird hier nicht ausgegeben)
- die Fähigkeit zu wiehern (meinPferd.wiehern()
).
Wichtig
🧠 Merksatz: Eine Klasse ist wie ein Bauplan – das Objekt ist das fertige Produkt.
Konzept | Beschreibung |
---|---|
Klasse | Eine Vorlage (Bauplan) zur Erstellung von Objekten. Enthält Attribute und Methoden. |
Attribut | Eine Variable innerhalb einer Klasse, die den Zustand eines Objekts beschreibt. |
Methode | Eine Funktion, die in einer Klasse definiert ist. |
Objekt | Ein konkretes Exemplar einer Klasse. Auch Instanz genannt. |
Instanz | Synonym für Objekt: Ein durch eine Klasse erzeugter konkreter Datensatz. |
Konstruktor | Eine spezielle Methode (__init__ ), die beim Erzeugen eines Objekts automatisch aufgerufen wird. |
🌳 Noch eine Klasse als Beispiel
Beispiel: Einfache Klasse - Ausgabe über print in der Methode
In diesem Beispiel wird eine Klasse Baum
definiert, die die Attribute art
und hoehe
besitzt. Die Methode beschreibung()
gibt die Details des Baumes aus, indem sie die Art und die Höhe des Baumes anzeigt.
Die Ausgabe erfolgt direkt in der Methode über den print
-Befehl.
Beispiel: Einfache Klasse - Ausgabe über print im Hauptprogramm
Der String wird hier in der Methode mit return
an das Hauptprogramm übergeben. Wenn eine Übergabe aus der MEthode erfolgt, dann muss diese im Hauptprogramm auch entgegengenommen werden. Dies erfolgt mit beschreibung =
. Die Ausgabe erfolgt dann im Hauptprogramm über den print
-Befehl.
Beispiel: Einfache Klasse - Der Baum wächst ja noch...
Im Konstruktor sollen nur "Werte" übergeben werden, die sich im Objekt nicht ändern. Die Höhe kann sich ja bei einer Eiche ber die Zeit noch ändern und ist damit kein gutes Klassenattribut.
Der String wird hier in der Methode mit return
an das Hauptprogramm übergeben. Wenn eine Übergabe aus der MEthode erfolgt, dann muss diese im Hauptprogramm auch entgegengenommen werden. Dies erfolgt mit beschreibung =
. Die Ausgabe erfolgt dann im Hauptprogramm über den print
-Befehl.
📐 Beispiel: Klasse mit Methode zur Berechnung
In diesem Beispiel wird die Methode flaeche()
verwendet, um die Fläche eines Kreises zu berechnen, basierend auf dem Radius, der beim Erstellen des Objekts angegeben wurde.
Einfache Aufgabe
Frage den Radius interaktiv über input()
ab.
🔌 Pi Pico Script: Verwendung von Funktionen und Klassen
In diesem Beispiel kombinieren wir die Verwendung von Funktionen und Klassen, um eine LED am Pi Pico zu steuern.
In diesem Beispiel wird eine Klasse LedBlinker
erstellt, die eine LED steuern kann. Die Methode blink()
lässt die LED eine bestimmte Anzahl von Malen blinken.
Wichtiger Hinweis
Die Besonderheit von for _
in diesem Kontext liegt darin, dass der Unterstrich (_
) als Platzhalter für eine Variable verwendet wird, deren Wert im Schleifenrumpf nicht benötigt wird. Dies signalisiert, dass die Schleifenvariable ignoriert werden kann.
Aufgabe Funktionen zu Klassen
Nehmen Sie einen Sourcecode aus einem der Kapitel 3.1 - 3.6 und schreiben Sie den Sourcecode so um, dass eine Klasse genutzt wird.
Aufgabe
Erstellen Sie eine Klasse Ampel
, die drei LEDs (rot, gelb, grün) steuert und die Farben entsprechend einer Ampelschaltung (rot -> gelb -> grün) umschaltet. Implementieren Sie eine Methode schalten()
, die die Ampelschaltung durchführt.