не выставляйте внутренние компоненты вашего класса в интерфейсе - другими словами, публичный метод Car должен быть Start, а не StartEngine
если вы хотите навязать внутреннюю структуру (например, иметь только один движок), вам нужен другой абстрактный / базовый класс Engine, который может быть специализированным.
тогда вы можете создать спортивный автомобиль из частей, установив для члена m_engine спортивный подкласс Engine и т. Д.
РЕДАКТИРОВАТЬ: обратите внимание, что в реальном мире турбокомпрессор не является частью двигателя, это дополнение к двигателю с его собственным интерфейсом управления ... Но если вы хотите включить такие вещи в свой Ferrari Engine, все в порядке, просто upcast в подклассе SportsCar, чтобы превратить ваш базовый Engine в TurboEngine
но было бы лучше, если бы моделирование содержало отдельные компоненты - таким образом, вы можете модернизировать свой турбокомпрессор (например, двойной впуск по сравнению с одним впускным) без замены всего двигателя!