Russian Qt Forum

Программирование => С/C++ => Тема начата: deaks от Февраль 06, 2011, 00:41



Название: Объекты и объект
Отправлено: deaks от Февраль 06, 2011, 00:41
Добрый вечер)

ребят, посоветуйте, как лучше реализовать такую ситуацию.

В системе моделирования присутствуют объекты. На каждом шаге модельного времени может создаваться 0..N объектов и при этом он должен взаимодействовать с остальными.

То есть получается есть классы Objects и Object. Класс Objects включается в себя массив из Object.
А в классе Object должен храниться указатель на Objects? Как-то странно получается. Или меня клинит :)


Название: Re: Объекты и объект
Отправлено: Akon от Февраль 06, 2011, 10:12
Двунаправленная связь, ничего странного.

Objects хранит Objectы в контейнере, например, QList, и предоставляет const ссылку на контейнер в интерфейсе, чтобы непосредственно в контейнер ничего не добавлялось и не удалялось. Добавление и удаление Object-ов производится через интерфейс Objects для реализации требуемых побочных эффектов.

Objects вместо предоставления контейнера (предоставление контейнера - это выриант с наименьшими затратами на написание, повсеместно используется в самой Qt) может предоставить итераторы, в результате вызывающий клиентский код будет чуть лаконичнее.


Название: Re: Объекты и объект
Отправлено: deaks от Февраль 06, 2011, 11:46
Вот именно так у меня сейчас и реализовано)

волнует другое - удовлетворяет ли это парадигмам ООП?


Название: Re: Объекты и объект
Отправлено: Fat-Zer от Февраль 06, 2011, 12:33
Вот именно так у меня сейчас и реализовано)

волнует другое - удовлетворяет ли это парадигмам ООП?
Конечно удовлетворяет, если правильно реализовано... Если что смотри паттерн компоновщик. (если кратко, то objects тоже наследник object'а)


Название: Re: Объекты и объект
Отправлено: deaks от Февраль 06, 2011, 14:36
ну уж не знаю, я придерживаюсь только самого главного "паттерна" - mvc )))

но компоновщик интересен! спасибо


Название: Re: Объекты и объект
Отправлено: _govorilka от Февраль 06, 2011, 15:32
Akon
+1

Реализация подобных штук:
Код:
class Object
{
    Object* m_parent;
    QList<Object*> m_children;
}

Подобное решение, мне кажется, очевидно. Тут можно и про патерны ничего не знать...  В Qt много мест, где такое используется, например сам QObject.


Название: Re: Объекты и объект
Отправлено: deaks от Февраль 06, 2011, 16:31
да я же не говорю, что не знал))) так и реализовал)

просто терзали сомнения


Название: Re: Объекты и объект
Отправлено: Igors от Февраль 06, 2011, 17:08
а вообще-то это один из вариантов "дерева"  :)