Mein Eindruck ist, dass OOP wegen besserer Kapsellung der Daten und des Verhaltens (=Unterroutinen/Funktionen) dann besonders geeignet ist, wenn ein bestimmtes aus feature-Sicht zusammenhängendes Codegebilde aus mehreren Events angesprochen wird.
Beispiele:
- locken von Dokumenten (wenn user A dokument a zum editieren geöffnet hat, darf kein anderer das Dokument zum editieren öffnen).
- prüfen, ob ein Dokument b.e.s.t.i.m.m.t.e Felder geändert hat.
- Synchronisierung mit RDBMS
Wenn der code für ein bestimmtes Feature in einer Klasse ist, statt über mehrere Funktionen verstreut, ist dies übersichtlicher und erleichtert das Ändern, die Fehlersuche sowie die Wiederverwendung (Wichtigkeit IMNSHO in dieser Reihenfolge).
OO-Kapsellung ist ganz gut zu nutzen und wird wohl zu wenig eingesetzt.
Nicht so gut implementiert ist find ich Polymorphismus.
Es gibt keine Mehrfachvererbung (und auch nicht so Mehrfachvererbungs-Surrogate wie Java-Interfaces).
Auch wird die Perspektive auf ein Notes-System immer nur "halb objektorientiert" sein (vermutlich z.B. auf ein Javaprogramm nie ganz objekt-orientiert).
Mit halb-objektorientiert meine ich, dass mir keine wirklich ernstzunehmenden Ansätze eines halbwegs konsequenten OO-Analyse/OO-Design Prozesses für Lotus Notes bekannt sind.
Außerdem gibt es keine Design Patterns, d.h. Sammlungen von verallgemeinerten best practises, die in stärker OO-mässig eingefärbten Sprachen/Frameworks ein wichtiger Bestandteil sind.
OO ist ein vielschichtiger, komplexer, sich natürlich evolutionierender Begriff. Das geht wesentlich weiter als "feature" oder Programmiermethodik (dies sind lediglich Einzelaspekte).
Swami VielRauch