Im Bilde Gottes geschaffen!

Zurueck zur Startseite

Prozedurales oder objektorientiertes Programmieren?

Die ersten Programmiersprachen wie z.B. "Pascal"  verwandten Prozeduren. Die erste Prozedur verarbeitete Daten zu einem Ergebnis oder zu mehreren Ergebnissen. Diese wurden  anschließend in einer weitere Prozedur verarbeitet, um die nächste  Generation von Lösungen zu erhalten. Dazu ein Beispiel:

program whileDemo1;
var
x : Integer;
begin
x : = 0;
while  (x<10)  do    (Solange x kleiner als 10 ist ...)
   begin
  Write (x : 4);   (wird dieser Anweisungsblock wiederholt)
   x  : = x +1;
   end;
   Writeln('   Ende');
end.

Die Variable x hat vor dem ersten Durchlauf der Schleife den Wert 0 und der Vergleich x<10 ergibt 'True' - folglich wird der Anwendungsblock ausgeführt. Da der Wert von x innerhalb des Anweisungsblockes jeweils um eins erhöht wird, ergibt der Vergleich nach dem zehnten Durchlauf 'False'. Die Ausgaben dieses Programmes sind:
0   1  2  3  4  5  6  7  8  9  Ende;  (* S 46) Diese 10 Zahlen kann man nun in einer weiteren Prozedur verarbeiten. Man könnte sie z.B. addieren und würde dann 45 erhalten.
Was machen wir aber, wenn am Ende nicht 45 herauskommt? Befindet sich der Fehler in der ersten oder in der zweiten Prozedur? - Bei gar 20 Prozeduren verliert man sehr schnell den Überblick, wenn man eine Fehlersuche durchführen möchte.
Programme, die sich auf Prozeduren verlassen, sind daher sehr anfällig. Ist nur eine einzige Prozedur in einer Folge fehlerhaft, so stürzt das gesamte Programm  ab. Die Fehlersuche erweist sich als äußerst schwierig.
Die meisten Programmierer gehen daher heute objektorientiert vor. Wie geschieht das?  Es soll hier an einem Beispiel der Programmiersprache PHP gezeigt werden:

<?php   // Beispieldatei: helloworld.php
class  HelloWorld
[ public $ who;
function_construct ($str = "World")
[ $this - > who = $str;]
function sayHello ()
(printf ( "Hello%S\n",$this - > who); ]

Dieses Objekt "helloworld.php" kann nun bei der Ausgabe der Ansage " Hello Universe" als Funktion verwendet werden und zwar in folgender Gestalt:

<?php // Beispieldatei: testhellowort.php
require  'helloworld.php' ;
$hw  =  new HelloWorld();
$hw - > sayHello();   //  Ausgabe:  Hello  World
$hu = new HelloWorld("Universe");
$hu - > sayHello();   Ausgabe: Hello Universe (** Seite 111)


Das Programmieren mit Hilfe von Objekten ist sicherer als das, welches ausschließlich Prozeduren verwendet. Die Objekte sind in sich geschlossen und vor  äußere Einflüssen geschützt.  Somit sind auch die Funktionen stabil, welche diese Objekte aufrufen. Programme arbeiten in diesem Falle mit gesicherten Funktionen.  Ein Objekte kann zu einem komplexeren erweitert werden, indem die Grundprozedur in Gestalt einer Funktion im neuen, erweitertem Objekt integriert wird. Neue Eigenschaften werden hinzugefügt. So ergeben sich sog  "Hierachien von Objekten", die man in Datenbänken sicher aufbewahren kann. - Der Code bzw. der Bauplan für ein Objekt wird als "Klasse" bezeichent. Der Code enthält den Bauplan der Klasse, also Eigenschaften, Methoden etc. - Klassen können für sich allein stehen oder zu anderen Klassen erweitert werden. Wenn sie eine Unterklasse erzeugen, erbt die neue Klasse alle Methoden der Basisklasse. Diese Eigenschaft wird als "inheritance" (Vererbung) bezeichnet und stellt eine der Säulen der objektorientierten Programmierung dar." (** S. 112)

Der Mensch als Ebenbild Gottes

Ähnlich wird wohl auch der Schöpfer vorgegangen sein, als er Leben erschuf: Gene, welche im Genom oft benutzt werden, sind relativ geschützt und bleiben in ihrer Grundstruktur erhalten - ähnlich wie Objekte einer Basisklasse. So haben Mäuse, Hunde , Rinder... in dem Gen, das für ihr Hören verantwortlich ist, fast identische Grundstrukturen. Auf sie hat der Schöpfer allen Lebens u.a. aufgebaut, als er Tiere schuf, die ein besonders empfindliches Gehör benötigen, wie z.B. Wühlmäuse und Maulwürfe. Entsprechendes gilt für das Sehvermögen oder den Geruchssinn.
Diese Grundstrukturen in den "Basisklassen der Gene" bleiben bei der Fortpflanzung stabil. Erbsprünge in diesen Basisklassen werden von der Keimzelle selbst verhindert. "Trial and Error" finden hier nicht statt. Die Natur kann hier nicht auslesen. Das Gehör kann sich wohl den Bedürfnissen des Tieres in seiner Umgebung anpassen, doch die Grundstrukturen bleiben erhalten. Das konnte Dawin nicht wissen und seine ungläubigen Verehrer wollen es bis heute nicht wahr haben.
Es ist jedoch keineswegs verwunderlich, dass Programmierer beim objektorientierten Programmieren ganz ähnlich vorgehen wie ihr Schöpfer beim Erschaffen ihrer Gene. Immerhin sind sie ja, wie alle anderen Menschen auch, "im Bilde Gottes erschaffen worden." ( 1.Mose 1,27 )

_____________________________________________________
Quelle:
* Borland:  "Turbo Pascal" Benutzerhandbuch
**  Kofler & Öggl "PHP 5 & MySQL  5"  Verlag: Addison-Wesley
______________________________________________________

17.02.17 Kk