Как создать полиморфный метод с разными сигнатурами

Допустим, у меня есть реферат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.
Достаточно ли хороша эта архитектура или есть лучшие способы реализации гаражной системы? (С точки зрения объектно-ориентированного проектирования и т. д.)

8
задан Tim Schmelter 6 August 2012 в 21:51
поделиться