Композиция строго не определяет правила, касающиеся того, следует ли разрешать изменение составного объекта вне класса композиции.
Инкапсуляция связана с контролем доступа членов, определенных в классе, к внешнему миру. В общем, поля класса не должны быть напрямую доступны из внешнего кода, если следовать этому принципу, то вопрос о том, чтобы позволить ему быть модифицированным внешним кодом, не возникает. Инкапсуляция и композиция в принципе не связаны, поэтому в вашем примере тот факт, что B
является составной частью A
, сам по себе не диктует правило о том, что itsB
не должно быть модифицируемым вне A
.
Тем не менее, вы должны думать с точки зрения 1. Кто владеет объектом itsB
? 2. Потокобезопасен ли он, чтобы его можно было модифицировать за пределами A
? Это нарушает инкапсуляцию?