Mega Code Archive

 
Categories / VB.Net / Class
 

Four Level Hierachy

Imports System Public Class MainClass          Shared Sub Main(ByVal args As String())       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 IShape() = New IShape(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 IShape       For Each shape In arrayOfShapes          Console.WriteLine(shape.Name & ": " & "Area = " & _             String.Format("{0:F}", shape.Area()) & _             "Volume = " & String.Format("{0:F}", shape.Volume()) )       Next     End Sub End Class Public Interface IShape    Function Area() As Double    Function Volume() As Double    ReadOnly Property Name() As String End Interface Public Class Point    Implements IShape    Private mX, mY As Integer    Public Sub New()       X = 0       Y = 0    End Sub    Public Sub New(ByVal xValue As Integer, _       ByVal yValue As Integer)       X = xValue       Y = yValue    End Sub    Public Property X() As Integer       Get          Return mX       End Get       Set(ByVal xValue As Integer)          mX = xValue       End Set    End Property    Public Property Y() As Integer       Get          Return mY       End Get       Set(ByVal yValue As Integer)          mY = yValue       End Set    End Property    Public Overrides Function ToString() As String       Return "[" & mX & ", " & mY & "]"    End Function ' ToString    Public Overridable Function Area() As Double _       Implements IShape.Area       Return 0    End Function        Public Overridable Function Volume() As Double _       Implements IShape.Volume    Return 0    End Function    Public Overridable ReadOnly Property Name() As String _       Implements IShape.Name       Get          Return "Point"       End Get    End Property End Class  Public Class Circle    Inherits Point    Private mRadius As Double    Public Sub New()       Radius = 0    End Sub    Public Sub New(ByVal xValue As Integer, _       ByVal yValue As Integer, ByVal radiusValue As Double)       MyBase.New(xValue, yValue)       Radius = radiusValue    End Sub    Public Property Radius() As Double       Get          Return mRadius       End Get       Set(ByVal radiusValue As Double)          If radiusValue >= 0 Then             mRadius = radiusValue          End If       End Set    End Property    Public Function Diameter() As Double       Return mRadius * 2    End Function    Public Function Circumference() As Double       Return Math.PI * Diameter()    End Function    Public Overrides Function Area() As Double       Return Math.PI * mRadius ^ 2    End Function    Public Overrides ReadOnly Property Name() As String       Get          Return "Circle"       End Get    End Property    Public Overrides Function ToString() As String       Return "Center = " & MyBase.ToString() & _          "; Radius = " & mRadius    End Function ' ToString End Class Public Class Cylinder    Inherits Circle         Private mHeight As Double    Public Sub New()       Height = 0    End Sub    Public Sub New(ByVal xValue As Integer, _       ByVal yValue As Integer, ByVal radiusValue As Double, _       ByVal heightValue As Double)       MyBase.New(xValue, yValue, radiusValue)       Height = heightValue    End Sub    Public Property Height() As Double       Get          Return mHeight       End Get       Set(ByVal heightValue As Double)          If heightValue >= 0 Then             mHeight = heightValue          End If       End Set    End Property    Public Overrides Function Area() As Double       Return 2 * MyBase.Area + MyBase.Circumference * mHeight    End Function    Public Overrides Function Volume() As Double       Return MyBase.Area * mHeight    End Function     Public Overrides Function ToString() As String       Return MyBase.ToString() & "; Height = " & mHeight    End Function ' ToString    Public Overrides ReadOnly Property Name() As String       Get          Return "Cylinder"       End Get    End Property  End Class