Domino 9 und frühere Versionen > Entwicklung
Wie kann ich eine Klasse sinnvoll aufbauen ?
TMC:
RTF habe ich vorerst nicht eingebaut. In der jetzigen Lösung schreibe ich die Werte in 1 Textfeld (Liste).
Die Unterscheidung würde ich in der "HistoryMain" machen in der "Private Sub writeHistory()".
Das ist übrigens mein bisheriger Code-Draft der Klasse "HistoryEntry":
--- Code: ---Public Class HistoryEntry
Private m_itmHistory As NotesItem
Private m_vAction As Variant
Private m_strHistoryEntry As String
'------------------------------------------------------------------------------------------------
Public Sub new()
End Sub
'------------------------------------------------------------------------------------------------
'Get/Set-Methoden
Public Property Set Action As Variant
m_vAction = Action
End Property
'------------------------------------------------------------------------------------------------
Public Sub write(doc As NotesDocument)
'neuen History - Eintrag schreiben
Call assembleHistory()
Set m_itmHistory = doc.GetFirstItem("History")
Call m_itmHistory.AppendToTextList( m_strHistoryEntry )
' Call doc.Save(True, True)
End Sub
'------------------------------------------------------------------------------------------------
Private Sub assembleHistory()
'History zusammenstellen
'Output ist in m_strHistoryEntry
Dim session As New notessession
Dim strName As String
Dim strDate As String
Dim i As Integer
strName = session.CommonUsername
strDate = Format$( Now , "dd.mm.yyyy hh:mm")
For i = 0 To Ubound(m_vAction)
If i=0 Then
m_strHistoryEntry = strDate & Chr(9) & strName & Chr(9) & m_vAction(i)
Else
m_strHistoryEntry = m_strHistoryEntry & Chr(13)+Chr(10) & Chr(9) & Chr(9) & m_vAction(i)
End If
Next
End Sub
'------------------------------------------------------------------------------------------------
End Class
--- Ende Code ---
Was aber nicht heißen soll, dass Deine Aufteilung nicht gut ist - war mir nur als Anfänger etwas zu kompliziert.
Was hier in der HistoryEntry - Klasse imho u.a. noch nicht perfekt ist:
- Datumsformat ist statisch
- Username ist statisch (vielleicht brauche ich mal ein anderes Format)
- Prüfung wieviele History-Zeilen existieren ist noch nicht eingebaut.
TMC:
Noch 'ne Frage:
Gibt's eigentlich spezielle Regeln und Tipps für ErrorHandling in Klassen?
Oder macht man das "ganz normal" wie üblich in Functions und Subroutinen:
Wo man direkt eingreifen kann z.B. mit "If.....Then" abfangen, ansonsten am Anfang ein "On Error goto ErrorHandler"?
Wo habt Ihr den Code für die Fehlerabarbeitung? In den jeweiligen Klassen selber oder in einer eigenen Function/Sub, die Ihr von der Klasse aus aufruft?
animate:
ich kenne keine speziellen Regeln.
Marinero Atlántico:
Das mit dem ErrorHandling ist ein guter Punkt.
@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.
Gruß Axel
animate:
der Code und die Diagramme, die ich hier gepostet habe, sind von mir schnell zusammengezimmert worden. TMC hat das in eine DB gepackt und hier in den Thread gehängt.
Ich verwende kein Strategy und auch kein Factory-Pattern.
Wie TMC das jetzt gemacht hat, weiß ich nicht genau.
In meinem Fall war HistoryEntry abstrakt. Die Subklassen hatten spezielles Wissen darüber, wie sie die Informationen ins NotesDokuemnt schreiben müssen.
Als 'Factory' musste die History-Klasse selbst herhalten, die z.B. anhand eines Wertes/Feldes im betroffenen Dokument entscheidet, welches spezielle HistoryEntry-Objekt sie erstellt.
Wir können das sehr gerne weiter ausbauen. Mein Lösungsvorschlag ist vermutlich noch far from perfect und erhebt keinerlei Anspruch darauf, als Referenz herzuhalten.
Sowas ist vielleicht sogar ein interessantes Projekt für hier, weil zeitlich sehr überschaubar und evtl. von großem allgemeinem Nutzen.
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln