Wirtschaftsinformatik (Bachelor-Studiengang): Programmierung (1. Semester)

Sie sind hier: StartseiteWirtschaftsinformatikProgrammierung Java (Kurs 1): Unterschiede zwischen prozeduraler und objektorientierter Programmierung

HB / CM, Kurs vom 01.04.2002 - 30.09.2002

Programmierung Java (Kurs 1): Unterschiede zwischen prozeduraler und objektorientierter Programmierung: Prozedurale Programmierung, Objektorientierte Programmierung, Warum Objekte 1:1 in Programmtext übertragen wollen?, Wie wird durch den Entwurf von Typen (Klassen) das Ausgangsproblem gelöst?.

  1. Prozedurale Programmierung
  2. Objektorientierte Programmierung
  3. Warum Objekte 1:1 in Programmtext übertragen wollen?
  4. Wie wird durch den Entwurf von Typen (Klassen) das Ausgangsproblem gelöst?

Prozedurale Programmierung

Prozedurale Programmiersprachen orientieren sich an der Arbeitsweise von Rechnern.

Programme bestehen aus einer (endlichen) Folge von Anweisungen einer höheren Programmiersprache.

Die einzelnen prozeduralen Programmiersprachen unterscheiden sich (unter anderem) darin, welche Anweisungen sie haben.

Anweisungen 1

Bildbeschreibung "Anweisungen 1": Einzelne Anweisungen bilden das Programm (z.B. Cobol, Basic).

Zur Strukturierung von Programmen gestatten die meisten prozeduralen Programmiersprachen, inhaltlich zusammenhängende (Teil-)Folgen von Anweisungen zusammenzufassen.

Anweisungen 2

Bildbeschreibung "Anweisungen 2": Inhaltlich zusammenhängende (Teil-)Folgen von Anweisungen werden zu einzelnen Prozeduren zusammengefasst und bilden das Programm (z.B. Algol 60).

Hinweis: Durch die Wiederverwendung von Prozeduren wird die Programmierung erheblich vereinfacht.

In den verschiedenen prozeduralen Programmiersprachen gibt es verschiedene Arten von "Prozeduren":

Über Prozeduren hinaus wurden weitere Konzepte zur Strukturierung von Programmen entwickelt, z.B.:

Um prozedurale Programmiersprachen einsetzen zu können, muss die Lösung des Ausgangsproblems (übertragen im Modell) aus einer Folge von Anweisungen der Sprache bestehen (Algorithmus). Dann kann der Programmtext mithilfe eines Compiler überführt werden in eine Folge von Elementarbefehlen des Rechners.

Hinweis: Zu jedem Paar Programmiersprache - Rechnertyp muss mindestens ein Compiler gebaut werden.

Es wurden im Laufe der Zeit diverse (Vorgehens-)Methoden in der Informatik entwickelt, um ein gegebenes Problem (im Modell) so zu lösen, dass die Lösung aus einem Algorithmus besteht, der mithilfe einer prozeduralen Programmiersprache beschrieben werden kann.

Die wichtigste ist die sogenannte "Methode der schrittweisen Verfeinerung" (N. Wirth, 1971).

Außerdem wurden Methoden entwickelt, um einen derartig gewonnenen (Lösungs-)Algorithmus zu beschreiben:

Zum Menü Wirtschaftsinformatik | Zum Seitenanfang

Objektorientierte Programmierung

Im Gegensatz zur prozeduralen Programmierung ist nicht die Funktionsweise von Rechnern der Ausgangspunkt der objektorientierten Programmierung.

Ausgangspunkt ist der Wunsch, "Objekte" geeigneter Modelle, die durch Abstraktion von Objekten der realen Welt erhalten wurden, möglichst 1:1 (sprich: eins zu eins) in Programmiersprachen zu beschreiben.

objektorientierte Programmierung

Bildbeschreibung "objektorientierte Programmierung": Ausgangspunkt ist der Wunsch, "Objekte" geeigneter Modelle, die durch Abstraktion von Objekten der realen Welt erhalten wurden, möglichst eins zu eins in Programmiersprachen zu beschreiben.

Welche Eigenschaften haben Objekte in Modellen?

Zustand:

Der Zustand von Objekten (in Modellen) wird beschrieben durch die Werte ihre Attribute.

Verhalten:

Das Verhalten von Objekten wird beschrieben durch Operationen, die mit den Objekten ausgeführt werden können.
Sie werden Methoden des Objektes genannt.

Das Verhalten von Objekten kann in Abhängigkeit vom Modell, komlex sein, d.h. es kann viele Operationen (=Methoden) geben.

Hinweis: Der Zustand und das Verhalten von Objekten bilden eine Einheit (im Modell).

Identität:

Identität

Bildbeschreibung "Identität": Zwei Objekte können oberflächlich betrachtet identisch erscheinen (gleiche Zustände, gleiches Verhalten). Der Name dient dann dazu, diese Objekte auseinanderzuhalten. Im Bild: Objektname 1 = "mein Auto", Objektname 2 = "noch ein Auto".

Selbst wenn zwei Objekte in Zustand und Verhalten übereinstimmen, brauchen sie nicht identisch zu sein.

Hinweis: Jedes Objekt hat seine eigene Identität (unabhängig von Zustand und Verhalten).

Zum Menü Wirtschaftsinformatik | Zum Seitenanfang

Warum Objekte 1:1 in Programmtext übertragen wollen?

Bei prozeduralen Sprachen steht der Algorithmus im Zentrum, d.h. eine Folge von Anweisungen, strukturiert durch Prozeduren oder Funktionen. Diese Algorithmen agieren auch mit "Daten" (="Objekte" der Programmiersprache), aber die Einheit von Zustand und Verhalten der ursprünglichen Objekte des Modells kann nicht adäquat ausgedrückt werden.

Modell contra Struktur

Bildbeschreibung "Modell contra Struktur": Objekte müssen beim Übertragen in prozedurale Sprachen "zerteilt" werden. Daher befinden sich in Prozedur 1 beispielsweise Algorithmen und Methoden sowohl aus Objekt 1 als auch Objekt 2, ebenso wie in Prozedur 2, Prozedur 3 und Prozedur n.

Die Modell- und die Strukturwelt passt in prozeduralen Sprachen nicht zusammen.

Objekte müssen beim Übertragen in prozedurale Sprachen "zerteilt" werden.

Das Zerteilen der Objekte ist (leider) kein Automatismus. Es bleibt dem Geschick der Programmierer und Programmiererinnen überlassen, wie sie dabei vorgehen. Das führt bei großen Projekten rasch zu Problemen (z.B. Daten und Anweisungen werden unnötigerweise dupliziert).

Hinweis: Gefahr von Seiteneffekten.

Die Wiederverwendbarkeit von Prozeduren wird massiv eingeschränkt. Das führt zu großem Kostenaufwand bei der Wartung von Programmen (z.B. beim Ausbessern von Fehlern).

Werden dagegen die Objekte des Modells 1:1 in Programmiersprachen übertragen, können sie bei Bedarf auch wiederverwendet (Stichwort "Vererbung": Ergänzung bzw. geringe Abänderung) werden. Dadurch werden Programme auch erheblich zuverlässiger. Das führt zu einer Reduktion der Kosten (insbesondere bei der Wartung, aber auch beim Erstellen).

Rein objektorientierte Programmiersprachen (z.B. Smalltalk) gestatten es nicht nur, Objekte 1:1 in den Programmtext zu übertragen, sie zwingen Programmierer dazu! (Es gibt keine Prozeduren im Sinne prozeduraler Programmierung!)

Bei guter prozeduraler Programmierung ist es bis zu einem gewissen Grad möglich, objektorientierte Ideen zu imitieren. (Dies setzt Einsicht der Programmierer/-innen voraus und wird nicht erzwungen.)

Hinweis: Entstehen einer neuen Philosophie.

Im Zentrum der objektorientierten Programmierung ist nicht der Entwurf von Algorithmen sondern das Entwerfen und Gestalten von Klassen (= Typen) von Objekten. Die zugehörigen Compiler übersetzen die Programmtexte dennoch in eine Folge von Maschinenbefehlen.

Zum Menü Wirtschaftsinformatik | Zum Seitenanfang

Wie wird durch den Entwurf von Typen (Klassen) das Ausgangsproblem gelöst?

Die Grundidee der objektorienterten Programmierung hierzu ist:

Objektorientierte Sprachen haben daher

Objektorientierte Programme bestehen aus einer immer endlichen Menge von Objekten, die durch Kommunikation ihre Zustände so ändern, dass das Problem gelöst wird.

Hinweis: Prozeduren oder Funktionen gibt es nicht!

Aufgabe der Programmierer/-innen ist es

Tatsächlich wird in objektorientierten Sprachen nicht die Gestalt einzelner Objekte festgelegt, sondern deren (Daten-)Typ.