Mega Code Archive

 
Categories / VB.Net Tutorial / Class Module
 

Demonstrate polymorphism in Point-Circle-Cylinder hierarchy

Class CTest2    Shared Sub Main()       Dim point As New Point(7, 11)       Dim circle As New Circle(22, 8, 3.5)       Dim cylinder As New Cylinder(10, 10, 3.3, 10)       Dim arrayOfShapes As Shape() = New Shape(2) {}       arrayOfShapes(0) = point       arrayOfShapes(1) = circle       arrayOfShapes(2) = cylinder       Console.WriteLine(point.Name & ": " & _          point.ToString() & vbCrLf & circle.Name & ": " & _          circle.ToString() & vbCrLf & cylinder.Name & _          ": " & cylinder.ToString())       Dim shape As Shape       For Each shape In arrayOfShapes          Console.WriteLine(shape.Name & ": " & _             shape.ToString() & vbCrLf & "Area = " & _             String.Format("{0:F}", shape.Area) & vbCrLf & _             "Volume = " & String.Format("{0:F}", shape.Volume))       Next    End Sub ' Main End Class Public MustInherit Class Shape    Public Overridable Function Area() As Double       Return 0    End Function    Public Overridable Function Volume() As Double       Return 0    End Function    Public MustOverride ReadOnly Property Name() As String End Class Public Class Point    Inherits Shape     Private mX, mY As Integer    Public Sub New()    End Sub ' New    Public Sub New(ByVal xValue As Integer, _       ByVal yValue As Integer)    End Sub ' New    Public Overrides Function ToString() As String       Return "[" & mX & ", " & mY & "]"    End Function ' ToString    Public Overrides ReadOnly Property Name() As String       Get          Return "Point"       End Get    End Property ' Name End Class Public Class Circle    Inherits Point     Private mRadius As Double    Public Sub New()    End Sub ' New    Public Sub New(ByVal xValue As Integer, _       ByVal yValue As Integer, ByVal radiusValue As Double)       MyBase.New(xValue, yValue)    End Sub ' New    Public Overrides Function ToString() As String       Return "Center= " & MyBase.ToString() & _          "; Radius = " & mRadius    End Function ' ToString    Public Overrides ReadOnly Property Name() As String       Get          Return "Circle"       End Get    End Property ' Name End Class Public Class Cylinder    Inherits Circle    Protected mHeight As Double    Public Sub New()    End Sub ' New    Public Sub New(ByVal xValue As Integer, _       ByVal yValue As Integer, ByVal radiusValue As Double, _       ByVal heightValue As Double)       MyBase.New(xValue, yValue, radiusValue)    End Sub ' New    Public Overrides ReadOnly Property Name() As String       Get          Return "Cylinder"       End Get    End Property ' Name End Class Point: [0, 0] Circle: Center= [0, 0]; Radius = 0 Cylinder: Center= [0, 0]; Radius = 0 Point: [0, 0] Area = 0.00 Volume = 0.00 Circle: Center= [0, 0]; Radius = 0 Area = 0.00 Volume = 0.00 Cylinder: Center= [0, 0]; Radius = 0 Area = 0.00 Volume = 0.00