Currently I have this code for my underlying model:
Public Enum vehicleType
Car
Lorry
Bicycle
End Enum
Public Class TrafficSurveyA
' Declare the fields here.
Private fCars As Integer
Private fBicycles As Integer
Private fLorries As Integer
Public Sub New()
' An instance of TrafficSurveyA is created with all vehicle counts set to zero.
fCars = 0
fBicycles = 0
fLorries = 0
End Sub
Public Sub incrementCount(ByVal vehicle As vehicleType)
' Preconditions: none
' Postconditions: If vehicle is "Car", "Bicycle" or "Lorry" then 1 is added
' to the corresponding count. Otherwise nothing is done.
Select Case vehicle
Case vehicleType.Car : fCars = fCars + 1
Case vehicleType.Bicycle : fBicycles = fBicycles + 1
Case vehicleType.Lorry : fLorries = fLorries + 1
Case Else 'do nothing
End Select
End Sub
Public Function getCount(ByVal vehicle As vehicleType) As String
' Preconditions: none
' Postconditions: If vehicle is "Car", "Bicycle" or "Lorry", the string
' representation of the corresponding count is returned.
' Otherwise the empty string is returned.
Dim result As String
result = ""
Select Case vehicle
Case vehicleType.Car : result = Convert.ToString(fCars)
Case vehicleType.Bicycle : result = Convert.ToString(fBicycles)
Case vehicleType.Lorry : result = Convert.ToString(fLorries)
Case Else : result = ""
End Select
Return result
End Function
Public ReadOnly Property Vehicles() As String
' Preconditions: none
' Postconditions: The total number of vehicles recorded is returned.
Get
Return (fCars + fBicycles + fLorries).ToString()
End Get
End Property
End Class
It seems that the Enum
could just as easily be placed within the TrafficSurveyA
Class like so...
Public Class TrafficSurveyA
Enum vehicleType
Car
Lorry
Bicycle
End Enum
' Declare the fields here.
Private fCars As Integer
Private fBicycles As Integer
Private fLorries As Integer
Public Sub New()
' An instance of TrafficSurveyA is created with all vehicle counts set to zero.
fCars = 0
fBicycles = 0
fLorries = 0
End Sub
...
...
The only difference then seems to be in the GUI code I need to use this TrafficSurveyA.vehicleType.Lorry
rather than this vehicleType.Lorry
.
Both seem to run ok but is one of these implementations of the enum type wrong?
No, both are fine. It's just a matter of preference and what makes the most sense for organization purposes. The only suggestion I have is that if the enum will be used as a input or output type in any other classes, I wouldn't put it inside this class. That would just be confusing.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With