Was ist Objektorientierung?

written by Martin Häcker on

Es heißt ja, das man etwas erst wirklich verstanden hat, wenn man es einem anderen Menschen beigebracht hat.

Nun, mir stellt sich mal wieder die Frage, im Rahmen des Javakurses der Freitagsrunde an der TU-Berlin:

Wie erklärt man Objektorientierung wirklich gut?

Verschiedene Kräfte zerren da an mir:

  • Der Vortrag muss in eine Stunde passen
  • Die Sprache anhand der es erklärt werden muss ist Java
  • Die Studenten haben noch nie eine Programmiersprache gesehen
    • oder vorher eine Funktionale Sprache gelernt, die sie nicht verstanden haben

Was mir am meisten am Herzen liegt sagt Kent Beck in Smalltalk best Practice Patterns einfach wunderschön:

Objects model the world through behavior and state. Behavior is the dynamic, active, computational part of the model. State is what is left after behavior is done, how the model is represented before, after, and during a computation.

Of the two, behavior is the more important to get right. The primacy of behavior is one of the odd truths of objects, odd because it flies in the face of so much accumulated experience. Back in the bad old days you wanted to get the representation right as quickly as possible, because every change to the representation bred changes in many different computations.

Objects (done right) change all that. No longer is your system a slave of its representation. Because objects can hide their representation behind a wall of messages, you are free to change representation and only affect one object.

Nur leider können die Studenten mit dem Vergleich in die alten Tage nix anfangen, denn sie haben ja gerade keine Erfahrung warum die alten Tage schlecht waren.

Immerhin der erste Satz ist brauchbar - und ich werde ihn tunlichst einbringen. Damit ist das Problem doch schon mal zumindest kleiner geworden.

Denkfutter bis zum nächsten mal...