Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Module Module1
- ' Flotta di veicoli
- ' Data una flotta di veicoli, determinare se due diversi veicoli hanno lo stesso consumo
- ' quale veicolo è più veloce e quale ha il maggior numero di ruote
- Class Vehicle
- Public Property Model As String ' modello di veicolo
- Public Property Consumption As Integer ' consumo al km
- Public Property Speed As Integer ' velocità al km
- Public ReadOnly Property Wheels As Integer ' numero di ruote (è un'informazione che dipende dal tipo e non dall'utente!!!)
- ' wheels non è modificabile durante il ciclo di vita di un veicolo, quindi
- ' DEVE essere NECESSARIAMENTE inizializzata nel costruttore
- Public Sub New(wheels As Integer)
- Me.Wheels = wheels
- End Sub
- ' regola di uguaglianza tra veicoli: per me sono uguali quando hanno lo stesso consumo
- Public Overrides Function Equals(obj As Object) As Boolean
- If TypeOf obj Is Vehicle Then
- Dim tmp As Vehicle = obj
- Return tmp.Consumption = Consumption
- End If
- Return False
- End Function
- ' gethashcode deve solo restituire un valore conforme ad equals:
- ' quando due oggetti sono uguali restituiscono lo stesso hashcode
- Public Overrides Function GetHashCode() As Integer
- Return Consumption
- End Function
- End Class
- Public Sub FleetManagement(vehicles() As Vehicle)
- Dim wheelsMax As Vehicle = vehicles(0)
- Dim faster As Vehicle = vehicles(0)
- For Each vehicle In vehicles ' individua il più veloce e quello che ha più ruote
- If vehicle.Speed > faster.Speed Then faster = vehicle
- If vehicle.Wheels > wheelsMax.Wheels Then wheelsMax = vehicle
- Next
- Console.WriteLine("Veicolo più veloce: {0}", faster)
- Console.WriteLine("Veicolo con più ruote: {0}", wheelsMax)
- Dim index = 0 ' cerca se ci sono veicoli uguali
- Dim same1 As Vehicle = Nothing
- Dim same2 As Vehicle = Nothing
- ' scansione esterna
- While same1 Is Nothing And index < vehicles.Length - 1
- Dim innerIndex = index + 1
- ' scansione interna
- While same1 Is Nothing And innerIndex < vehicles.Length
- If vehicles(index).Equals(vehicles(innerIndex)) Then
- same1 = vehicles(index)
- same2 = vehicles(innerIndex)
- End If
- innerIndex += 1
- End While
- index += 1
- End While
- If same1 Is Nothing Then
- Console.WriteLine("Non ci sono veicoli uguali")
- Else
- Console.WriteLine("I veicoli {0} e {1} sono uguali", same1, same2)
- End If
- End Sub
- Sub Main()
- Dim biciDaCorsa As New Bicycle With {.Model = "Bici da corsa", .Speed = 40, .Consumption = 5}
- Dim biciDaPasseggio As New Bicycle With {.Model = "Bici da passeggio", .Speed = 15, .Consumption = 1}
- Dim c4 As New Machine With {.Model = "Citroen C4", .Speed = 180, .Consumption = 13}
- Dim ferrari As New Machine With {.Model = "Ferrari", .Speed = 280, .Consumption = 100}
- Dim truck As New Truck With {.Model = "Iveco", .Speed = 90, .Consumption = 60}
- Dim tucson As New Machine With {.Model = "Hyunday Tucson", .Speed = 190, .Consumption = 13}
- Dim fleet() As Vehicle = {biciDaCorsa, biciDaPasseggio, c4, ferrari, truck, tucson}
- FleetManagement(fleet)
- End Sub
- End Module
- Class Bicycle
- Inherits Vehicle
- Public Sub New()
- MyBase.New(2)
- End Sub
- Public Overrides Function ToString() As String
- Return String.Format("Bicicletta: {0}", Model)
- End Function
- End Class
- Class Machine
- Inherits Vehicle
- Public Sub New()
- MyBase.New(4)
- End Sub
- Public Overrides Function ToString() As String
- Return String.Format("Automobile: {0}", Model)
- End Function
- End Class
- Class Truck
- Inherits Vehicle
- Public Sub New()
- MyBase.New(6)
- End Sub
- Public Overrides Function ToString() As String
- Return String.Format("Camion: {0}", Model)
- End Function
- End Class
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement