Lektion 8: Objektorientierte Programmierung
- Was ist OOP und warum braucht man es?
- Die drei Säulen der OOP
- Programmieren mit Klasse(n)
- Aus Klassen werden Objekte
- Die Rolle des Konstruktors
- Members implementieren
- Klassen erben von anderen Klassen
- Polymorphie (oder das, was Python darunter versteht)
Was ist OOP und warum braucht man es? (Teil 1)
- OOP = Objektorientierte Programmierung
- Entstand Anfang der 80er Jahre und hat die Programmierung seit den 90er Jahren stark verändert
- Die Idee war, dass über Klassen eine bessere Abbildung von Gegenständen aus der realen Welt auf Datenstrukturen möglich sein soll
- Objekte besitzen Eigenschaften (Properties) und Aktionen (Methoden)
- Alle moderneren Programmiersprachen sind objektorientiert
Was ist OOP und warum braucht man es? (Teil 2)
- Gegenstände über Klassen abbilden
- Das klassische Beispiel ist das Auto
- Eigenschaften: Farbe, Gewicht, Schadstofklasse, Leistung usw.
- Methoden: Fahren, Bremsen
- Ganz so einfach geht es in der Praxis natürlich nicht
Die klassischen drei Säulen der OOP
- Kapselung
- Vererbung
- Polymorphie
- Gute Definition auf Wikipedia: https://de.wikipedia.org/wiki/Objektorientierte_Programmierung
Warum OOP?
- Kapselung von Funktionalitäten und Datenstrukturen ist immer sinnvoll
- Strukturierte Datenelementen können nur über Klassen repräsentiert werden
- Das Prinzip der Vererbung wird vor allem in GUI-Frameworks verwendet, da einfache GUI-Elemente die Grundlage für umfangreichere GUI-Elemente bilden
Programmieren mit Klasse(n)
- Eine Klasse wird mit dem class-Befehl definiert
- Properties werden als Variablen im Konstruktor festgelegt
- Besondere Schreibweise: self.NameDerProperty = Wert
- Methoden sind lediglich Functions innerhalb der Klasse
- Besonderheit: Der erste Parameter ist immer self
Die Rolle von self
- In jeder Klassendefinition kommt "überall" self vor
- self steht für die Klasse selber und beim Konstruktor und Methoden für die aktuelle Instanz der Klasse
Die Rolle des Konstruktors
- Function mit dem Namen __init__(self)
- Wird automatisch ausgeführt, wenn die Klasse verwendet wird
- In der Regel wird der Konstruktor mit weiteren Parametern definiert
Aus Klassen werden Objekte
- Eine Klasse ist nur eine Definition
- Ein Programm arbeitet mit Objekten
- Ein Objekt entsteht aus einer Klasse
- Die resultierende Referenz wird in der Regel einer Variablen zugewiesen
- Das Ergebnis ist eine Variable tier1, die eine Referenz (Adresse) des Objekts enthält
- Von einer Klasse können beliebig viele Objekte gebildet werden
Members implementieren
- Es gibt zwei Sorten von Members: Properties und Methods
- Properties sind Eigenschaften, die wie eine Variable für einen Wert steht
- Properties werden im Konstruktor definiert
- Methoden sind Functions, die zu der Klasse gehören
- Methoden werden innerhalb der Klassendefinition definiert
- Der erste Parameter ist immer self
Klassen erben von anderen Klassen (Teil 1)
- Vererbung wird auch ableiten einer Klasse genannt
- Erbt Klasse B von Klasse A, übernimmt Klasse B automatisch alle Members der Klasse A
- A ist die Basisklasse (oder auch Superklasse genannt)
- Bei Python gibt es Mehrfachvererbung (was relativ selten ist)
- Mehrfachvererbung = Eine Klasse C kann von einer Klasse A und einer Klasse B abgeleitet werden
Klassen erben von anderen Klassen (Teil 2)
- Schreibweise: Der Name der Basisklasse wird bei der Klassendefinition in Klammern gesetzt
- Die neue Klasse Hund erbt von der Klasse Tier
- Tier ist die Basisklasse der Klasse Hund
- Innerhalb der Klasse Hund wird die Basisklasse über super() angesprochen
Zusammenfassung
- Python ist eine objektorientierte Programmierung
- OOP = Kapselung und Vererbung
- Über den class-Befehl wird eine neue Klasse definiert
- Eine Klasse besitzt einen Konstruktor (__init__), Properties und Methoden (Members)
- Mit einer Klasse werden Objekte angelegt, die alle Members der Klasse besitzen
- Jede Klasse kann von anderen Klassen abgeleitet werden (Vererbung)
- Es gibt Einfach- und Mehrfachvererbung
Made with Slides.com