Имеется класс, имеющий свой набор св-в. Им владеет другой класс, а этим ещё один. Каким образом с точки зрения ООП лучше всего изменить св-ва самого вложенного объекта. Пример.
class Signal
{
public:
void SetColor(Color &);
Color GetColor() const;
void SetOpacity(double );
double GetOpacity() const;
.. и так далее
};
class View
{
public:
void AddSignal(int id);
private:
SignalCollection m_signals;
};
class Window
{
private:
View m_view;
};
Как лучше всего, имея объект класса Window и id сигнала, поменять его свойства, наиболее правильным способом.
На данный момент сделано так:
class View
{
public:
void AddSignal(int id);
void SetSignalColor(int signalId, Color &color)
{
m_signals[id]->SetColor(color);
}
};
class Window
{
public:
void SetSignalColor(int signalId, Color &color)
{
m_view.SetSignalColor(signalId, color);
}
private:
View m_view;
};
С текущим подходом, при добавлении нового св-ва в Signal, необходимо менять интерфейс View и Window. Что уже кажется странным.
Как бы вы это сделали?