Как правильно называть такую композицию классов?

В C# композиция классов обычно называется "агрегацией" или "композицией". Это понятие относится к отношению, в котором один класс (называемый "контейнером" или "композитом") содержит другой класс (называемый "компонентом" или "агрегатом") и управляет его жизненным циклом.

Когда говорят о композиции классов в C#, обычно имеют в виду, что один класс является частью другого класса и не может существовать независимо. Такая композиция обычно реализуется путем создания экземпляра класса-компонента внутри класса-контейнера. Класс-контейнер может иметь свои собственные поля, методы и свойства, а также использовать методы и свойства класса-компонента с помощью ссылки на него.

Примером композиции классов может служить класс "Автомобиль", который содержит экземпляр класса "Двигатель". В этом случае класс "Автомобиль" является контейнером, а класс "Двигатель" - компонентом. Класс "Автомобиль" может иметь свои собственные свойства и методы, а также использовать свойства и методы класса "Двигатель" для управления его работой.

Важно отметить, что композиция классов позволяет создавать более гибкую и модульную архитектуру программы. Она позволяет разделить функциональность программы на отдельные классы, каждый из которых выполняет определенную задачу. Это упрощает понимание и поддержку кода, а также позволяет эффективно использовать повторно используемые компоненты.

Следует также упомянуть, что композиция классов отличается от наследования, которое также является одним из способов организации повторно используемого кода. Наследование позволяет создавать иерархии классов, где класс-потомок наследует свойства и методы класса-предка. В отличие от композиции, при наследовании класс-потомок может существовать независимо от класса-предка.

В итоге, композиция классов в C# - это мощный инструмент для организации кода, который помогает создавать гибкие, модульные и повторно используемые компоненты. Она позволяет разделить сложную логику программы на более простые и понятные компоненты, что упрощает разработку и поддержку кода.