04 - Objekteorientierte Programmierung
Python ist eine objektorientierte Programmiersprache. Das bedeutet, dass alle Daten in Objekten gespeichert werden. Objekte sind eine Kombination aus Daten und Funktionen, die auf diese Daten angewendet werden können. Die Daten werden in Variablen gespeichert, die Funktionen werden Methoden genannt.
Objekte
Bisher haben wir unbewusst schon mit Objekten gearbeitet und kennen daher auch schon einige. Zum Beispiel kennen wir die Datentypen int
, float
, str
und bool
. Diese Datentypen sind Objekte, die Daten und Methoden enthalten.
Methoden
Methoden sind Funktionen, die auf Objekte angewendet werden können. Sie werden mit einem Punkt an das Objekt angehängt. Die Syntax ist objekt.methode()
. Die Klammern sind dabei wichtig, da sie angeben, dass es sich um eine Funktion handelt. Als Beispiel schauen wir uns nun einige Methoden an.
Methoden von str
Wir kennen bereits die Methode str.isdigit()
. Diese Methode prüft, ob ein String nur aus Ziffern besteht.
str.lower()
wandelt alle Buchstaben in einem String in Kleinbuchstaben um.
str.upper()
wandelt alle Buchstaben in einem String in Großbuchstaben um.
str.replace(alt, neu)
ersetzt alle Vorkommen von alt
durch neu
.
str.split(sep)
teilt einen String an den Stellen, an denen sep
vorkommt. Das Ergebnis ist eine Liste.
Methoden von list
list.append(element)
fügt ein Element am Ende einer Liste hinzu.
list.insert(index, element)
fügt ein Element an der Stelle index
in eine Liste ein.
list.remove(element)
entfernt das erste Vorkommen von element
aus einer Liste.
list.pop(index)
entfernt das Element an der Stelle index
aus einer Liste und gibt es zurück.
list.sort()
sortiert eine Liste.
list.reverse()
dreht die Reihenfolge der Elemente in einer Liste um.
list.index(element)
gibt den Index des ersten Vorkommens von element
in einer Liste zurück.
list.count(element)
gibt die Anzahl der Vorkommen von element
in einer Liste zurück.
list.clear()
löscht alle Elemente aus einer Liste.
Klassen
Klassen sind die "Baupläne" für Objekte. Sie enthalten die Daten und Methoden, die ein Objekt haben soll. Um ein Objekt zu erstellen, wird eine Klasse instanziiert. Das bedeutet, dass ein Objekt der Klasse erstellt wird.
Klassen erstellen
Eine Klasse wird mit dem Schlüsselwort class
erstellt. Nach dem Schlüsselwort folgt der Name der Klasse. Der Name wird mit einem Großbuchstaben geschrieben. Anschließend folgt ein Doppelpunkt und die Definition der Klasse.
Wir haben uns jetzt eine Klasse erstellt, die noch keine Daten und Methoden enthält.
Objekte erstellen
Um ein Objekt zu erstellen, schreiben wir den Namen der Klasse gefolgt von runden Klammern. Anschließend speichern wir das Objekt in einer Variable.
Wir haben nun ein Objekt der Klasse Auto
erstellt. Das Objekt wird in der Variable auto
gespeichert. Wenn wir das Objekt ausgeben, sehen wir, dass es sich um ein Objekt der Klasse Auto
handelt.
Daten hinzufügen
Wir wollen nun Daten zu unserer Klasse hinzufügen. Dazu erstellen wir eine Methode __init__
. Diese Methode wird aufgerufen, wenn ein Objekt der Klasse erstellt wird. Die Methode erwartet mindestens einen Parameter, der self
heißt. Dieser Parameter ist eine Referenz auf das Objekt, das erstellt wird. Wir können nun Daten zu dem Objekt hinzufügen, indem wir sie mit einem Punkt an self
hängen.
klassen1.py | |
---|---|
blau
Wir haben nun Daten zu unserer Klasse hinzugefügt. Diese Daten werden Attribute genannt. Wir können die Attribute mit einem Punkt an das Objekt hängen. Wir können die Attribute auch verändern, indem wir sie mit einem Punkt an das Objekt hängen und ihnen einen neuen Wert zuweisen.
Methoden hinzufügen
Wir wollen nun Methoden zu unserer Klasse hinzufügen. Dazu erstellen wir eine Funktion innerhalb der Klasse. Die Funktion erwartet mindestens einen Parameter, der self
heißt. Dieser Parameter ist eine Referenz auf das Objekt, auf dem die Methode aufgerufen wird.
10
Wir haben nun eine Methode zu unserer Klasse hinzugefügt. Diese Methode fügt dem Attribut tank
einen Wert hinzu. Wir können die Methode mit einem Punkt an das Objekt hängen. Die Methode erwartet einen Parameter, der liter
heißt. Dieser Parameter ist der Wert, der dem Attribut tank
hinzugefügt wird.
Ein Auto kann natürlich nicht nur betankt werden, sondern auch beschleunigen und bremsen. In unserem Modell können wir bisher noch keine Zeit messen, daher verbraucht unsere Auto nur beim Beschleunigen Benzin. Wir wollen nun eine Methode beschleunigen
hinzufügen, die die Geschwindigkeit des Autos erhöht und Benzin verbraucht. Wir wollen auch eine Methode bremsen
hinzufügen, die die Geschwindigkeit des Autos verringert.
Geschwindigkeit: 10
Tank: -0.5
Geschwindigkeit: 5
Wir haben nun zwei Methoden hinzugefügt, die die Geschwindigkeit des Autos verändern. Die Methode beschleunigen
erhöht die Geschwindigkeit und verbraucht Benzin. Die Methode bremsen
verringert die Geschwindigkeit. Wir können die Methoden mit einem Punkt an das Objekt hängen. Die Methoden erwarten einen Parameter, der geschwindigkeit
heißt. Dieser Parameter ist der Wert, um den die Geschwindigkeit erhöht oder verringert wird.
Allerdings können wir auch mit leerem Tank beschleunigen. Das wollen wir verhindern, indem wir die Methode beschleunigen
ändern.
... TODO ...