© istockphoto.com/bunhill
Teil 3: Ein Überblick über die objektorientierte Programmentwicklung

Objekte, nichts als Objekte


Die objektorientierte Programmierung ist nach wie vor das bestimmende Paradigma bei der Anwendungserstellung. Klassen und Objekte, Methoden und Eigenschaften, Generalisierung und Spezialisierung sind die Schlagwörter dieses Ansatzes. Einmal vollständig verstanden, ist das Wissen sprach- und problemneutral anwendbar.

Im dritten Teil unserer Artikelserie steht die objektorientierte Programmierung im Mittelpunkt (Kasten: „Artikelserie“). Objektorientierung gilt bereits seit längerer Zeit als das übliche Vorgehen bei der Programmentwicklung. Das gilt für alle Anwendungstypen, insbesondere aber für Geschäftsanwendungen. Nahezu alle modernen Programmiersprachen unterstützen die wesentlichen Charakteristika dieses Ansatzes. Die sichere Beherrschung dieses Programmierparadigmas kann daher als Basisqualifikation für angehende Entwickler angesehen werden. Der Artikel gibt zunächst einen Überblick über die grundlegende Idee und die Entwicklung der objektorientierten Programmierung. Mit diesem Verständnis fällt es dann leichter, sich mit den Details zu beschäftigen. Da man am besten anhand einfacher Beispiele lernt, betrachten wir die Umsetzung sogleich in der Programmiersprache C#. Eine Übungsaufgabe wird diesen Teil der Artikelserie abschließen.

Paradigmen der Programmentwicklung

Die Anfänge der Programmentwicklung waren durch ein intuitives „Drauflosprogrammieren“ gekennzeichnet. So lassen sich natürlich heute in keiner Weise mehr die Anforderungen an die Erstellung von hochkomplexer und möglichst fehlerfreier Software erfüllen. Die Art und Weise der Softwareentwicklung hat sich im Laufe der Zeit zu einem ingenieurmäßigen Vorgehen entwickelt. Vorgehensmodelle beschreiben, in welcher zeitlichen Reihenfolge die einzelnen Schritte des Entwicklungsprozesses durchlaufen werden; Methoden des Projektmanagements sorgen auf höherer Ebene dafür, dass der gesamte Prozess weitgehend planbar ist. Moderne Werkzeuge unterstützen die Entwickler in jeder Phase dieses Vorhabens. Eine sehr wichtige Frage bei der Programmierung ist die Art und Weise wie eine reale Aufgabenstellung in Software abgebildet und damit bearbeitet wird. Dabei kann ein Programm als ein Modell der realen Welt aufgefasst werden. Je nach Problem existieren unterschiedliche Ansätze zum Aufbau dieses Modells. Sie werden als Programmierparadigmen bezeichnet. Es wird zwischen den folgenden Paradigmen unterschieden:

  • Imperatives: Das Programm besteht aus einer Folge von Anweisungen, die streng sequenziell abgearbeitet werden. Das Konzept des imperativen Programmierparadigmas beruht auf Funktionen und Prozeduren zur Abbildung der Funktionalität und Wiederverwendung von Quellcode. Der bekannteste Vertreter ist die Programmiersprache C.

  • Objektbasiertes: Diese Programmiersprachen kennen Objekte zur Kapselung von Daten und Funktionalität. Weitergehende Konzepte wie beispielsweise Vererbung oder die Abbildung von Beziehungen zwischen Objekten werden jedoch nicht angeboten. Objektbasierte Sprachen können damit als Vorstufe der objektorientierten Programmierung aufgefasst werden. Ein Beispiel ist die Script-Sprache Windows PowerShell.

  • Objektorientiertes: Programmiersprachen dieser Gattung erweitern das objektbasierte Programmierparadigma um die typischen Konzepte der Objektorientierung wie Vererbung und Polymorphie. Moderne und häufig eingesetzte Vertreter sind Java und C#.

  • Funktionales: Ein funktionales Programm besteht nur aus einer Reihe von Funktionsaufrufen. Eigenständige Wertzuweisungen existieren nicht; alle Elemente können als Funktionen aufgefasst werden. Einsatzgebiete sind Anwendungen der künstlichen Intelligenz, Compilerbau und Computeralgebrasysteme. Funktionale Sprachen beruhen auf dem so genannten Lambda-Kalkül. Beispiele funktionaler Programmiersprachen sind Lisp, Haskell und – mit zunehmender Bedeutung – die Sprache F#.

  • Logisches: Im Mittelpunkt steht der Aufbau einer Datenbasis, die aus Fakten und Regeln besteht. Fakten sind dabei wahre Aussagen im Sinne der Mathematik. Im Fokus steht die Problemformulierung, nicht der Lösungsalgorithmus. Die Sprache Prolog basiert auf dem logischen Paradigma.

  • Deklaratives: Überbegriff für das funktionale und das logische Paradigma.

Computerprogramme können grundsätzlich nach unterschiedlichen Paradigmen aufgebaut werden. Ein „falsch“ oder „richtig“ gibt es dabei nicht. Vielmehr kann man lediglich eine mehr oder weniger gute Eignung des einen oder anderen Ansatzes feststellen. Moderne Programmiersprachen unterstützen meist auch nicht nur ein Paradigma, sondern es können mehrere Ansätze miteinander kombiniert werden. Dazu ein Beispiel: Die Sprache C# ist vom Wesen her eine objektorientierte Programmiersprache. Dennoch ist bekannt, dass sich bestimmte (Teil-)Aufgaben einer Programmieraufgabe – beispielweise stark mathematisch orientierte Probleme – eleganter unter Anwendung funktionaler Aspekte lösen lassen. Dem Programmierer stehen daher innerhalb der Sprache C# auch Elemente der funktionalen Programm­entwicklung zur Verfügung. Ob er sie auch tatsächlich nutzt, bleibt seine individuelle Entscheidung, denn grundsätzlich würde man auch zur Lösung gelangen, wenn man ausschließlich die objektorientierte Programmierung anwendet. Entscheidet man sich dagegen für eine Implementierung in F# (eine funktionale Programmiersprache), so kann man bei Bedarf auch auf objektorientierte Konzepte zurückgreifen, denn sie sind auch in F# vorhanden, auch wenn das nicht der Schwerpunkt dieser Sprache ist.

Insgesamt kann man aus heutiger Perspektive jedoch sagen, dass sich die objektorientierte Programmierung seit Langem etabliert hat und heute als State of the Art in vielen Bereichen der Softwareentwicklung gilt.

Objektorientierung im Überblick

Die objektorientierte Programmierung basiert darauf, die Software in Anlehnung an die Gegebenheiten der realen Welt als Objekte aufzufassen. Solche Objekte verfügen über Eigenschaften, die sie näher charakterisieren. Ebenso können Objekte bestimmte Tätigkeiten ausführen. Sie können miteinander kommunizieren und in einer bestimmten Beziehung zueinander stehen. Beispielsweise können ähnliche Objekte einen gleichen Bauplan aufweisen. Zum vereinfachten Einstieg betrachten wir Abbildung 1.

krypczyk_programmierkurs_1.tif_fmt1.jpgAbb. 1: Zusammenhang zwischen Klasse (allgemein) und Objekten (konkret)

Ein Automobil ist je nach Sichtweise ein mehr oder weniger komplexes Objekt, das sich beispielsweise stets durch folgende Ausprägungen (Werte) von Eigenschaften (Attribute) beschreiben lässt:

  • Hersteller

  • Typ

  • Farbe

  • Zulassungsjahr

Diese Eigenschaften repräsentieren also die Daten des Objekts. Ebenso verfügt ein Auto stets über bestimmte Fähigkeiten, d. h., es kann bestimmte Funktionen/Aufgaben ausführen. Sie werden mit Blick auf die objekt­orientierte Programmierung als Methoden bezeichnet. Mit Bezug auf das Beispiel sind fol...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang