在进行软件开发时,经常需要处理时间相关的数据。例如,需要跟踪CD中每首歌曲的长度,或者计算一个程序的运行时间。在这些情况下,可能需要一个能够精确表示时间的类。标准的编程语言提供了一些内置的时间处理功能,但它们往往不能满足所有需求。因此,可能会考虑创建一个自定义的时间类。
正在为Visual Basic和VisualC#编写一个培训课程。在这个课程中,需要提供多个示例程序,因此已经连续编写了大约两个月。这个课程的核心项目是一个CD跟踪程序,随着每个培训部分的完成,这个程序将被扩展和增强。
在第一部分“基础”中,使用了一个结构体来保存艺术家名称和专辑标题,并将数据保存到文本文件中。在第二部分“面向对象编程”中,将程序升级为使用类和XML文件。这部分存储了艺术家、专辑、歌曲标题、长度、发行年份,并计算总长度。
在第三部分“图形用户界面编程”中,将程序转换为图形用户界面,并添加了专辑封面和歌词。最后,在第四部分“数据库编程”中,将再次升级程序,将其转换为使用数据库。
将自定义的时间类添加到项目中,它提供了以下功能:
属性:
构造函数:
关系运算符:
重载运算符:
标准转换方法:
其他数学运算:
在可能的缩小转换中,使用了一些范围检查,并在超出范围时抛出OverflowException。使用了标准异常,所以可以将代码轻松地集成到程序中。
以下是一个简单的测试程序,它通过了所做的有限测试,但广泛的测试可能会(并且可能会)揭示缺陷。如果发现一个,请告诉!
Module TestTimeClass
Sub Main()
Dim i As Time
Dim j As New Time(275)
Dim k As New Time("4:15")
i = j + k
Console.WriteLine(i.ToString())
i = k - j
Console.WriteLine(i.ToString())
Console.WriteLine(Time.ToDecimal(i))
If k < j Then
Console.WriteLine("k is smaller than j.")
Else
Console.WriteLine("j is smaller than k.")
End If
Console.ReadLine()
End Sub
End Module