05.01.2012

OOP in LS: Konstruktoren überladen a la LotusScript

Category: OOP, LotusScript, Entwicklung

A picture named M2
Wir sind seit vielen Jahren aktive Verfechter für und Nutzer von objekt-orientierter Programmierung (OOP) mit LotusScript. Leider hat die Sprache an sich einige Defizite gegenüber moderneren Vertretern ihrer Art, wie zum Beispiel das Fehlen von Mehrfachvererbung oder zumindest Interfaces. Ein weiterer Punkt ist, dass man Methoden nicht überladen kann, also nicht mehrere Methoden erstellen kann, die den gleichen Namen haben und sich nur in der Anzahl und Art ihrer Parameter unterscheiden (Parametersignatur). Bei normalen Methoden kann man natürlich noch darauf ausweichen, dass man einfach unterschiedliche Namen vergibt, aber der Konstruktor muss immer Public Sub New heißen.

Eine Möglichkeit, den Konstruktor flexibler zu gestalten, ist es, ihm eine Liste zu übergeben, die den oder die Parameter enthält.

Aber gerade, wenn es um genau einen Parameter geht, ist der Weg mit der Liste mit viel Overhead verbunden. Eine einfache, elegante Möglichkeit ist es dann, ein Variant und eine "Objektweiche" zu benutzen.

Read More

09.09.2010

NLLUG 2010 - DEV03 - Get up to Speed with OOP in LotusScript

Category: NLLUG, Konferenzen, OOP, LotusScript

NLLUG 2010


Heute war der erste Tag der NL Lotus User Group Conference Get Social 2010 in Amsterdam. Die Keynote fand auf dem grünen Rasen von Ajax Amsterdam in der Amsterdam ArenA statt:

A picture named M2
Im Hintergrund sieht man Lampen, die eine komplette Hälfte des Fußballfelds künstlich beleuchten. Was für ein Aufwand für einen schönen Rasen.


Ich durfte heute meinen Vortrag "DEV03 - Get up to Speed with Object-Oriented Programming in LotusScript" halten. Hier sind die Präsentation und die Demo-Datenbank:



27.08.2010

NLLUG 2010: Wir sind dabei!

Category: NLLUG, Konferenzen, JavaScript, XPages, OOP, LotusScript

NLLUG 2010

Wir wurden eingeladen, auf der NL Lotus User Group (NLLUG) "Get Social 2010" Conference am 9. - 10.September 2010 in der Amsterdam ArenA zwei Vorträge zu halten:

DEV03 - Get up to Speed with Object-Oriented Programming in LotusScript
Speaker Thomas Bahn Date Th. 9 September
Language English (EN) Slot 16:15-17:00
Track DEV Room L4KP

Any objections against objects? Never visited classes about classes? Is abstraction still too abstract for you? Or don't you know how to use methodic methods and proper properties?

Then visit this introductory session about object-oriented programming (OOP) in LotusScript, where you will learn
  • why delegation might be better than inheritance,
  • why hiding information is can be helpful and
  • how polymorphism teaches new tricks to an old dog.
After his concise introduction to the concepts of OOP, Thomas Bahn shows you some useful real-world examples in LotusScript. Experience yourself how much easier your life can be with OOP.
If you are familiar with LotusScript, but don't know how to create your own classes, this session is for you!

http://www.lug2010.nl/get-social/DEV03

DEV02 - Advanced JavaScript - Fundament for Great XPages Apps
Speaker Thomas Bahn Date Fr. 10 September
Language English (EN) Slot 14:00-14:45
Track DEV Room L4KP

Want to develop first class XPage applications? Come and learn to leverage JavaScript to its full potential.

Hear about:
  • core language features like 'loose typing', default and guard operators, first class functions, lambda and closures,
  • object-oriented, but class-less JavaScript with prototypal, parasitic and (pseudo-)classical inheritance,
  • dynamic objects with public, private and privileged members,
  • object literals, constructor functions and more ways to create objects.
Benefit from the strengths of JavaScript and avoid it's numerous pitfalls (like semicolon insertion, for..in, with and typeof). Discover useful and reliable patterns like power constructors. And find out why 'style' is so important in JavaScript.

http://www.lug2010.nl/get-social/DEV02

08.03.2010

EntwicklerCamp 2010: Entwurfsmuster - oder das Wissen der Anderen

Category: EntwicklerCamp, Konferenzen, OOP

EntwicklerCamp
Der erste Tag des EntwicklerCamp 2010 ist vorüber. Heute gab es zwei Überraschungen für mich: Ich wurde aus Bob Balabans Session "Advanced Programming with Notes/Domino COM classes" herausgerufen, um kurzfristig für den Vortrag "Plug-In-Entwicklung für Lotus Notes/Domino" von René Winkelmeyer einzuspringen. René hatte leider seinen Flug verpasst und Detlev Pöttgen, der designierte Ersatzspieler, hatte die Präsentation leider auch nicht zugeschickt bekommen. So hatte ich ca. 75 Minuten, um mich auf einen Vortrag vorzubereiten, den ich vor 2 Jahren das letzte Mal gehalten habe...

Die andere Überraschung war, dass ich (endlich) mal etwas in einer Verlosung gewonnen habe.

Die Präsentation und Beispiel-DB zum Vortrag Entwurfsmuster - oder "Das Wissen der Anderen":



17.12.2009

Abstract classes concrete

Category: OOP, Entwicklung, LotusScript


If you have some knowledge about other object-oriented programming languages, like Java, you probably like abstract classes. These are classes you cannot instanciate directly, i.e. create new objects from them. But you can derive other classes from them and create objects from these subclasses. In an abstract class you can have attributes and methods like in any other class.

Normally, abstract classes model some kind of concept or abstraction, for example Animal. There are dogs and cats, but no creature is merely an animal, its always of a concrete kind of animal.

In the abstract class Animal you put those attributes and members, which all animals have in common. Then you build subclasses like Dog or Cat, which add new or overwrite inherited members.

Other classes are abstract, because they have methods, which cannot be implemented at this level. Only concrete subclasses "know", how to implement them.

A typical example of this is a generic Sorter class with a Sort method. The concrete subclasses BubbleSorter, HeapSorter and QuickSorter overwrite the abstract Sort method with different implementations.

Unfortunately, in LotusScript there are no abstract classes. But there is a workaround, which can kind of simulate them:
Read More

15.09.2008

Softsphere 2008: einfach - OOP - einfach

Category: Softsphere, Konferenzen, OOP, Entwicklung


Softsphere 2008

Ich habe heute wieder mal versucht, neue Notes-Entwickler in die Konzepte, Prinzipien und Vorteile objektorientierter Entwicklung einzuführen. Das Thema liegt mir am Herzen, weil ich wirklich überzeugt bin, dass man mit OOP bessere Anwendungen schreiben kann. Und bessere Notes- und Domino-Anwendungen sind gut für die gesamte Plattform. Und wer weiß, vielleicht darf ich ja auch irgendwann einmal eine Datenbank weiterentwickeln, die einer der Teilnehmer nach einen meiner Vorträge geschrieben hat. Und käme mir die bessere Wartbarkeit sogar selbst zu gute.

Ich habe wieder den "Zen-Ansatz" für Präsentationen nach dem Buch "PresentationZen" von Garr Reynolds genutzt. Starke, teilweise emotionale Bilder, ganz wenig Text, keine "Bullet Points". Und viel dazu erzählt.

Damit man die Session gut nacharbeiten kann (und für die, die daran nicht teilnehmen konnten), habe ich ein sehr ausführliches Handout vorbereitet, das neben den Folien auch ausgiebige Notizen beinhaltet. Schreibt mir mal per E-Mail oder einfach als Kommentar hier, ob euch der Ansatz auch so gut gefällt wie mir.

Und nach der langen Vorrede hier die Dateien zum Download:

einfach- OOP - einfach-Präsentation
pdf.gif Softsphere 2008 - einfach - OOP - einfach-Präsentation

einfach - OOP - einfach-Demo-Datenbank
zip.gif Softsphere 2008 - einfach - OOP - einfach-Demo-Datenbank

11.06.2008

ILUG 2008: simply - OOP - simply

Category: ILUG, Konferenzen, OOP, Entwicklung


ILUG 2008

Ich wünschte, ich hätte mehr Zeit... Auch ich würde die ILUG-Konferenz über den grünen Klee loben. Es war wirklich eine großartige Konferenz.

Da es schon wieder fast 2 Uhr ist, lieber in aller Kürze: Hier ist meine Präsentation (mit Notizen) und die Demo-Datenbank, die ich während der Session gezeigt habe:

simply - OOP - simply-Präsentation
pdf.gif ILUG 2008 - simply - OOP - simply-Präsentation

simply - OOP - simply-Demo-Datenbank
zip.gif ILUG 2008 - simply - OOP - simply-Demo-Datenbank

06.03.2008

ILUG 2008: Wir sind dabei!

Category: ILUG, Konferenzen, OOP


ILUG 2008

Eben habe ich die Bestätigung erhalten, dass unser Vortrag angenommen worden ist. Wir freuen uns auf der ILUG 2008 mit der folgenden Session dabei zu sein:
 
Simply - OOP - Simply
Session abstract Do you have objections to objects? Haven't you visited classes about classes? Is abstraction still too abstract for you? Don't you use methodic methods and proper properties?
Then come to this introductory session about object-oriented programming (OOP) in LotusScript, where you can learn:
- why delegation might be better then inheritance,
- why hiding information can be helpful sometimes and
- how you can use polymorphism to teach old dogs new tricks.
Type Development
Speaker Thomas Bahn


26.02.2008

EntwicklerCamp 2008: Unsere Vorträge (Update)

Category: EntwicklerCamp, Konferenzen, OOP

EntwicklerCamp


Wie angekündigt haben wir auf dem diesjährigen EntwicklerCamp zwei Vorträge gehalten. Hier sind die Folien beziehungsweise die Beispieldatenbank.



OOP in LotusScript für Web- und Notes-Anwendungen
pdf.gif EntwicklerCamp 2008 - OOP-Präsentation

Entwurfsmuster - oder "Das Wissen der Anderen" (Design Patterns)
pdf.gif EntwicklerCamp 2008 - Design Patterns-Präsentation

Gemeinsame Beispieldatenbank
zip.gif EntwicklerCamp 2008 - Beispieldatenbank

24.01.2008

Lotusphere 2008 - AD311 - Object Oriented Programming with Lotusscript – Take It To the Next Level

Category: Lotusphere, OOP


A picture named M2
Es ist vollbracht. Unsere erste Lotusphere Breakout Session ist vorbei. Hier nur ganz kurz bevor das WLAN abgeschaltet wird, wie versprochen, die Präsentation und die Beispiel Datenbank.
pdf.gif Lotusphere 2008 - AD311 - OOP in LotusScript - Presentation
zip.gif Lotusphere 2008 - AD311 - OOP in LotusScript - Sample

20.01.2008

OOP in LS: Verwendung von Controllerklassen / Trennung von Frontend und Backend

Category: OOP


A picture named M2
Mein letzter Blogeintrag OOP in LS: MVC in Lotus Notes hörte mit dem Versprechen auf, näher auf die Trennung zwischen Frontend und Backend und die Verwendung von Controllerklassen einzugehen.

Das zugrundeliegende Ziel bei der Verwendung von Controllerklassen, um auf die Fachklassen zuzugreifen, ist die Umsetzung aller fachlichen Anforderungen nur an einer Stelle im Code.
A picture named M3
Read More

13.01.2008

OOP in LS: MVC in Lotus Notes

Category: OOP


A picture named M2
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
  • Model - die eigentliche Fachklasse
  • View - Darstellung der Informationen der Fachklasse
  • Controller - Benutzerinteraktion

Read More

07.01.2008

OOP in LotusScript - Warum sollte man?

Category: OOP


A picture named M2
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.
Read More

13.11.2007

DNUG Herbstkonferenz 2007 - Objektorientierte Programmierung (OOP) in LotusScript

Category: DNUG, Konferenzen, Entwicklung, OOP


Nun ist es vollbracht. Mein Vortrag "Objektorientierte Programmierung (OOP) in LotusScript - Der nächste Schritt" bei der DNUG Herbstkonferenz ist zu Ende. Die für die Session angesetzen 90 Minuten waren doch schneller vorbei, als ich erwartet habe.

Wie der Titel schon andeutet, habe ich über eines meiner Lieblingsthemen gesprochen: die Vorteile der Objektorientierung in LotusScript. Inhalt war weniger, was OOP ist. Vielmehr wurde gezeigt, wie das Model View Controller Pattern in Lotus Notes  realisiert werden kann. Die in diesem Pattern beschriebene Trennung zwischen Fachklasse (Model), Darstellung (View) und Benutzerinteraktion (Controller) nutzen wir, um unser Framework aufzubauen. Die Details dazu finden Sie in den Folien. Weil Konzepte bisweilen mit Code verständlicher ist, gibt es auch eine Beispieldatenbank.



Update:
Der Download des PDF-Dokumentes funktioniert nun.

14.11.2007

DNUG Herbstkonferenz 2007 - Entwurfsmuster für Notes-Entwickler

Category: DNUG, Konferenzen, Entwicklung, OOP


"Ein Entwurfsmuster ist eine Lösung zu einem Problem in einem Kontext."

Was das bedeutet und warum es gut ist, Entwicklungsmuster zu kennen, habe ich heute versucht, in meinem Vortrag "Entwurfsmuster für Notes-Entwickler" auf der  DNUG Herbstkonferenz 2007 zu vermitteln.

Zum noch einmal Nachlesen und für die, die nicht nach Bonn kommen konnten, sind hier die Präsentation und die LotusScript-Beispiel-Datei:


20.05.2007

OOP in LotusScript - Building a MVC Framework

Category: EntwicklerCamp, Konferenzen, Lotus Notes, Entwicklung, OOP

EntwicklerCamp
I finally found the time to translate my session "OOP in LotusScript - Building a MVC Framework" held at the EntwicklerCamp.

OOPLotusScript_en.pdf
The sample application is still in German OOPBeispiel.zip

28.02.2007

EntwicklerCamp 2007 - OOP in LotusScript

Category: EntwicklerCamp, Konferenzen, Lotus Notes, Entwicklung, OOP

EntwicklerCamp
Auch den zweiten Vortrag auf dem diesjährigen EntwicklerCamp habe ich über die Bühne gebracht. In "OOP in LotusScript - der nächste Schritt" habe ich beschrieben, wie in LotusScript ein Framework nach dem Model-View-Controller-Pattern aufgebaut werden kann. Die Grundidee ist, dass durch Verwendung von Fachklassen und geeignete Basisklassen Anwendungen schneller entwickelt werden können, die auch noch besser zu warten sind.

Die Details wie so etwas zu erreichen ist, kann den Folien entnommen werden. Weil es manchmal einfacher ist, neben der Theorie auch die Umsetzung zu sehen, gibt es zu den Folien auch eine Beispiel-Anwendung. Der darin verwendete Code kann frei verwendet werden. Es gelten die üblichen Einschränkungen.

Die Gestaltungselemente in dieser Datenbank dürfen frei verwendet werden. Wir haben sie selbst erstellt und so sie sind wahrscheinlich frei von Rechten Dritter. Mit Ihrer Benutzung erklären Sie sich bereit, uns von eventuellen Ansprüchen Dritter freizustellen.

Der enthaltene Code wurde getestet. Dennoch schließen wir jede Haftung für Schäden aus, die durch die Verwendung dieses Codes entstehen. Wenn Sie diesen Code verwenden, erklären Sie sich damit einverstanden, uns von einer eventuellen Haftung freizustellen.


OOPLotusScript.pdf - OOPBeispiel.zip


Für einen Einstieg in die Objektorientierte Programmierung in LotusScript ist hier noch einmal mein Vortrag vom letzten Jahr.

OOLotusScript.pdf - OOSampleDB.zip

Tags

Deutsche RSS-Feeds (German)

Custom Button Custom Button

English RSS feeds

Custom Button Custom Button