Smetti di usare l'ereditarietà, è lo strumento sbagliato per questo lavoro.
Invece, preferisci tipizzazione compositiva .
class Car
{
String VIN;
CarModel ModelType;
Motor Motor;
}
class CarModel
{
String Name;
MotorModel DefaultEngineType;
}
class MotorModel
{
Strimg Name;
int Cylinders;
int Displacement;
}
class Motor
{
MotorModel MotorType;
int WearAndTear;
}
Una macchina specifica ha un motore, una macchina da presa ha un motore predefinito associato. L'ereditarietà ha difficoltà a modellarlo.
Usando la digitazione compositiva, è possibile cambiare il motore di un'Audi, e farlo usare un grosso blocco Chevy se sei così inclinato: D
Un CarModel non ha un motore, solo una specifica predefinita per quale tipo di motore dovrebbe essere collocato in quel tipo di auto.