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