Композиция на основе классов
В этом случае объект-часть должен создаваться в процессе созда- ния объекта-контейнера.
![]() |
Изменить состояние объекта-части можно только в рамках самого контейнера, извне это сделать нельзя.
Пример
Сущности аналогичны базовым. Отличия в предметной области: осветительный прибор собирается на заводе изготовителе и представля- ет собой единое целое. Замена частей невозможна.
Отличия в программном коде заключаются в изменении конструк- тора класса Прибор. В этом конструкторе создаются объекты-части (лам- почка и корпус изготавливаются на заводе на основе их технических ха- рактеристик, принятых в качестве параметров).
public Прибор(Корпус кор, Лампочка лам, string состояние)
{
this.кор = new Корпус(); this.кор.Тип = кор.Тип; this.кор.Цена = кор.Цена; this.лам = new Лампочка(); this.лам.Цена = лам.Цена;
this.лам.Мощность = лам.Мощность; this.состояние = состояние;
}
Весь остальной код остается неизменным. В обоих случаях будут выведены одни те же характеристики прибора.
//смена эталонной лампочки
п = new Прибор(к, л, "Включено");
Если поле, определяющее лампочку в классе Прибор сделать от- крытым, лампочку можно будет заменить, не создавая нового прибора.
п.лам.Мощность = 200.0;
Но это противоречит описанию предметной области.
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.