У меня очень слабые навыки проектирования программного обеспечения и мне нужно проконсультироваться немного по поводу создания специализированного векторного графического редактора. Я набросал UML схему, правда она неполная. «Каркас» построен на паттерне компановщик. В качестве «Leaf» я привёл пример cRectangle. А в качестве «Composite» - cCompositePrimitive. Класс cManipulator выполняет операции над cCompositePrimitiveю Методов в классах cCompositePrimitive и cManipulator намного больше, чем я написал. И это на мой вгляд очень плохо. Смысл ведь в том, что как бы главный объект здесь - объект класса cCompositePrimitive и в него добавляются все примитивы в том числе и объекты класса cCompositePrimitive. И так получается, что часть методов которые необходимы только для «корневого» cCompositePrimitive - грубо говоря методы для операций на объектами холста, есть и в самих объектах cCompositePrimitive расположенных на холсте. Каким образом лучше как-то разграничить методы, которые необходимы только корневой и не нужны для обычных составных объектов. Эти методы в cCompositePrimitive оканчиваются на «_». И вот как лучше в cManipulator передавать корневой cCompositePrimitive как член класса cManipulator или просто как в каждый метод класса cManipulator добавить входный параметр - указатель на cCompositePrimitive?