Ho un programma di manutenzione per auto con una classe Vehicle astratta che ha diverse classi derivate come Car MotorCycle , ecc. Ciascuno di questi veicoli derivati a sua volta è un carburante o un veicolo elettrico. Quindi, invece di avere un FuelCar , ElectricCar , FuelMotorCycle , ElectricMotorCycle ecc., Sto provando a implementarlo usando la composizione.
Il problema ora è che dovrei controllare tutto il tempo se è un veicolo elettrico o di carburante, e quindi fare as cast (è come reinterpret_cast da c ++) di conseguenza, o dovrei avvolgere ogni as cast con% codice%. Aggiunge complessità al codice.
Un'altra opzione stava rimuovendo la classe try catch vuota e ogni veicolo doveva contenere sia EnergySource che Fuel e inizializzarne solo uno nel ctor, ma non sembra giusto avere un'auto a benzina che anche avere una parte elettrica (anche se quella parte è nulla). Anche se questo sembra il più semplice dei tre.
Qualche suggerimento su quale sia l'approccio migliore?
Ecco il diagramma UML di ciò che attualmente ho:
Codice:
