Sie sind auf Seite 1von 23

Willkommen zum iMooX Kurs „Programmieren

Lernen mit Python: Objektorientierte


Programmierung“. Wir freuen uns, dass wir dir
dieses Thema näherbringen können.

Mein Name ist Daniel Dohr und ich werde dich in


diesem MOOC durch das Thema der
objektorientierten Programmierung in Python
führen. Dieser Kurs wurde mit der inhaltlichen und
didaktischen Unterstützung von Josef Wachtler
entwickelt. Bevor wir beginnen, ein kurzer Hinweis.
Damit die präsentierten Konzepte leichter zu
verstehen sind, ist es wichtig, dass du bereits mit
den Grundlagen von Python, wie Datentypen und
Variablen vertraut bist. Falls dies nicht der Fall ist,
empfehle ich Dir den Kurs „Programmieren Lernen
mit Python: Grundlagen“ als Vorbereitung." Gehen
wir nun direkt zur Organisation dieses Kurses
über.
● Dieser Kurs besteht aus vier Lektionen, die
aufeinander aufbauen. Folgende Inhalte
werden behandelt:
• In Lektion 1 werden wir die Grundlagen der
objektorientierten Programmierung sowie die
wichtigsten Begriffe besprechen. Diese Einheit
wird hauptsächlich theoretischer Natur sein, um
einen Überblick zu erhalten. In den
kommenden Lektionen werden wir die hier
besprochenen Konzepte noch einmal in der
Praxis demonstrieren.
• In Lektion 2 werden wir das erlernte Wissen in
einem Beispiel in der Programmiersprache
Python umsetzen. Hier werden wir uns
insbesondere auf Attribute und den Konstruktor
konzentrieren.
• Lektion 3 baut direkt auf unserem Beispiel auf
und wir werden uns Methoden und
Verkapselung genauer ansehen.
• In der letzten Lektion, Lektion 4, werden wir uns
mit den Themen Vererbung und
Polymorphismus auseinandersetzen.
● Am Ende dieses Kurses solltest du das nötige
Wissen besitzen, um komplexere Programme
zu schreiben.
● Beginnen wir diese Lektion direkt mit der Frage:
Was objektorientierte Programmierung, kurz
OOP, eigentlich bedeutet.
● OOP ist ein Programmierparadigma bei dem
das Softwaredesign um Objekte herum
organisiert wird. Das bedeutet, dass in diesem
Modell zusammengehörige Daten und
Verhaltensweisen in sogenannten Objekten
zusammengefasst werden. Aber was ist ein
Objekt genau? Von welchen Daten und
Verhaltensweisen ist die Rede und was haben
Klassen damit zu tun?
Sehen wir uns zunächst die Idee hinter Klassen an.
● Eine Klasse ist ein abstrakter Datentyp, der die
Struktur, beziehungsweise den Aufbau und das
Verhalten von Objekten definiert. Die Klasse
fungiert als Bauplan um Objekte zu erzeugen.
Dieser Plan beinhaltet dann Vorgaben für die
Datenfelder, auch Attribute genannt, und
Verhaltensweisen beziehungsweise Methoden.
Es gibt verschiedene Arten von Klassen. Einige
von ihnen werden wir uns im Verlauf dieses
Kurses genauer ansehen.
● So viel zur Grundidee. Klassen fungieren als
Bauplan für Objekte. Sehen wir uns diese
genauer an.
● Objekte sind Instanzen einer Klasse, die dann
die tatsächlichen Daten enthalten. Das
bedeutet nun auch, dass diese Objekte einen
bestimmten Typ haben, der durch die Klasse
definiert ist und wir somit festgelegt haben,
welche Datenfelder und Funktionen uns zur
Verfügung stehen. Diese Datenfelder, auch
Attribute genannt, werden dann während
beziehungsweise nach der Instanziierung mit
den tatsächlichen Daten befüllt. Diese Daten
können von Objekt zu Objekt unterschiedlich
sein. Wie zum Beispiel bei unseren beiden
Schüsseln. Eine Schüssel ist grün, die andere
ist rot. Sie sind zwar nach dem gleichen
Bauplan gebaut, haben aber unterschiedliche
Farben.
● Zusammengefasst: Objekte erleichtern es uns,
Informationen zu verstehen, indem sie sie in für
uns verständliche, abgegrenzte Einheiten
zusammenfassen. Dadurch können wir die
Beziehungen zwischen Objekten in einem
System leichter darstellen und verstehen. Auch
die Erzeugung und Wartung von Code wird
durch diese Abgrenzung vereinfacht und das
erlaubt es uns komplexe Anwendungen bzw.
Programme zu schreiben.
● Sehen wir uns ein anderes Beispiel an.
● Für unser Beispiel definieren wir eine Klasse
namens „Person“, welche die Attribute „Name“
und „Age“ enthält. Wir erstellen dann mehrere
Objekte von dieser Klasse, zum Beispiel „Alice“
mit dem Namen „Alice“ und dem Alter 27 und
ein Objekt namens „Bob“ mit dem Namen „Bob“
und dem Alter 20. Beide Objekte haben die
gleichen Methoden, z.B. eine Methode, die es
uns erlaubt das Alter zu ändern oder zu
erfahren. Würden wir jetzt die Methode
TellAge() ausführen, würden wir
unterschiedliche Werte zurückerhalten. Für Bob
wäre das 20 und für Alice 27.
● Nun da wir wissen was Objekte und Klassen
sind, können wir nun zu den Themen
Kommunikation und Verkapselung übergehen.
● Das Konzept von OOP basiert auf der Idee,
dass Objekte zusammengehörige Logik in einer
Einheit zusammenfassen. Um diese Einheiten
effektiv nutzen zu können, ist es jedoch auch
wichtig, dass diese Objekte miteinander
kommunizieren können. Durch die Verwendung
von Methoden, Ereignissen und Verkapselung
können wir steuern, wie ein Objekt mit einem
anderen interagiert.
● So eine Kommunikation zwischen Objekten
kann zum Beispiel direkt über die
Objektreferenz oder ein Event-System erfolgen.
Zum Thema Kommunikation gibt es mehrere
relevante Konzepte. Wir werden uns im
Rahmen dieses Kurses mit Methoden,
Verkapselung und dem Anwendungsbereich
auseinandersetzen.
● Der Anwendungsbereich ist der
Programmbereich, in dem eine Variable gültig
ist. Es gibt verschiedene Arten von
Anwendungsbereichen beziehungsweise
Scopes, wie den Block-Scope, in dem eine
Variable innerhalb eines bestimmten Code
Blockes gültig ist, oder den Funktions-Scope, in
dem eine Variable innerhalb einer Funktion
gültig ist. Der Scope ist in den meisten
Programmiersprachen mit geschwungenen
Klammern gekennzeichnet, in Python werden
jedoch Einrückungen verwendet. Es ist auch
wichtig beim Anwendungsbereich zu beachten,
das dieser nicht nur entscheidet wo eine
Variable verwendet werden kann, sondern
auch, wie lange eine Variable im Speicher
bleibt. In den meisten Programmiersprachen ist
es nämlich so, dass Objekte zerstört werden,
nachdem der Scope verlassen wurde, in dem
sie erstellt wurden.
● Das Konzept der Verkapselung in der
objektorientierten Programmierung bezieht sich
darauf, wie der Zugriff auf die Membervariablen
und -funktionen eines Objektes gesteuert wird.
Wenn die Felder und Funktionen als öffentlich
zugänglich gekennzeichnet sind, können sie
direkt über die Objektreferenz, also von außen,
aufgerufen werden. Sollten sie jedoch als
private gekennzeichnet sein, können sie nur
innerhalb der Klasse aufgerufen werden, in der
sie definiert sind.
● In verschiedenen Programmiersprachen
werden unterschiedliche Schlüsselwörter
verwendet, um die Verkapselung zu steuern.
Die gängigsten sind die Wörter public und
private, wir werden jedoch dann bei unseren
Beispielen sehen, dass Python in der Hinsicht
etwas anders funktioniert.
● Das Verwenden von Verkapselung hat einige
Vorteile. Mit ihr können wir Teile eines
Programms vor unbefugtem Zugriff schützen
und sicherstellen, dass bestimmte Teile des
Codes nur in bestimmten Situationen
aufgerufen werden können. Wir können
sicherstellen, dass Daten nur innerhalb des
Objektes modifiziert werden, was uns hilft die
Integrität der Daten zu wahren. Weiters können
wir mit Verkapselung die Komplexität
verbergen, was uns hilft größere Systeme
besser zu verstehen.
● Kommen wir nun zum Schluss zu einem letzten
wichtigen Thema in der objektorientierten
Programmierung, der Vererbung.
● Das Konzept der Vererbung ist eines der
Grundprinzipien der objektorientierten
Programmierung. Mit Vererbung können wir
von einer bereits bestehenden Klasse ableiten
und diese erweitern, um speziellere Klassen zu
erstellen. Das hilft uns dabei, Code
wiederzuverwenden und unsere Klassen
besser zu strukturieren. Auch hilft uns dieses
Konzept bei der Wartung von Code, da
Änderungen in der Basisklasse auch die
abgeleiteten Klassen aktualisiert. Am besten
sehen wir uns direkt ein Beispiel an.
● In unserem Beispiel haben wir eine "Tier"
Klasse, die Attribute und Funktionen enthält,
die für Tiere wie Hunde oder Enten nützlich
sind. Diese Klasse nennen wir die
"Elternklasse". Von der "Tier" Elternklasse
können wir spezialisierte Klassen ableiten, wie
zum Beispiel "Hund", "Ente" und "Biber", die wir
die "Kindklassen" nennen. Jede dieser
Kindklassen kann die Funktionen und Attribute
der "Tier" Elternklasse verwenden und darüber
hinaus spezifische Funktionen und Attribute
hinzufügen, die nur für diese spezielle Tierart
relevant sind. Wir können auch von den
abgeleiteten Klassen wieder ableiten und so
zum Beispiel mehrere verschiedene
Hundeklassen erstellen.
● Der Vorteil von Vererbung ist, dass wir den
Code für jedes Tier viel kürzer halten können,
indem wir nur die spezifischen Funktionen und
Attribute für die Kindklassen hinzufügen, anstatt
den gesamten Code jedes Mal neu zu
schreiben. Auf diese Weise wird der Code
wiederverwendet, unsere Klassen lassen sich
besser strukturieren und unser Programm ist
übersichtlicher und einfacher gestaltet.
● Somit endet unsere erste Lektion. Wir haben
uns mit dem Thema der objektorientierten
Programmierung beschäftigt und erfahren,
wofür Klassen und Objekte verwendet werden.
Außerdem haben wir uns mit der
Kommunikation zwischen Objekten
auseinandergesetzt und uns die
Anwendungsbereiche, die Verkapselung und
die Vererbung genauer angesehen.
● In der nächsten Lektion werden wir uns
ansehen, wie diese Konzepte in Python
aussehen und unsere ersten Klassen
schreiben. Bis demnächst.

Das könnte Ihnen auch gefallen