Object-Oriented Programming with VBScript (2)
Continuing previous post, I explore Object-Oriented Programming with VBScript.
Now I want to take a closer look at inheritance and practice its workaround, called delegation.
Delegator Class example
Class ScreenPoint '' Properties 'Ancestor Point2D Private P2D 'Point color Private Color '---------------------- '' Methods 'Constructor - called automatically Private Sub Class_Initialize() Set P2D = new Point2D End Sub '---------------------- 'Destructor - called automatically Private Sub Class_Terminate() Set P2D = Nothing End Sub '---------------------- 'A pair of methods to access private property X Property Get X X = P2D.X End Property Property Let X(ByVal in_X) P2D.X = in_X End Property '---------------------- 'A pair of methods to access private property Y Property Get Y Y = P2D.Y End Property Property Let Y(ByVal in_Y) P2D.Y = in_Y End Property '---------------------- End Class
As you can see, ScreenPoint class has Point2D property. When initialized, it refers to Point2D object. Note, that ScreenPoint class does not have X or Y properties, but Property Let / Property Get methods don’t have to be in sync with property declarations.
Here’s the example of using the new class.
Public Sub Test1() Dim SP Dim V1 Set SP = new ScreenPoint V1 = SP.X SP.Y = 10 Set SP = Nothing End Sub
As you see, with Delegation we can effectively re-use data and code. The only inconvenience I found, is a boring amount of typing declaring Property Let / Property Get code blocks. Read next posts to see how I addressed it.