Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Are enumerated type implementations located inside or outside the Class implementation

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?

like image 658
whytheq Avatar asked Dec 23 '12 17:12

whytheq


1 Answers

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.

like image 113
Steven Doggart Avatar answered Sep 28 '22 02:09

Steven Doggart