OOP in LS: MVC in Lotus Notes

von Bernd Hort,
assono GmbH, Standort Hamburg,

Das Model View Controller (MVC) Pattern wurde ursprünglich unter Smalltalk entwickelt und beschreibt ein allgemeines Prinzip beim Aufbau von grafische Benutzeroberflächen. Die Kernidee ist die Trennung der Fachklasse von seiner Darstellung.

A picture named M3
Das Pattern besteht aus drei Komponenten

Der Vorteil dieses Aufbaues besteht darin, dass die Fachklasse komplett von seiner Darstellung entkoppelt ist. Somit kann die Darstellung der Informationen aus der Fachklasse beliebig geändert oder erweitert werden, ohne das an der Fachklasse Änderungen vorgenommen werden müssen. Denkbar ist es auch, mehrere Darstellungsformen zu haben.
Die Trennung von Darstellung (View) und der Benutzerinteraktion (Controller) dient ebenfalls der Flexibilität. So kann ein Controller für unterschiedliche Darstellungen verwendet werden.

Nun bleibt nur noch die Frage, was das alles mit Lotus Notes zu tun hat. Nachdem ich in meinem letzten Blogeintrag OOP in LotusScript - Warum sollte man? erklärt habe, warum objektorientierte Programmierung in LotusScript eine gute Idee ist, will ich nun aufzeigen, wie die Integration von Fachklassen aussehen kann.

Das primäre Designelement, um Informationen in Lotus Notes anzuzeigen und zu editieren, ist die Maske. Insofern gilt es, von der Maske aus auf die in LotusScript geschriebene Fachklasse zuzugreifen. Allerdings bin ich kein Freund davon, viel Code in der eigentlichen Maske zu schreiben. Dadurch dass man in einer Maske an diversen Stellen Code hinterlegen kann, ist es schwierig, den Überblick zu behalten. Deshalb sollte der relevante Code in einer ScriptLibrary sein. In der Maske befinden sich dann nur noch die Aufrufe.

So langsam kristallisiert sich das Model View Controller Pattern für Lotus Notes heraus. Die Fachklasse ist das Model. Die Darstellung der Information erfolgt über die Maske, die somit den Teil der View-Komponente übernimmt. (Nicht Notesview sondern rein konzeptionell). Die Interaktion zwischen den beiden Komponenten übernimmt eine Controllerklasse.
A picture named M2

Wozu wird die Controllerklasse benötigt? Warum nicht direkt von der Fachklasse auf die Maske zugreifen? Das ist zwar theoretisch möglich, beraubt uns aber der Flexibilität. Insbesondere wenn in der Fachklasse UI-Methoden verwendet werden würden, könnte man sie nicht mehr innerhalb von Agenten verwenden, die zeitgesteuert auf dem Server laufen. Die Controllerklasse sorgt dafür, dass alle notwendigen UI-Methoden zur Verfügung stehen und trotzdem die Fachklasse in allen denkbaren Kontexten verwendet werden kann.

Mehr über die Trennung von Backend und Frontend und die Verwendung der Controllerklasse in meinem nächste Blogeintrag: OOP in LS: Verwendung von Controllerklassen / Trennung von Frontend und Backend

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