Table of Contents

10. Objektorientierte Programmierung (OOP)

Themen
Motivation: Warum objektorientiert programmieren?
Paradigmenwechsel: strukturiert zu objektorientiert
Grundlagen: Konzepte der objektorientierten Programmierung
Ausblick: objektorientiertes Design
Folien
PDF
Glossar
PDF


Ein aus Zeitgründen in diesem Durchlauf der Vorlesung entfallendes Kapitel zu Programmierparadigmen existiert als fakultativer Anhang. Dort werden die drei grundlegenden Programmierparadigmen strukturiert, objektorientiert und funktional kurz vor- und gegenübergestellt.

Zentrale Aspekte

Fragen zur Vertiefung und Wiederholung

Diese Fragen dienen der persönlichen Beschäftigung mit der Thematik, werden aber nicht separat in der Vorlesung besprochen.

OOP in Python

Python ist eine intrinsisch objektorientierte Programmiersprache (alles in Python ist ein Objekt), auch wenn manche Aspekte (insbesondere die Kapselung) lockerer gehandhabt werden als in Sprachen wie C++ oder Java. Python ist deshalb vielleicht nicht die am besten geeignete Programmiersprache, um die Konzepte der OOP (und die “reine Lehre”) zu erlernen. Abseits solcher eher akademischen Diskussionen ist Python aber sehr gut geeignet, um die grundlegenden Konzepte der OOP umzusetzen – man ist nur, wie so oft bei Python, selbst dafür verantwortlich, den entsprechenden Konventionen zu folgen.

Für eine Einführung in die objektorientierte Programmierung mit Python gibt es auch einen entsprechenden Abschnitt im Python-Kurs des Autors.

Weiterführende Literatur

Eine kommentierte und handverlesene Liste mit weiterführender Literatur zum Thema. Die Auswahl ist zwangsläufig subjektiv.

Eines der wenigen Bücher, die sich darum bemühen, das Paradigma der objektorientierten Programmierung allgemein und möglichst unabhängig von der konkreten Implementierung in einer Programmiersprache darzustellen, ist [Weisfeld, 2013Weisfeld, Matt (2013): The Object-Oriented Thought Process, Addison-Wesley, Upper Saddle River, New Jersey]. Sehr auf Beispiele aus dem wissenschaftlichen Kontext und auf Python als Programmiersprache zugeschnitten ist [Scopatz, 2015Scopatz, Anthony; Huff, Kathryn D. (2015): Effective Computation in Physics, O'Reilly, Sebastopol], Kapitel 6. Allgemein und kurz ist Kapitel 23 in [Passig, 2013Passig, Kathrin; Jander, Johannes (2013): Weniger schlecht programmieren, O'Reilly, Heidelberg].

Ein Klassiker der “Einführung” in die objektorientierte Programmierung, wenn auch nur noch antiquarisch zu erwerben und eher dick (knapp 1200 Seiten), ist [Meyer, 1997Meyer, Bertrand (1997): Object-Oriented Software Construction, Prentice Hall PTR, Upper Saddle River, New Jersey]. Auch hier liegt der Fokus nicht auf einer konkreten Sprache, sondern auf den allgemeinen Prinzipien.

Weiterführende Bücher, die objektorientiertes Design (OOD) und objektorientierte Architektur (OOA) in größerem Detail vorstellen, sind jene von Evans [Evans, 2004Evans, Eric (2004): Domain-Driven Design, Addison Wesley, Boston], Fowler [Fowler, 2003Fowler, Martin (2003): Patterns of Enterprise Application Architecture, Addison Wesley, Boston] und Larman [Larman, 2005Larman, Craig (2005): Applying UML and Patterns, Prentice Hall, Upper Saddle River, New Jersey]. Sie weisen bereits weit hinaus zu Entwurfsmustern (design patterns, Kapitel 15) und in die Software-Architektur (Kapitel 20). Viele hilfreiche Details zu diesem gesamten Themenkonplex finden sich auch überall in McConnell [McConnell, 2004McConnell, Steve (2004): Code Complete. A practical handbook of software construction, Microsoft Press, Redmond, Washington].