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.
JavaScript für Einsteiger - In einfachen Schritten zum Programmier-Experten: Der leicht verständliche und praxisnahe Leitfaden zum professionellen Programmieren im Handumdrehen