Domino 9 und frühere Versionen > Entwicklung
Wie kann ich eine Klasse sinnvoll aufbauen ?
TMC:
OK danke, in der Theorie hab ich das soweit kapiert, mal sehen ob ich das auch so umsetzen kann. ;)
animate:
--- Zitat von: Marinero Atlántico am 26.06.04 - 12:12:22 ---@Thomas: Verate uns ungewaschenen Massen den Trick, wie man in HistoryEntry die Factory implementiert , um das Strategy-Pattern für die Subklassen zu implementieren.
oder schickt mir eine nsf, wenn es für euer Zeugs bisher eine Implementierung aka Beispieldatenbank gibt.
--- Ende Zitat ---
ist die Frage eigentlich noch offen?
ich weiß nicht genau, was du mit 'Trick' meinst, Axel.
Da ist kein Trick. In dem Beispielcode, den ich gepostet habe, habe ich völlig offen gelassen, wie entschieden wird, welches spezielle Objekt erzeugt wird. Möglichkeiten sind z.B. Felder/Feldwerte im betroffenen Dokument, irgendwelche Konfigurationsdokumente, etc.
Frag einfach nochmal, wenn ich die Frage nicht zufriedenstellend beantwortet habe.
TMC:
Ich bin übrigens gerade dabei, eine Logik einzubauen, um diese blöde Textfeld-Größenbeschränkung zu überwachen.
Nicht dass wer meint ich wäre mittlerweile eingeschlafen :-) (na ja, im Rahmen von MultiTasking mach ich auch nebenbei noch andere Dinge, hab ja auch parallel noch die Book-Rezension gemacht :))
--- Code: --- Private Sub removeEntries()
'Ziel ist es die Größenbeschränkung von Textfeldern zu beachten.
'Zusätzlich kann der History-Klasse eine Max-Anzahl Einträge übergeben werden.
'Wenn Max-Anzahl = "", dann wird gleich die Größenüberprüfung eingeleitet.
'Wenn Max-Anzahl vorgegeben, dann wird erst mal gekürzt und der neue Wert
'angehängt. Wenn immer noch zu lang: Solange alte Einträge rauswerfen, bis es passt.
--- Ende Code ---
While-Wend Schleifen, eine "DeleteArrayPosition"-Function etc. sind dabei hilfreich....
animate:
ich habs bis jetzt weggelassen, weil ich nicht übertreiben wollte und weils auch nicht nötig war. An dieser Stelle passt es vielleicht.
wir haben ja von History zu HistoryEntry eine 1:n - Beziehung, d.h. zu einem History-Objekt können mehrere HistoryEntry-Objekte gehören.
Im Code würde das so aussehen (in der Klasse History):
Private m_HistoryEntries() As HistoryEntry
also hätten wir ein Array voll mit Objekten anstelle des einen Objekts, das wir jetzt haben.
Denkbar wäre zur Lösung deines Problems folgendes zu tun:
Ein HistoryEntry-Objekt kennt die Größe seines Texts im Notesdokument und stellt diese Information auch anderen Objekten zur Verfügung (über get-Methode)
Im Konstruktor des History-Objekts (oder in einer Methode, die von dort aus aufgerufen wird) erzeugen wir für jeden Eintrag im Dokument ein HistoryEntry-Objekt und fügen es unserem Array (m_HistoryEntries, s. oben) hinzu.
Beim Speichern des Dokuments wird wie bisher ein HistoryEntry-Objekt erzeugt, das die aktuellen Änderungen repräsentiert und dem Array hinzugefügt.
Wir haben jetzt also alle HistoryEntry-Objekte in unserem Array, und können bevor wir sie ins Dokument schreiben jedes HistoryEntry-Objekt fragen, wie groß es ist, und mit dieser Information entscheiden, wie viele Einträge wir machen.
Nur ne Idee. Einigermaßen verständlich?
TMC:
--- Zitat von: Thomas Völk am 27.06.04 - 00:49:59 ---Nur ne Idee. Einigermaßen verständlich?
--- Ende Zitat ---
Leider nicht ganz.
Liegt wohl auch an meinem etwas anderen Ansatz.
Hab mir das so gedacht:
Völlig egal ist erstmal, wieviele Zeilen im History-Feld aktuell sind. Jedenfalls passiert irgendwas (User klickt einen Workflow-Button an, oder User öffnet das Dok und will es nach Änderungen speichern) - dadurch wird ein HistoryEntry - Objekt erstellt. Dem Objekt werden dann die Änderungen übergeben (hier als Property), z.B. "habe Antrag genehmigt" oder aber "Feld ABC geändert; alter Wert war "bla bla"". Die Klasse managed den Rest: Wird durch das Ergänzen der neuen Zeile irgend ein Limit überschritten, dann werfen wir den ersten Eintrag raus. Immer noch überschritten: dann fliegt auch der nächste Eintrag raus. While...wend.
Na ja, wie auch immer, habe dank While...wend hier gerade eine Endlosschleife die ich noch flicken muss :P ;D
Ich sehe jetzt nicht ganz die Erfordernis das noch zu splitten. Aber es ist auch schon spät. Kann sein dass ich das erst nach ein paar Stunden Schlaf kapiere...
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln