AtNotes Übersicht Willkommen Gast. Bitte einloggen oder registrieren.
21.09.21 - 19:24:53
Übersicht Hilfe Regeln Glossar Suche Einloggen Registrieren
News:
Schnellsuche:
+  Das Notes Forum
|-+  Lotus Notes / Domino Sonstiges
| |-+  Projekt Bereich (Moderator: Hoshee)
| | |-+  Gang Of Four (GoF) Design Patterns für LotusScript on OO nachprogrammieren?
« vorheriges nächstes »
Seiten: [1] 2 3 Nach unten Drucken
Autor Thema: Gang Of Four (GoF) Design Patterns für LotusScript on OO nachprogrammieren?  (Gelesen 29417 mal)
Marinero Atlántico
Gast
« am: 13.12.04 - 19:30:05 »

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 » Gespeichert
Semeaphoros
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 8152


ho semeaphoros - agr.: der Notesträger


WWW
« Antworten #1 am: 13.12.04 - 19:46:49 »

Die Idee finde ich gut. Kannst Du uns noch Links oder Literatur angeben? Danke
Gespeichert

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
« Antworten #2 am: 13.12.04 - 20:03:47 »

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 » Gespeichert
TMC
Freund des Hauses!
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 3660


meden agan


« Antworten #3 am: 13.12.04 - 20:35:40 »

Gute Idee, ich bin sehr interessiert   Cheesy
Gespeichert

Matthias

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

animate
Freund des Hauses!
Gold Platin u.s.w. member:)
*****
Offline Offline

Beiträge: 1540


Uh, I'm just gonna go find a cash machine.


WWW
« Antworten #4 am: 13.12.04 - 21:30:03 »

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.
Gespeichert

Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.
TMC
Freund des Hauses!
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 3660


meden agan


« Antworten #5 am: 13.12.04 - 22:08:21 »

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
Gespeichert

Matthias

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

animate
Freund des Hauses!
Gold Platin u.s.w. member:)
*****
Offline Offline

Beiträge: 1540


Uh, I'm just gonna go find a cash machine.


WWW
« Antworten #6 am: 13.12.04 - 22:13:56 »

ihr wollt Links? Ihr bekommt Links

http://www.cetus-links.org/oo_patterns.html
Gespeichert

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
« Antworten #7 am: 14.12.04 - 10:35:23 »

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.  Wink

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.  Wink
 
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  Wink  ).
 
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 » Gespeichert
Semeaphoros
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 8152


ho semeaphoros - agr.: der Notesträger


WWW
« Antworten #8 am: 14.12.04 - 10:49:39 »

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

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
animate
Freund des Hauses!
Gold Platin u.s.w. member:)
*****
Offline Offline

Beiträge: 1540


Uh, I'm just gonna go find a cash machine.


WWW
« Antworten #9 am: 14.12.04 - 10:57:12 »

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
Gespeichert

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
« Antworten #10 am: 14.12.04 - 11:34:16 »

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.
Gespeichert
Marinero Atlántico
Gast
« Antworten #11 am: 16.12.04 - 20:49:33 »

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 
Gespeichert
TMC
Freund des Hauses!
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 3660


meden agan


« Antworten #12 am: 16.12.04 - 21:05:16 »

OK, prima.
Hast Du eine Idee womit man starten könnte?

Gespeichert

Matthias

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

-Michael-
Aktives Mitglied
***
Offline Offline

Geschlecht: Männlich
Beiträge: 153



WWW
« Antworten #13 am: 19.12.04 - 21:41:58 »

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
Gespeichert

Marinero Atlántico
Gast
« Antworten #14 am: 20.12.04 - 10:03:10 »

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 » Gespeichert
Semeaphoros
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 8152


ho semeaphoros - agr.: der Notesträger


WWW
« Antworten #15 am: 20.12.04 - 12:25:48 »

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.
Gespeichert

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
« Antworten #16 am: 20.12.04 - 16:35:19 »

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.  Grin
 

Gespeichert
Semeaphoros
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 8152


ho semeaphoros - agr.: der Notesträger


WWW
« Antworten #17 am: 20.12.04 - 16:51:48 »

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.
Gespeichert

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
« Antworten #18 am: 20.12.04 - 21:20:27 »

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
Gespeichert
Marinero Atlántico
Gast
« Antworten #19 am: 20.12.04 - 22:32:37 »

Kappseln, Kompisition, Interfaces, Implementierung, lose gekoppelt, interagierende Objekte, Abstraktionen, GoF Patterns.
Lots of confusing stuff  Huh
Tonnen von Fremdwörtern  Grin

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.
Gespeichert
Seiten: [1] 2 3 Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006, Simple Machines Prüfe XHTML 1.0 Prüfe CSS
Impressum Atnotes.de - Powered by Syslords Solutions - Datenschutz | Partner: