OOP in LotusScript - Warum sollte man?

von Bernd Hort,
assono GmbH, Standort Hamburg,

Um es gleich vorweg zu sagen, objektorientierte Programmierung in LotusScript ist kein Allheilmittel. Man kann auch mit Hilfe von selbst geschriebenen Klassen schlecht und unstrukturiert programmieren. So wie man auch mit der Formelsprache alleine gute Anwendungen realisieren kann. Am Ende des Tages zählt eigentlich nur eines. Der Anwender muss mit der entwickelten Anwendung seine Aufgaben gut und effizient erledigen können.

Doch gibt es aus meiner Sicht eine Menge guter Gründe, die für die objektorientierte Programmierung in LotusScript sprechen.

Höhere Abstraktionsebene
Der für mich wichtigste Gründ ist die Konzentration auf das Wesentliche. Durch geschickten Aufbau einer Klassenhierarchie entwickelt man auf einer höheren Abstraktionsebene. Egal welche Publikation man zu Softwareentwicklung zu Rate zieht, in einem Punkt sind sie sich alle einig. Der Entwickler muss den Anwendungsfall verstanden haben und dann in Software umsetzen. In der objektorientierten Programmierung werden die Elemente aus der Fachwelt als Objekte mit Eigenschaften und Methoden realisiert. Statt sich mit dem Setzen von Werten auf Feldebene zu beschäftigen, liegt der Fokus mehr auf dem Umgang mit den Elementen der Fachwelt. Diese höhere Abstraktionsebene hilft, sich den Blick auf das Wesentliche zu bewahren.

Umgang mit Komplexität
Die Welt, in der wir leben, ist komplex. Objektorientierte Programmierung ist eine Möglichkeit, mit dieser Komplexität umzugehen. Die Kernidee ist dabei, die einzelnen Bestandteile so aufzuteilen, dass kleine beherrschbare Teile entstehen. (divide et impera / Teile und herrsche)
Ich will das an einem Beispiel verdeutlichen. In einer Anwendung für die Verwaltung von Geschäftsreisen muss ein Reiseantrag zur Genehmigung eingereicht werden. Die Methode "Antrag.ZurGenehmigungEinreichen" beinhaltet die Überprüfung auf Vollständigkeit der Angaben, die Benachrichtigung des Vorgesetzten, das Eintragen der Reise in den Kalender, das Setzen des Status und das Schreiben der Dokumenthistorie. Anstelle eines langen monolithischen Codeblocks ruft die Methode weitere Methoden auf: "Antrag.IstVollständig", "Antrag.VorgesetztenBenachrichtigen", "Antrag.InKalenderEintragen", "Antrag.StatusSetzen" und "Antrag.HistorieSchreiben". (Wobei unsere Klassen- und Methodennamen in der Realität englisch sind.)

Lesbarkeit des Codes
Auf diese Weise wird zugleich auch die Lesbarkeit des Codes verbessert, weil man nicht mehr über mehrere Bildschirmseiten erraten muss, was der Code eigentlich machen soll. Kurze Codeblöcke sind nun einmal einfacher zu verstehen als längere. Was natürlich unmittelbar auch der Wartbarkeit zu Gute kommt.

Wiederverwendbarkeit
Die in dem Beispiel beschriebenen Funktionalitäten wie Generieren einer E-Mail und Erzeugen eines Kalendereintrages sind nicht nur in der einen Anwendung interessant. Womit wir zu einem weiteren Vorteil der Objektorientierung kommen: der Wiederverwendbarkeit. Zweifelsohne kann man auch eine generische Funktion zum Generieren einer E-Mail schreiben. Allerdings hat eine Funktion nicht die Flexibilität einer eigenen Klasse. Es ist einfacher, bestimmte Eigenschaften der E-Mail wie z.B. die Priorität oder das Senden mit Empfangsbestätigung über die Eigenschaften des E-Mail-Objektes zu steuern. Bei einer Funktion gibt es nur die Möglichkeit für alle Eventualitäten einen Parameter vorzusehen. Was ab einer gewissen Anzahl der Parameter die Fehleranfälligkeit stark erhöht, weil man sich nicht mehr erinnern kann, ob das fünfte "True" in den Parametern nun die Empfangsbestätigung oder die Verschlüsselung aktiviert.

Erweiterbarkeit und Flexibilität
Ein weiterer Vorteil der Klassen gegenüber prozeduraler Programmierung ist die Erweiterbarkeit und die damit einhergehende Flexibilität. Wird bei einer Funktion ein weiterer Parameter aufgenommen, so muss jede Zeile Code geändert werden, die diese Funktion verwendet. Wird eine Klasse um eine Eigenschaft oder Methode erweitert, so funktioniert bestehender Code, der diese Klasse bisher verwendet, weiterhin ohne Probleme. (Okay, bisweilen kommt man um ein "Recompile All LotusScript" nicht herum.)

Darüber hinaus bietet die Vererbung eine Möglichkeit erweiterte Anwendungsfälle in einer Art zu implementieren, dass ausgehend von einer Basisklasse sehr gezielt nur die speziellen Aspekte der Erweiterung angepasst werden müssen. Die Basisklasse steht weiterhin für die einfachen Fälle zur Verfügung und die abgeleitete Klasse für die Spezialfälle.

Vermeidung von Fehlern
Das als "Information Hiding" bezeichnete Prinzip in der objektorientierten Programmierung nur die notwendigen Methoden und Eigenschaften nach außen hin sichtbar zu machen, trägt dazu bei, Fehler zu vermeiden. Die Ursache dazu liegt zum Einen darin, dass interne Variablen nicht mehr von außerhalb der Klasse geändert werden können, es sein denn, durch die dafür vorgesehen Methoden. Ein weiterer Grund besteht darin, dass der interne Aufbau der Klasse geändert werden kann, ohne das Seiteneffekte auftreten können. Der Anwendungsentwickler muss lediglich darauf achten, dass die Klasse sich nach außen verhält wie zuvor.

Beschleunigung der Entwicklung
So richtig kommen die Vorteile der objektorientierten Programmierung erst zur Geltung, wenn man nicht nur vereinzelt fachspezifische Klassen schreibt, sondern wenn man sich mit der Zeit ein Framework aufbaut, dass den Anwendungsentwickler von der Last der immer wiederkehrenden Aufgaben befreit. Damit wird die Entwicklung der einzelnen Anwendung stark beschleunigt. Alle Anwendungen, die wir bei assono entwickeln, haben solch ein gemeinsames Framework. Das heißt, wir können uns bei einer neue Anwendung auf die fachliche Aspekte konzentrieren. Solche simplen Dinge wie Eingabevalidierung, Dokumentenhistorie, Aktualisierung von abhängigen Dokumenten sind jeweils nur eine Zeile in unserer Fachklasse.

Aufbau von Erfahrungen, die in anderen Programmierumgebungen von Nutzen sind
Ein ebenfalls nicht zu unterschätzender Aspekt bei der Frage, warum man jetzt mit objektorientierter Programmierung in LotusScript anfangen sollte, ist das Sammeln von Erfahrungen. Denn bei allen anderen Programmiersprachen stellt sich die Frage, ob man OO programmiert oder nicht, nicht mehr. Ob das Java, .Net oder C++ ist, alle sind objektorientiert. Erfahrungen, die man jetzt in LotusScript sammelt, helfen später beim Umstieg auf andere Programmiersprachen. Auch wenn man die Welt von Lotus Notes nicht verlassen möchte, spätestens beim Schreiben von Plugins für Notes 8 kommt man um Java und Objektorientierung nicht herum.

Ohne jetzt pathetisch klingen zu wollen, so ist Objektorientierung mehr als das Lernen einer neuen Syntax. Objektorientierung verändert den Blick auf die Anwendungsentwicklung. Es ist ein mehr ganzheitlicher Ansatz, der sowohl Daten als auch Funktionen der Fachwelt gleichermaßen im Auge behält.

Fachbeitrag Entwicklung

Sie haben Fragen zu diesem Artikel? Kontaktieren Sie uns gerne: blog@assono.de

Sie wollen eine individuelle Lösung? Kontaktieren Sie uns

Weitere interessante Artikel

Sie haben Fragen? Wir sind für Sie da.

Wir verwenden Ihre Daten, um Sie einmalig per E-Mail zu kontaktieren. Wir geben Ihre Daten nicht an Dritte weiter. Siehe: Datenschutzhinweise
assono GmbH

Standort Kiel (Zentrale)
assono GmbH
Lise-Meitner-Straße 1–7
24223 Schwentinental

Standort Hamburg
assono GmbH
Bornkampsweg 58
22761 Hamburg

Telefonnummern:
Zentrale: +49 4307 900 407
Techn. Hotline: +49 4307 900 403
Vertrieb: +49 4307 900 402

E-Mail-Adressen:
kontakt@assono.de
bewerbung@assono.de