Statische Member einer Klasse hinzufügen

31/01/2010 - 17:20 von Tom | Report spam
Ich habe eine Klasse in VBS definiert und möchte dieser eine statische
Eigenschaft hinzufügen die über Klassenname.Eigenschaft ansprechbar ist. Wie
füge ich einer Klasse in VBS eine statische Eigenschaft hinzu?
 

Lesen sie die antworten

#1 ekkehard.horner
01/02/2010 - 12:35 | Warnen spam
Tom schrieb:
Ich habe eine Klasse in VBS definiert und möchte dieser eine statische
Eigenschaft hinzufügen die über Klassenname.Eigenschaft ansprechbar ist. Wie
füge ich einer Klasse in VBS eine statische Eigenschaft hinzu?



Man braucht eine globale Variable, eine Funktion und eine zusaetzliche
Klasse:

Dim oItemA : Set oItemA = New cItem.init( "A" )
Dim oItemB : Set oItemB = New cItem.init( "B" )
WScript.Echo oItemA.ToString(), oItemB.ToString()
Dim oItemC : Set oItemC = New cItem.init( "C" )
WScript.Echo oItemA.StatCount, oItemB.StatCount, oItemC.StatCount

Class cItem
Private m_oStatCnt
Private m_nStatCnt
Private m_sName
Public Function init( sName )
Set init = Me
Set m_oStatCnt = getCounter()
m_nStatCnt = m_oStatCnt.getNext()
m_sName = sName
End Function
Public Function ToString()
ToString = "Item " & Join( Array( m_sName, m_nStatCnt, m_oStatCnt.Count ), "-" )
End Function
Public Property Get StatCount()
StatCount = m_oStatCnt.Count
End Property
End Class ' cItem

Dim goCounter : Set goCounter = Nothing
Function getCounter()
If goCounter Is Nothing Then
Set goCounter = New cCounter
End If
Set getCounter = goCounter
End Function

Class cCounter
Private m_nCount
Public Property Get Count()
Count = m_nCount
End Property
Public Function getNext()
m_nCount = m_nCount + 1
getNext = m_nCount
End Function
End Class ' cCounter

Ausgabe:

-
Item A-1-2 Item B-2-2
3 3 3

Lohnt sich der Aufwand wirklich, OO-Merkmale in einer Sprache nachzubilden,
die dafuer nicht gedacht ist?

Ähnliche fragen