Sto provando a scrivere un semplice programma che dovrebbe consentire a un utente di salvare e visualizzare insiemi di dati eterogenei, ma in qualche modo correlati. Per chiarezza, userò un esempio rappresentativo di veicoli. Il flusso del programma è come questo:
- Il programma crea un oggetto Garage , che in pratica è una classe che può contenere un elenco di oggetti veicoli
- Quindi gli utenti creano oggetti Veicoli , questi veicoli hanno ciascuno una proprietà, diciamo Numero di targa . Una volta creato, l'oggetto Veicolo viene aggiunto a un elenco all'interno dell'oggetto Garage
- - Successivamente - l'utente può specificare che un determinato oggetto veicolo è in effetti un auto oggetto o oggetto Camion (dando così accesso ad alcuni attributi specifici come Numero di posti per la macchina, o Peso del carico per il camion)
A prima vista, questa potrebbe sembrare una domanda di un libro di testo OOP che coinvolge una classe base e un'eredità, ma il problema è più sottile perché al momento della creazione dell'oggetto (e fino a quando l'utente decide di fornire maggiori informazioni), il computer non lo fa so il tipo di veicolo esatto.
Di qui la mia domanda: come procederesti a implementare questo flusso di programma? OOP è la strada da percorrere?
Solo per dare una risposta iniziale, ecco cosa ho scoperto fino ad ora. Esiste solo una classe Vehicle e le varie proprietà / valori sono gestiti dal programma principale (non dalla classe) attraverso un dizionario. Tuttavia, sono abbastanza sicuro che ci deve essere una soluzione più elegante (sto sviluppando usando VB.net):
Public Class Garage
Public GarageAdress As String
Private _ListGarageVehicles As New List(Of Vehicles)
Public Sub AddVehicle(Vehicle As Vehicles)
_ListGarageVehicles.Add(Vehicle)
End Sub
End Class
Public Class Vehicles
Public LicensePlateNumber As String
Public Enum VehicleTypes
Generic = 0
Car = 1
Truck = 2
End Enum
Public VehicleType As VehicleTypes
Public DictVehicleProperties As New Dictionary(Of String, String)
End Class
NOTA che nell'esempio sopra i modificatori pubblici / privati non riflettono necessariamente il codice originale