Contributed by Chris Rathman
Public Sub Main()
Dim i As Integer
Dim aRectangle As CMRRectangle
Dim aCircle As CMRCircle
Dim scribble(1 To 2) As CMRShape
' set up the respective instances
Set aRectangle = New CMRRectangle
Set aCircle = New CMRCircle
Call aRectangle.init(10, 20, 5, 6)
Call aCircle.init(15, 25, 8)
' throw the objects into a collection
Set scribble(1) = aRectangle
Set scribble(2) = aCircle
' use the shapes polymorphically
For i = 1 To UBound(scribble)
Call scribble(i).Draw
Call scribble(i).rMoveTo(100, 100)
Call scribble(i).Draw
Next i
' call a rectangle specific function
Set aRectangle = New CMRRectangle
Call aRectangle.init(0, 0, 15, 15)
Call aRectangle.setWidth(30)
Call aRectangle.CMRShape_Draw
End Sub
|
Public Function getX() End Function Public Function getY() End Function Public Sub setX(aNumber) End Sub Public Sub setY(aNumber) End Sub Public Sub moveTo(newX, newY) End Sub Public Sub rMoveTo(deltaX, deltaY) End Sub Public Sub Draw() End Sub |
Implements CMRShape
Private x
Private y
Private width
Private height
' initialize a rectangle
Public Sub init(newX, newY, aWidth, aHeight)
Call CMRShape_setX(newX)
Call CMRShape_setY(newY)
Call setWidth(aWidth)
Call setHeight(aHeight)
End Sub
' get the origin x value
Public Function CMRShape_getX()
CMRShape_getX = x
End Function
' get the origin y value
Public Function CMRShape_getY()
CMRShape_getY = y
End Function
' set the origin x value
Public Sub CMRShape_setX(aNumber)
x = aNumber
End Sub
' set the origin y value
Public Sub CMRShape_setY(aNumber)
y = aNumber
End Sub
'shift the origin based on the (x,y) point
Public Sub CMRShape_moveTo(newX, newY)
Call CMRShape_setX(newX)
Call CMRShape_setY(newY)
End Sub
' shift the origin based on the delta (x,y) point
Public Sub CMRShape_rMoveTo(deltaX, deltaY)
Call CMRShape_setX(CMRShape_getX() + deltaX)
Call CMRShape_setY(CMRShape_getY() + deltaY)
End Sub
' draw the rectangle
Public Sub CMRShape_Draw()
Debug.Print "Drawing a rectangle:(" & _
CMRShape_getX() & "," & CMRShape_getY() & _
"), width " & getWidth() & ", height " & getHeight()
End Sub
' get the width of the rectangle
Public Function getWidth()
getWidth = width
End Function
' get the height of the rectangle
Public Function getHeight()
getHeight = height
End Function
' set the width of the rectangle
Public Sub setWidth(aNumber)
width = aNumber
End Sub
' set the height of the rectangle
Public Sub setHeight(aNumber)
height = aNumber
End Sub
|
Implements CMRShape
Private x
Private y
Private radius
' initialize a circle
Public Sub init(newX, newY, aRadius)
Call CMRShape_setX(newX)
Call CMRShape_setY(newY)
Call setRadius(aRadius)
End Sub
' get the origin x value
Public Function CMRShape_getX()
CMRShape_getX = x
End Function
' get the origin y value
Public Function CMRShape_getY()
CMRShape_getY = y
End Function
' set the origin x value
Public Sub CMRShape_setX(aNumber)
x = aNumber
End Sub
' set the origin y value
Public Sub CMRShape_setY(aNumber)
y = aNumber
End Sub
'shift the origin based on the (x,y) point
Public Sub CMRShape_moveTo(newX, newY)
Call CMRShape_setX(newX)
Call CMRShape_setY(newY)
End Sub
' shift the origin based on the delta (x,y) point
Public Sub CMRShape_rMoveTo(deltaX, deltaY)
Call CMRShape_setX(CMRShape_getX() + deltaX)
Call CMRShape_setY(CMRShape_getY() + deltaY)
End Sub
' draw the circle
Public Sub CMRShape_Draw()
Debug.Print "Drawing a circle:(" & _
CMRShape_getX() & "," & CMRShape_getY() & _
"), radius " & getRadius()
End Sub
' get the radius of the circle
Public Function getRadius()
getRadius = radius
End Function
' set the radius of the circle
Public Sub setRadius(aNumber)
radius = aNumber
End Sub
|
Drawing a rectangle:(10,20), width 5, height 6 Drawing a rectangle:(110,120), width 5, height 6 Drawing a circle:(15,25), radius 8 Drawing a circle:(115,125), radius 8 Drawing a rectangle:(0,0), width 30, height 15 |