Domino 9 und frühere Versionen > Entwicklung
Wie kann ich eine Klasse sinnvoll aufbauen ?
TMC:
Ich bin bezügl. Klassen ein Anfänger, da ich noch nie wirklich größere Klassen erstellt habe.
Wie baut Ihr sinnvoll Klassen auf?
Ich nehme als Beispiel eine History-Scriptlibrary, bisher hab ich alles als Subs & Functions in der Lib.
Was passiert:
A) User öffnet ein Dokument
+ Im Postopen werden zu überwachende Feldnamen und Feldinhalte jew. ein eine globale Variable (Array) gesetzt
B) User speichert ein Dokument
+ Im PostSave (nicht Querysave da RTF-Überwachung inclusive):
- Array-Vergleich vorher / nachher, wenn keine Änderung: mache nix
- setze History-Log zusammen, dabei Unterschied ob RTF oder nicht
- Definiere 1. und 2. "Spalte" (durch Tab getrennt), hier Datum und Username
- Setze String für Textfeld zusammen
- Hänge Änderungen ans Textfeld an
- Save
Ziel ist für mich, die Klasse prinzipiell für viele DB's verwenden zu können. Dinge wir den Namen des History-Feldes, die Anzahl der Historien-Einträge, etc. will ich der Klasse übergeben.
Bisher setze ich hier in der ScriptLib auch Standard-Functions wie Explode, Implode, CompareArray etc. ein.
Ich bin für jeden Ansatz dankbar, wie ich das in eine Klasse übernehmen könnte.
TMC:
Nachtrag:
Gibt es irgend eine (3rdParty) - Möglichkeit für Notes-LS, um Klassen übersichtlicher als im Designer zu entwickeln? Ich denke da an eine Browse-Möglichkeit. Dass kompilieren in 3rd-Party wohl nicht möglich ist, ist mir klar, aber zumindest um den Überblick zu behalten wäre das wohl sehr hilfreich.
animate:
ich kenne leider kein Tool, das objektorientierte Programmierung mit Notes irgendwie erleichtert. Hier im Forum wurde mal ein Projekt geboren (lssEclipse), ich glaube aber, dass es nicht mehr sehr lebendig ist.
zum Ansatz, den du wünschst:
schreib doch mal kurz auf, was diese Klasse können soll und, ggf., mit welchen anderen Klassen sie kooperieren soll.
und noch eine Frage hinterher:
warum möchtest du eine Klasse haben? Du hast ja scheinbar schon etwas funktionierendes in deiner History-Scriptlibrary...
TMC:
Schade dass es da wohl nichts gibt, um Klassen besser bearbeiten zu können. Wenn ich mir überlege, dass ich den jetzigen Code komplett in die Declarations kopiere: ich würde k. wenn dann Anpassungen nötig sind :P
--- Zitat von: Thomas Völk am 19.06.04 - 03:17:18 ---warum möchtest du eine Klasse haben? Du hast ja scheinbar schon etwas funktionierendes in deiner History-Scriptlibrary...
--- Ende Zitat ---
Sehr berechtigte Frage, ich glaube ich werde es dabei lassen. Die Subs/Functions, die ich ausschließlich in dieser ScriptLib verwende, mache ich noch zu "Private", dokumentiere das ganze in den Declarations, und dann sollte das gut so sein.
Mein Ziel war, etwas dabei zu lernen. Aber ich denke das gehe ich mal neu an bei einem anderen passenden Projekt.
Semeaphoros:
Es gibt da so einen Kompromiss, der manchmal ganz nützlich ist: man defniert eine Klasse, die einzelnen Member-Routinen machen aber nichts anderes, als eine normale Sub oder Function aus der gleichen ScriptLib auf. Man achtet dann natürlich darauf, dass beim Verwenden der Klasse nie die Klasse selbst dadurch umgangen wird, dass man die Subs und Functions direkt aufruft. Damit hat man dann aber die gewünschte gewohnte Designer-Darstellung für seine "Methoden".
Class Beispiel
daten as Datentyp
sub MemberMachIrgendwas (Param As String)
Call ExtMachIrgendwas (Param)
End Sub
function MemberMachWasAnderes (X as Integer) As String
MemberMachWasAnderes = ExtMachWasAnderes(X)
End Funcition
End Class
'****
sub ExtMachIrgendwas (Param As String)
REM Hier der effektive Code
End Sub
'****
function ExtMachWasAnderes (X as Integer) As String
ExtMachWasAnderes = "Die durchzuführende Berechnung mit X"
End Function
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln