Autor Thema: Gang Of Four (GoF) Design Patterns für LotusScript on OO nachprogrammieren?  (Gelesen 34462 mal)

Marinero Atlántico

  • Gast
Hi,

das wäre eine gute Idee. Ich hab momentan wirklich wenig Zeit.
Head First Design Patterns hat in Sachen einfachen Beispielen wirklich Standards gesetzt und man könnte dann auch sehen, wo eben die Nachteile von LotusScript OO liegen.
Werde drüber nachdenken sobald ich Zeit habe.
Ab nächste Woche sollte es ein wenig ruhiger werden.

Jemand Interesse. Jens, Thomas, Matthias?

Nicht nur ich halte GoF bezüglich OO für mehr als wichtig.
Würd nach den Kapiteln von Head First Design Patterns vorgehen.
Und die Beispiele sehr sehr einfach halten. Also gar nicht mehr Ansichten und Dokumente referenzieren, sondern rein in einer ScriptLib bleiben.
Als Daten können dann Types oder Arrays oder Lists dienen.
Ähnliche "schwachsinnige" Beispiele wie in HF DP (Truthähne, die sich als Enten verkleiden, etc.)

Gruß Axel
« Letzte Änderung: 13.12.04 - 19:33:33 von Marinero Atlántico »

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Die Idee finde ich gut. Kannst Du uns noch Links oder Literatur angeben? Danke
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Marinero Atlántico

  • Gast
http://c2.com/cgi/wiki?DesignPatterns *
und eben Head First Design Pattern (hab ich im Java Forum stehen.

Bruce Eckel schreibt auch seit ca. 25 Jahren an seiner Version:
http://mindview.net/Books/TIPatterns/

Die ganze Bewegung begann sich ca. 1995 mit dem berühmten GoF Buch zu verdichten. (s. sicher c2.com wiki). Nur ist das wirklich sehr, sehr schwer nachzuvollziehen.

http://saloon.javaranch.com/cgi-bin/ubb/ultimatebb.cgi?ubb=get_topic&f=9&t=002907

Gruß Axel

* Das ist btw. der erste Wiki oder "the only wiki that matters" :-)
« Letzte Änderung: 13.12.04 - 20:06:45 von Marinero Atlántico »

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Gute Idee, ich bin sehr interessiert   :D
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline animate

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.540
  • Uh, I'm just gonna go find a cash machine.
    • LA2
das ist eine gute Idee. Habe ich schonmal angefangen, weil ich es auch für eine gute Idee hielt. Ich habe dann aber aufgegeben, weil es ziemlich langweilig war.

Viel interessanter fände ich, wie du schon mal vorgeschlagen hast, Axel, LotusNotes DP zu finden und zu beschreiben.

Jetzt sagt bestimmt jemand, haben wir doch schon mit den BP-Postings hier im Forum.
Das ist natürlich korrekt und die Dinger sind auch klasse. Nur sind die mir viel zu detailliert. Ich denke eher an Pattern, die das DB Design betreffen.

Leider fällt mir grad kein gescheites Beispiel ein (bin wohl schon zu lange raus aus der Sache. Wobei, das von Thomas Schulte gerade vielleich sowas wär, also nicht sein spezielles Problem, eher so die Schichtenproblmatik, wohin mit meinen Logikfunktionen. Naja, vielleich fällt mir, oder euch ja noch mal was ein).

Nichtsdestotrotz, ich würde schon das ein oder andere Pattern nach LS übersetzen (wenns übersetzbar ist). Du musst aber die Arbeitspakete schnüren, Axel, als Projektleiter.
Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
noch 2 Links:

Design Patterns erklärt inkl. Muster nach GoF mit Beispielen:
http://de.wikipedia.org/wiki/Entwurfsmuster

Design Patterns nach GoF mit UML-Diagrammen und C# Quellcodes:
http://www.dofactory.com/Patterns/Patterns.aspx
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline animate

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.540
  • Uh, I'm just gonna go find a cash machine.
    • LA2
Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.

Marinero Atlántico

  • Gast
Ich versuche die Beispiele sehr, sehr einfach zu halten.
Werd das erstmal selber mit Strategy, Abstract Factory oder so versuchen. Wenn das funktioniert können andere ja weitere Patterns übernehmen.

@Thomas: Ich glaube Lotus Notes DPs zu finden ist eine wesentlich schwierigere Aufgabe. Muss man erstmal überlegen auf welchem scope Level man suchen muß. Ziemliche Pionierarbeit. Hohe Frustrationsgefahr.
Ob der Übertrag der GoF auf LoNo langweilig ist, werde ich sehen.  ;)

Ich besitze so ziemlich alle Design Pattern Einführungsbücher für Java. Als Einstiegsbuch in dieses Thema ist "Head First Design Patterns", von den Freemans, Sierra/Bates sowie Johannes de Jong, Jason Menard et. al. als technical reviewer eindeutig das beste Buch (egal ob man visuell, blau oder rot-weiss kariert ist).
Quasi alle Leute sagen, dass dieses Thema komplexer/abstrakter ist als wie zuerst von ihnen angenommen.

Zitat
Originally posted by Ilja Preuss:
[QB]
 
Well, yes. I'd say that is because software development is harder than it looks, though.  ;)
 
Seriously, in my experience OO doesn't have some of the benefits many people expect: "better matches human thinking", "understandable to customers", "easier to model the real world" etc. pp.
 
What it does is giving you additional tools to manage dependencies between software modules, most importantly polymorphism.
 
It's not easy to get that right - it took me personally several years to grok it (if we assume that I do today  ;)  ).
 
On the other hand, it's not easier with procedural development - after all, the main difference is that procedural languages are missing polymorphism, which, again, is a tool to manage dependencies.[/QB]

 
« Letzte Änderung: 14.12.04 - 10:40:22 von Marinero Atlántico »

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Das ist ein seehr, seehr gutes Zitat, Axel, das Du da gebracht hast, jemand, der die Sache praxisnah und nicht religiös sieht. Danke
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline animate

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.540
  • Uh, I'm just gonna go find a cash machine.
    • LA2
für AbstractFactory habe ich hier schon mal ein Beispiel gepostet:
lotusgeek

ist kein witziges Beispiel, eher praktisch. Und ich bin damals etwas mit copy und paste durcheinander gekommen, aber das dürfte vernachlässigbar sein
Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.

Marinero Atlántico

  • Gast
Das ist ein seehr, seehr gutes Zitat, Axel, das Du da gebracht hast, jemand, der die Sache praxisnah und nicht religiös sieht. Danke

Ilja ist definitiv einer der top 10 Gurus von Javaranch.
Ich glaub der hat einfach alle OO-Bücher der letzten 10 Jahre gelesen, kennt den c2-wiki auswendig, setzt das ganze praktisch um und denkt darüber nach.
http://saloon.javaranch.com/cgi-bin/ubb/ultimatebb.cgi?ubb=recent_user_posts&u=00016595

98.9% der >100-Posting-Rancher sehen die Dinge nicht-religiös, praxisnah. Ilja ist aber ein Spezialfall, weil er einfach wirklich sehr kompetent ist.

@Thomas: Das Beispiel ist sicher gut. Ich will für meinen Versuch aber nicht so viel Infrastruktur, Ressourcen und praxisnähe. Das ist dann weniger Arbeit. Mal schaun, ob das gangbar ist.

Marinero Atlántico

  • Gast
vor dem 30.12. nix zu erwarten.
Hab da aber jetzt sozusagen beruflich mit zu tun (LoNo und coding von OO-Design).
Also Motivation ist da.

Gruß Axel 

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
OK, prima.
Hast Du eine Idee womit man starten könnte?

Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline -Michael-

  • Aktives Mitglied
  • ***
  • Beiträge: 153
  • Geschlecht: Männlich
    • Software Guide
Hi,

ich hatte vor einigen Wochen den OO-Thread von TMC verfolgt (http://www.atnotes.de/index.php?topic=16422.0) und daraus eine einfache Klasse erstellt:
http://www.atnotes.de/index.php?topic=18601.0

Bei OpenNTF hatte ich das in der CodeBin auch veröffentlicht:
http://www.openntf.org/Projects/codebin/codebin.nsf/CodeByDate/71E930683C3401A3C1256F2F00611BAA

Alain H Romedenne schreibt dort, dass das ganze nach Design Patterns schreit:
Zitat
History class sample is paving way to "Observer" & "Command" design patterns enablement:

Er meint wohl die GOF-Patterns, und wenn ich mir GOF so ansehe, dann klingt es auch sinnvoll, hier diese Patterns zu verwenden. Allerdings fehlt mir da der Skill.

Aber vielleicht ist das für Euch eine Anregung, diese Patterns anhand einem konkreten Beispiel umzusetzen.

Michael

Marinero Atlántico

  • Gast
Es ist einfach so, dass in den letzten Jahren Anforderungen für sauberes OO-Programmieren aufgestellt und Techniken vorgeschlagen worden sind, um diese Anforderungen zu erfüllen. Dabei bilden die GoF-Pattern eine ausser jeder Diskussion stehenden unverzichtbaren Gundlage.
Ich hab z.Zt. z.B. ein Projekt, wo - wie Paul Breitner sagen würde - ziemlich vogelwild OO programmiert wurde. Sucks bigtime.
Dieses ganze Theorie-OO Zeugs, das von Gamma, Fowler, Ward Cunningham, Larman uvam. produziert wird sind nicht irgendwelche schöngeistigen Consulting-Ideen sondern verdichtete Erfahrung von Praktikern.
Das Zeugs ist komplex. Aber imho effektiver und interessanter als der Featurismus von Lotus, wo sich Anwendungsprogrammierer wie ich ständig neuen "einfachen" Produkten gegenübersehen,  deren Schwächen nicht diskutiert werden (DWF, LEI, Domino Workspace, XML, etc.)
Jens Augustiny (Semaphoros) hatte hier teilweise für mich Anzeichen einer Argumentationslinie, dass OO eigentlich ganz einfach und natürlich ist und das man es mit LotusScript Kenntnissen eigentlich schon "kann". Das widerspricht völlig meinen Erfahrungen.
Desweiteren besteht ein gewisser Zielkonflikt zwischen "konkret" und "vielseitig verwendbar".
Um aber hier meinen Versuch zu starten brauche ich mehr Zeit als ich momentan habe.
Die IT-Krise in der westlichen Welt hat dazu geführt, dass die User von openSource Seiten heute deutlich kritischer gegenüber dem code sind als zur Zeit des oh-supi-open-source (2001).
Ohne seine Aussage geprüft zu haben, habe ich somit eine gewisse Sympathie für die Kritik von Alain H Romedenne.

Gruß Axel
« Letzte Änderung: 20.12.04 - 10:04:48 von Marinero Atlántico »

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Jens Augustiny (Semaphoros) hatte hier teilweise für mich Anzeichen einer Argumentationslinie, dass OO eigentlich ganz einfach und natürlich ist und das man es mit LotusScript Kenntnissen eigentlich schon "kann".

Da hast Du mich aber wirklich nicht verstanden. Meine Argumentation ist vor allem, das Nehmen von Angst gegenüber OO, welche ich bei vielen LS-Codern/Designern feststellen kann. Da Notes/Domino selber OOrientiert ist, ist dem LS-Gewandten die ganze Sache nicht fremd, und mit etwas Auseinandersetzung mit dem Domino Objekt Modell lässt sich sehr gut OO-Praktiken aus den Domino-Gegebenheiten ableiten. Sprich, der LS-Gewandte muss nicht bei Null anfangen, wenn man ihm den richtigen Weg zeigt. Mehr ist in meinen Aussagen nicht drin und meine diesbezüglichen Vorträgen (der nächste an der Lotusphere 2005 nächsten Januar) zielen genau darauf hin, dem LS-Programmierer hier Hilfestellung auf dem Weg zu OO zu geben. OO liegt nicht primär in LS, sondern im Produkt Notes/Domino, man muss den Leuten vor allem zeigen, wo sie das finden, und viel wichtiger: es ist ein Umstellen der Denkweise. Zentrale Aussage in meinem Vortrag nächsten Monat: ein OO-Projekt funktioniert nur, wenn man durchgängig von der Analyse bis zur Realisation in OO-Mustern denkt, dieses Denken muss her, die Grundlagen und Muster kann Domino/Notes selber liefern (das ist wohld as, was Du als "natürlich" interpretiert hast). IBM selber vergisst, die gegenwärtigen "treuen" Entwickler dort abzuholen, wo sie jetzt stehen und damit sehen all diese Sachen, in die sie die Lotus-Leute bewegen wollen, für diese wie völliges Neuland aus, kein Wunder, dass sich der durchschnittliche Lotus-Entwickler dagegen wehrt, alles Neue wird meistens erst einmal abgelehnt.
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Marinero Atlántico

  • Gast
Ist für meinen Geschmack zu "yellow".
Man braucht nur auf das "brilliant" Domino Objekt Modell zu schauen, einen "konsequenten" OO Analyse/Design-Prozess zu haben und alles wird gut...
Ich hab hier ein Projekt übernommen mit OO-in-LS-code, wo ich nur sagen kann, dass die brilliant geniuses, die das verzapft haben, deutlich zu wenig und nicht zu viel Angst vor OO haben.
Werde diesen GoF Thread weitermachen to teach you fear, angst and terror.  ;D
 


Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Eben, Axel, wenn Du in meinem Post zwischen den Zeilen lesen würdest, genau so verliert man die Leute, wenn man sie nicht dort abholt, wo sie sind. Sprich, wenn die Leute gelb sind, dann musst Du sie gelb abholen und mit der Zeit dann halt umfärben. Sonst laufen sie davon.
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Marinero Atlántico

  • Gast
Das folgende ist keine Wahrheit, sondern ein Internet Thread. Für Wahrheiten, bitte Bücher kaufen.

Warum gibt es OO?
Hauptgrund ist wohl die leichtere Anpassung des codes an sich wandelnde Anforderungen. Bei sich ständig wandelnden Anforderungen ist es einfach zu zeitaufwendig, in mehr oder wenig gut funktional dekomponierten Funktionen mit Tonnen von if-thens nach der entscheidenden Stelle zu suchen, wo man was ändern muß.
Man glaubt deshalb, dass es übersichtlicher ist Programmlogik in sogenannte Klassen zu packen. Klassen sind Blaupausen für Objekte. Klassen haben Methoden und mehr oder weniger temporäre Variablen (die nennt man Eigenschaften).
Klassen behandeln am besten genau einen Aufgabenbereich der Programmlogik. Sie kappseln sozusagen diesen Aufgabenbereich. Wenn sich die Anforderungen an diesen Aufgabenbereich ändern, muß man nur die Klasse ändern und nicht tagelang im code nach den entsprechenden Stellen suchen. Es kann natürlich auch vorkommen, dass eine Änderung der Anforderung in mehreren Klassen code-Änderungen erfordert. Das läßt sich nicht immer vermeiden, ist aber nicht so gut.

In der Frühphase von OO (frühe 90er Jahre) gab es alle möglichen einfachen Argumente für OO, von denen aber viele nicht so toll sind.
Heute glaubt man, dass es irgendwie scheissendreck-kompliziert aber händelbar ist und Sinn macht. Und das man besser wird, je tiefer man sich mit dem Zeugs einlässt.
Wichtig sind v.a. die sogenannten GoF Design Patterns, die gute OO-Design-Praxis in vereinfachten Beispielen "verdichten".
Die Design Patterns sollen eine Hilfe sein, um die sogenannten OO-Prinzipien zu erfüllen.
Die OO-Prinzipien sind:
- Kappsele das, was sich ändern wird (um auf Änderungen in den Anforderungen an einer Stelle zu reagieren)
- Komposition ist total oft besser als Vererbung (was Komposition ist, wird später noch klar)
- Programmiere gegen Interfaces und nicht gegen Implementierungen (was das ist, wird später noch klar)
- strebe nach lose gekoppelten Designs zwischen interagierenden Objekten (was das ist, wird später noch klar) 
- Klassen sollten offen sein für Erweiterungen, aber geschlossen für Veränderungen (man sollte möglichst nicht in bestehenden code rumhacken. Um Funktionalität zu erweitern/ggbfls zu verändern sollte es möglich sein, einfach eine neue Klasse hinzuzufügen).
- Mach deine Klassen besser immer nur von Abstraktionen abhängig und nicht von konkreten Klassen (was das ist, wird später noch klar)
- Sprech nur zu deinen Freunden (also besser nicht barocke Gebilde der Art wie ship.getRoomNumber(room.getNumber()).getRenterId().getName(); )
- Don't call us, we'll call you. (wenn du deinen LotusScript Bob in sowas wie querySave ablässt, dann wird das ja auch nicht aus der Maske explizit aufgerufen, sondern der User speichert das Dokument und dann wird der code im QuerySave von Notes automatisch aufgerufen. So ungefähr, wird aber noch genauer erläutert).
- Eine Klasse soll nur einen Grund haben, um verändert werden zu müssen (geht wieder in die Richtung, dass möglichst wenig an bestehenden code geändert werden soll, wenn sich die Anforderungen ändern).

In der Folge sollen hier die sogenannten GoF Patterns als Lotus Script implementiert werden. Dabei soll gezeigt werden, inwieweit diese total berühmten GoF Patterns die oben genannten Anforderungen erfüllen und was an diesen eigentlich so toll ist.

Gruß Axel

Marinero Atlántico

  • Gast
Kappseln, Kompisition, Interfaces, Implementierung, lose gekoppelt, interagierende Objekte, Abstraktionen, GoF Patterns.
Lots of confusing stuff  ???
Tonnen von Fremdwörtern  ;D

In der Folge versuche ich die garantiert sinnfreien Beispiel aus HF Design Patterns von Java nach Lotus Script zu portieren.
Ich versuche dann zu beschreiben, wie sich diese komischen Design Pattern mit den noch seltsameren OO Prinzipien (s.o.) in Verbindung stehen.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz