Imports System
Public Class MainClass
Shared Sub Main(ByVal args As String())
' use overloaded constructors
Dim time1 As New CTime2()
Dim time2 As New CTime2(2)
Dim time3 As New CTime2(21, 34)
Dim time4 As New CTime2(12, 25, 42)
Dim time5 As New CTime2(27, 74, 99)
Dim time6 As New CTime2(time4) ' use time4 as initial value
Const SPACING As Integer = 13 ' spacing between output text
Console.WriteLine( "Constructed with: " & vbCrLf & _
" time1: all arguments defaulted" & vbCrLf & _
Space(SPACING) & time1.ToUniversalString() )
' invoke time2 methods
Console.WriteLine( " time2: hour specified; minute and second defaulted" & _
vbCrLf & Space(SPACING) & _
time2.ToUniversalString() )
' invoke time3 methods
Console.WriteLine( " time3: hour and minute specified; second defaulted" & _
vbCrLf & Space(SPACING) & time3.ToUniversalString() )
' invoke time4 methods
Console.WriteLine( " time4: hour, minute and second specified" & _
vbCrLf & Space(SPACING) & time4.ToUniversalString() )
' invoke time5 methods
Console.WriteLine( " time5: hour, minute and second specified" & _
vbCrLf & Space(SPACING) & time5.ToUniversalString() )
' invoke time6 methods
Console.WriteLine( " time6: Time2 object time4 specified" & vbCrLf & _
Space(SPACING) & time6.ToUniversalString() )
End Sub
End Class
' Represents time and contains overloaded constructors.
Class CTime2
Inherits Object
Private mHour As Integer ' 0 - 23
Private mMinute As Integer ' 0 - 59
Private mSecond As Integer ' 0 - 59
' constructor initializes each variable to zero and
' ensures that each CTime2 object starts in consistent state
Public Sub New()
SetTime()
End Sub ' New
' CTime2 constructor: hour supplied;
' minute and second default to 0
Public Sub New(ByVal hourValue As Integer)
SetTime(hourValue)
End Sub ' New
' CTime2 constructor: hour and minute supplied;
' second defaulted to 0
Public Sub New(ByVal hourValue As Integer, _
ByVal minuteValue As Integer)
SetTime(hourValue, minuteValue)
End Sub ' New
' CTime2 constructor: hour, minute and second supplied
Public Sub New(ByVal hourValue As Integer, _
ByVal minuteValue As Integer, ByVal secondValue As Integer)
SetTime(hourValue, minuteValue, secondValue)
End Sub ' New
' CTime2 constructor: another CTime2 object supplied
Public Sub New(ByVal timeValue As CTime2)
SetTime(timeValue.mHour, timeValue.mMinute, timeValue.mSecond)
End Sub ' New
' set new time value using universal time;
' perform validity checks on data;
' set invalid values to zero
Public Sub SetTime(Optional ByVal hourValue As Integer = 0, _
Optional ByVal minuteValue As Integer = 0, _
Optional ByVal secondValue As Integer = 0)
' perform validity checks on hour, then set hour
If (hourValue >= 0 AndAlso hourValue < 24) Then
mHour = hourValue
Else
mHour = 0
End If
' perform validity checks on minute, then set minute
If (minuteValue >= 0 AndAlso minuteValue < 60) Then
mMinute = minuteValue
Else
mMinute = 0
End If
' perform validity checks on second, then set second
If (secondValue >= 0 AndAlso secondValue < 60) Then
mSecond = secondValue
Else
mSecond = 0
End If
End Sub ' SetTime
' convert String to universal-time format
Public Function ToUniversalString() As String
Return String.Format("{0}:{1:D2}:{2:D2}", _
mHour, mMinute, mSecond)
End Function ' ToUniversalString
End Class
|