C + + und objektorientierte Programmierung

Der Nachfolger von C hockt bereits in den Startlöchern

04.01.1991

Durch den Unix-Boom der vergangenen Jahre ist die Nachfrage nach C-Programmierern ungeheuer angewachsen. Doch wer heute State-of-the-Art sein will, hat bereits auf objektorientierte Software-Entwicklung (OOP) umgeschwenkt. Rüdiger Stubenrecht* zeigt, daß der Weg von C zum objektorientierten C + + nicht weit ist.

In der DV-Welt werden Programme wesentlich öfter gepflegt und angepaßt als neu entworfen. Der Anderungsaufwand - zirka 80 Prozent eines Programms über die gesamte Lebensdauer - setzt sich aus Umstellungen jeder denkbaren Art und Ursache zusammen. Anforderungen, Datenstrukturen und Hardware verändern, sich im Laufe der Jahre ständig.

Traditionelle Programmiersprachen mit ihrer Betonung von Algorithmen und dem Aufbau von Programmen als Sammlung von Funktionen werden mit der Implementation solcher Änderungen vielfach nicht leicht fertig. Datenabstraktion, wie sie dem Modell der objektorientierten Programmierung zugrunde liegt, beruht demgegenüber auf Datenobjekten und auf Operationen, die auf diese Datenobjekte zugreifen.

Die Erfahrung hat gezeigt, daß der zeitliche Aufwand bei Änderungen in Programmen, die mit OOP gestaltet wurden, wesentlich geringer ist als bei anderen Methoden. Das bedeutet: Allein durch die Wiederverwendung von Software entsteht eine erhöhte Produktivität bei der Programmerstellung. Das vermindert nicht nur den Programmieraufwand und den Ressourcenverbrauch, sondern verringert auch den Bedarf an Rechnerzeiten. Wiederverwendete Code-Teile müssen schließlich nicht erneut getestet und validiert werden.

Chris Papayianni von den Unix System Laboratories Europe (USLE) lobt das Verfahren: "Objektorientierte Programmierung fördert ein gezielteres Management für den Entwicklungsprozeß. Es werden Vorgehensweisen unterstützt, bei denen die Entwickler den Code verfeinern, statt die Datenobjekte neu zu definieren. Außerdem entsteht besser zu lesender Quellcode."

Durch die Option, externe Beschreibungen von Objekten "einzukapseln", erhöht OOP die Portabilität der auf diese Weise erstellten Software. Schließlich beschleunigt eine Reihe von Werkzeugen den Entwurf von OOP-Lösungen, ohne daß dabei auf Qualität verzichtet werden muß.

C + + ist alles andere als ein "Newcomer""

Die Programmiersprache C + + wurde 1978 von Bjarne Stroustrup bei den AT&T Bell Laboratories entwickelt. Sie ergänzt das verbreitete C durch die Unterstützung von Datenabstraktions-Fähigkeiten und objektorientierter Programmierung. Sechs Jahre nach ihrer Erstellung wurde die Programmiersprache für Universitäten und Schulungsstätten freigegeben, 1985 folgte das erste kommerzielle Release.

Inzwischen setzten sich eine Reihe von Unternehmen beim US-Gremium ANSI für die Standardisierung von C + + ein. ANSI gründete daraufhin eine Untergruppe mit der Bezeichnung X3J16, deren Mitglieder sich seit Dezember 1989 regelmäßig treffen und auf der Basis von Bjarne Stroustrups Referenz-Handbuch arbeiten. Ähnliche Standardisierungsbemühungen laufen bei der ISO, der internationalen Schwester des US-Standardisierungsgremiums.

Ein wesentliches Charakteristikum der Sprache ist ihre Nähe zu C, wodurch den C-Programmierern die Umstellung erleichtert wird. Viele benutzen C + + zunächst als "besseres C" und wachsen erst später in die Verwendung der Datenabstraktionen und OOP-Möglichkeit hinein. Damit sind weder die Investition in C-Software noch die für die Ausbildung von Programmierern verloren, zumal die erstellten Anwendungen ein Mix von C und C + + enthalten können.

C + + läuft auf zahlreichen Unix-Systemen, der Code ist meist einfach portierbar und die Runtime-Effizienz entspricht meiner Erfahrung nach der von C. Ähnliches gilt für das Type-Checking. Außerdem unterstützt die Sprache Online-Verarbeitung, so daß der Entwickler auf den zusätzlichen Aufwand eines Funktionsaufrufs verzichten kann.

Datenabstraktions-Möglichkeiten ergeben sich durch definierte Objekte oder "Klassen". Die Anwender definieren innerhalb einer Klasse die"Member"oder "Friend"-Funktionen, die eine Referenz zu den Daten herstellen können. Ebenso werden Möglichkeiten für automatische Initialisierung und Pflege von "Class"-Objekten angeboten. Vor allem aber unterstützt C + + die objektorientierte Programmierung. Dazu gehören vor allem "Vererbung" und "multiple Vererbung", wobei sich neue Datenobjekte, von bestehenden Objekten ableiten lassen, und das dynamische "Binding" virtueller Funktionen zur Ausführungszeit.

Erfahrungen aus dem Umgang mit C + +

Um den vollen Nutzen der objektorientierten Programmierung zu erreichen, darf sich der Entwickler nicht mehr am herkömmlichen Denken in Algorithmen orientieren. Da C + + einen allmählichen Übergang auf OOP ermöglicht und der Einfluß auf Produktivität und Pflegbarkeit der Programme sich als deutlich meßbar erweist, gewinnt die Sprache eine immer größere Anhängerschaft.

Ein mit 45 Programmierern ausgestattetes Projekt beim Telecom-Riesen AT&T befaßt sich mit einem Support-System für Telefonoperationen. Die Mitglieder verwendeten C + + lange als ein "besseres C" mit einigen Datenabstraktionen, denn das Projekt war ursprünglich nicht auf objektorientierte Entwicklung ausgelegt.

Die Programmierer berichteten, daß sie in der Mitte der Projektlaufzeit eine kommerziell verfügbare Datenbank durch eine andere ersetzen konnten, ohne das Projekt zu gefährden. Zwei Senior-Mitarbeiter haben die Schnittstellen geändert, wobei die Produktivität des restlichen Teams nur wenig beeinträchtigt wurde.

Viele Implementationsdetails mußten zwar bis zur Festlegung der Anforderungen ruhen, aber die meisten Programmierer konnten ihre Entwurfs- und Kodierarbeit anhand der Schnittstellen-Spezifikation fortsetzen. Bei diesem Projekt zeigte sich auch, daß nur geringe Ausbildungsmaßnahmen erforderlich waren. Drei Programmierer haben die Schulungskurse für den Rest des Teams entworfen und durchgeführt, so daß der Wissenstransfer auf sehr direktem Wege erfolgte.

Die Programmierer beurteilten den Code als leicht zu warten. Außerdem erlaubten ihnen die Datenabstraktions-Möglichkeiten von C + +, "Fixes" wesentlich einfacher zu lokalisieren als das in traditionellen Programmiersprachen möglich ist. Schließlich lobten sie, daß durch das Type-Checking syntaktische Fehler im Vergleich zu C verringert werden konnten.

Mit Hilfe von C + + läßt sich durch eine entsprechende Bibliothek auch die Entwicklung von Benutzeroberflächen für Anwenderprogramme realisieren. Die dort abgelegten Komponenten für die Erstellung von kommerziellen X-Windows-Anwendungen können bei der Entwicklung in den Code eingebunden werden. Diese Option stellt vor allem für Softwarehäuser ein wesentliches Merkmal dar.

Zweifelsohne entwicklelt sich C + + in den nächsten Jahren zu einem Industriestandard. Der Schwerpunkt der Aktivitäten wird sich dabei von der Ausstattung der Sprache mit zusätzlichen Leistungsmerkmalen auf objektorientierte Features verlagern.