Я создаю объекты для моделирования с использованием агрегации и композиции.Управление отношениями между агрегированными/скомпонованными членами класса
В следующем примере C++:
class CCar
{
CCar(CDriver* pDriver)
{ m_pDriver = pDriver; }
CDriver* m_pDriver;
CEngine m_Engine;
CDriverControls m_Controls;
};
в приведенном выше примере, машина состоит из двигателя и набора приводных элементов управления (по составу). Автомобиль также должен иметь водителя (путем агрегации).
Но это только объясняет иерархические отношения - водитель принадлежит к автомобилю, а двигатель и элементы управления также принадлежат автомобилю. Но все эти члены также относятся друг к другу - драйвер должен выполнить действие над элементами управления, элементы управления должны выполнять действия на движке. Эти отношения также работают по нескольким направлениям: двигатель может останавливаться и заставлять элементы управления захватывать, или элементы управления могут сильно вращаться и повредить драйвер? А что, если водителю не нравится звук двигателя и выходит из машины? Как эти отношения работают?
Я собираю множество разных объектов из множества разных объектов, которые часто взаимодействуют с другими объектами, и я заинтересован в том, как управлять этими отношениями в соответствии с разработанным способом.
спасибо!
редактировать:
, как ответы говорят, один из способов справиться с этим через указывая автомобиль с водителем, и дает водителю указатель на автомобиле, и т.д. Это имеет смысл, и решает этот конкретный пример , Однако в конструктивном смысле это повышает ответственность водителя, когда этому объекту поручается отслеживать, к какому автомобилю он принадлежит, но, конечно же, обязанность контейнера отслеживать, какие объекты принадлежат друг другу? Аналогично, задача CCar с управлением этими отношениями превратит CCAR в blob. Есть ли разработанное решение для решения этих отношений?
благодарит за ответ. приведенный пример - это действительно пример (хотя, вероятно, он мог бы использовать и лучший!), Но я пытался проиллюстрировать проблему, с которой я столкнулся. Я на самом деле не пишу программу о машинах и драйверах. – 2009-05-31 17:19:02