📄 employee.vb
字号:
Option Explicit On 'Declare Variables
Option Strict On 'Explicit Data types
Public Class Employee
'Event Definition for ErrorEvent
Public Event ErrorEvent(ByVal objName As String)
Private mstrSSN As String
Private mstrLastName As String
Private mstrFirstName As String
Private mstrAddress As String
Private mintRank As Integer
Private mintAge As Integer
Public Property SSN() As String
Get
Return mstrSSN
End Get
Set(ByVal Value As String)
If Value.Length < 11 Then
RaiseEvent ErrorEvent("SSN")
Else
mstrSSN = Value
End If
End Set
End Property
Public Property LastName() As String
Get
Return mstrLastName
End Get
Set(ByVal Value As String)
mstrLastName = Value
End Set
End Property
Public Property FirstName() As String
Get
Return mstrFirstName
End Get
Set(ByVal Value As String)
mstrFirstName = Value
End Set
End Property
Public Property Address() As String
Get
Return mstrAddress
End Get
Set(ByVal Value As String)
mstrAddress = Value
End Set
End Property
Public Property Age() As Integer
Get
Return mintAge
End Get
Set(ByVal Value As Integer)
mintAge = Value
End Set
End Property
Public Property Rank() As Integer
Get
Return mintRank
End Get
Set(ByVal Value As Integer)
If Value > 5 Or Value < 1 Then
RaiseEvent ErrorEvent("Rank")
Else
mintRank = Value
End If
End Set
End Property
Public Overridable Function Compensation() As Long
'This Function will be overriden by
'code in Subclasses.
End Function
End Class
Public Class ContractEmployee
Inherits Employee
Private mintHours As Integer
Private msngPayRate As Single
Public Property Hours() As Integer
Get
Return mintHours
End Get
Set(ByVal Value As Integer)
mintHours = Value
End Set
End Property
Public Property PayRate() As Single
Get
Return msngPayRate
End Get
Set(ByVal Value As Single)
msngPayRate = Value
End Set
End Property
Public Overrides Function Compensation() As Long
If mintHours > 40 Then
Return CLng((msngPayRate * 40) + (msngPayRate * 1.5 * (mintHours - 40)))
Else
Return CLng(msngPayRate * mintHours)
End If
End Function
End Class
Public Class FullTimeEmployee
Inherits Employee
Private msngSalary As Single
Private msngBonus As Single
Private mintOTHours As Integer
Public Sub New(ByVal intHrs As Integer)
If intHrs > 40 Then
mintOTHours = intHrs - 40
Else
mintOTHours = 0
End If
End Sub
Public Property Salary() As Single
Get
Return msngSalary
End Get
Set(ByVal Value As Single)
msngSalary = Value
End Set
End Property
Public Property Bonus() As Single
Get
Return msngBonus
End Get
Set(ByVal Value As Single)
msngBonus = Value
End Set
End Property
Public Overrides Function Compensation() As Long
'Call method based on OT Hours
Dim intOTHours As Integer = mintOTHours
If intOTHours > 0 Then
Return CalcSalary(intOTHours)
Else
Return CalcSalary()
End If
End Function
Private Overloads Function CalcSalary() As Long
'For Manager Employee
Return CLng(Salary + Bonus)
End Function
Private Overloads Function CalcSalary(ByVal Hours As Integer) As Long
'For Non-Manager Employee
Dim sngHourlyRate As Single = Salary / 180
Select Case mintOTHours
Case Is <= 10
Return CLng(Salary + Bonus + mintOTHours * 1.25 * sngHourlyRate)
Case Is <= 20
Return CLng(Salary + Bonus + mintOTHours * 1.5 * sngHourlyRate)
Case Is <= 30
Return CLng(Salary + Bonus + mintOTHours * 1.75 * sngHourlyRate)
Case Else
Return CLng(Salary + Bonus + mintOTHours * 2 * sngHourlyRate)
End Select
End Function
End Class
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -