Ohne das Konzept der Objektorientierung wäre die ganze kunterbunte Computer-Medien-Welt nicht denkbar. Der Mensch hat dem Universalrechner (Turing-vollständig) ein Stück menschliche Strukturiertheit beigebracht, abgeschaut von der notwendigerweise objektbasierten Außenwahrnehmung des Menschen.
Die objektorientierte Programmierung löst die Prozedurale Programmierung keineswegs ab, nein. Sie setzt auf ihr auf, sie ist - wie der Informatiker sagen würde - einen Layer weiter oben angesiedelt. Oder wie der Philosoph sagen würde: eine neue Bewußtseinsebene. Oder wie der Biologe sagen würde: Ein Evolutionsschritt.
Die prozedurale Programmierung bleibt - um bei der Biologie zu bleiben - sozusagen das Substrat der objektorientierten. Aber sie kennt eine neue Struktur.
Die Struktur der objektorientierten Programmierung ist die von den Informatikern wiederum aus der Biologie entlehnte »Klasse«. Man könnte in einen Zwiespalt darüber geraten, ob diese »Klasse« tatsächlich analog zu der in der Biologie verwendet werden kann. Im aristotelischen Sinne ist sie Formalursache, unverrückbares Idealbild ohne tatsächliche Wirklichkeit. Andererseits ist es nicht falsch, sie als Ergebnis einer Schlußfolgerung zu sehen, die derjenige macht, der sich die entstandenen Objekte anschaut. Beides kann sich ergänzen.
Formal wird die Klasse jedoch beschrieben, d. h. vom Programmierer kreirt. Eine Klasse besteht aus Eigenschaften und Methoden. Wobei eine Eigenschaft in etwa das ist, was man in der prozeduralen Programmierung als Variable kennt - und eine Methode eine gekapselte Funktion bzw. Prozedur. Das Wichtigste aber ist: Mit ihren Eigenschaften und Methoden bildet die Klasse eine Gußform für Objekte. Sie beschreibt, wie ein Objekt, das aus ihr erzeugt (gegossen) wurde, funktioniert. Daher kann sie tatsächlich im aristotelischen Sinne als Formalursache der abgeleiteten Objekte angesehen werden.
Von einer Klasse lassen sich endlos viele Objekte ableiten. Jedes dieser Objekte zeichnet sich dadurch aus, daß es genau definierte Schnittstellen besitzt und sich in einer ganz bestimmten Weise (nämlich wie in seiner Klasse beschrieben) verhält. Es wird im Speicher angelegt und kann über eine Variable referenziert werden.
|