Допустим, у меня есть рефератVehicle
класс и абстрактные классы автомобилей, грузовиков, мотоциклов, производные от Vehicle
. Также представьте, что я должен быть в состоянии создать автомобиль на топливной основе или электрический автомобиль и так далее для грузовика и мотоцикла. (классы бетона)
Два вопроса:
1. Предположим, что я хочу наполнить транспортное средство энергией, не зная, что это такое, полиморфным способом. Например, если транспортное средство основано на топливе, я хочу заправить его топливом, и метод должен иметь 3 параметра:
void FillUpEnergy(EfuelType i_fuelType,int amounOfEnergy, int maxAmountOfEnergy)
но для электромобиля мне нужна почти такая же функция, но на этот раз без типа топлива, конечно, например, (2 параметра):
void FillUpEnergy(int amounOfEnergy, int maxAmountOfEnergy)
Могу ли я использовать полиморфный FillUpEnergy
метод с указанными выше ограничениями? (различные сигнатуры методов)
2. В моей реализации все конкретные классы содержат ссылку наEngine
(другой абстрактный класс ), представляющий FuelEngine
илиElectricEngine
(другие конкретные классы, которые у меня есть, происходят от Engine ). Например, у меня есть конкретный класс с именем ElectricCar
, который содержит ссылку на ElectricEngine
.
Достаточно ли хороша эта архитектура или есть лучшие способы реализации гаражной системы? (С точки зрения объектно-ориентированного проектирования и т. д.)