Гость
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Нужен совет по проектированию / 25 сообщений из 79, страница 1 из 4
14.02.2014, 15:43
    #38561197
miron_baton
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет по проектированию
Добрый день,
Введение: моя работа не связана с программированием, но как хобби пишу приложение для автоматизации своей работы. За последние два года код сильно разросся, оброс связями, дублированием кода, что с трудом могу в нем разобраться, новые функции внедряются все труднее. И вот в третий раз сел все переписывать, но уже по науке – с проектированием, паттернами и пр. Прочитал две книги по паттернам - GoF и «Паттерны проектирования» Фримена, все интересно, а как применить эти знания к моей задаче не соображу. Что-нибудь я конечно придумаю, но прошу опытных помочь мне советом т.к. знакомых опытных программистов нет.
Задача: есть модель корабля [М], которая состоит за нескольких помещений А1..An, каждое помещение может содержать несколько помещений (B1..Bn, C1..Cn, D1..Dn, E1..En), более низкого класса (A> B>C>D>E) или вообще ничего не содержать. Каждое помещений это трехмерная модель+свойства. Свойства есть как уникальные для каждого класса, так и общие для всех помещений. Все это используется для вывода разных расчетов, таблиц, 3д.
Как лучше организовать такую структуру данных, чтобы получать список всех помещений заданного класса (A, B,C,D,E) был удобный доступ к каждому помещению и его содержимому?
...
Рейтинг: 0 / 0
14.02.2014, 16:19
    #38561247
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет по проектированию
Паттерны в современном их понимании - бесполезная вещь.
Олдскульные структуры данных - рулят.
На картинке изображено типичное дерево с которым нет проблем ни в ООП, ни в процедурном программировании.
Тебе нужен удобный доступ исключительно при спуске сверху вниз или начиная из любого узла?
...
Рейтинг: 0 / 0
14.02.2014, 16:38
    #38561264
miron_baton
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет по проектированию
Dimitry Sibiryakov,
Из любого узла вниз. У меня опыта мало, в итоге только в конце понимаю как это нужно было делать.
...
Рейтинг: 0 / 0
14.02.2014, 16:46
    #38561277
ViPRos
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет по проектированию
Dimitry Sibiryakov,

где ты там увидел дерево?
...
Рейтинг: 0 / 0
14.02.2014, 19:04
    #38561458
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет по проектированию
ViPRosDimitry Sibiryakov,
где ты там увидел дерево?
А ты переверни вверх ногами))
...
Рейтинг: 0 / 0
14.02.2014, 19:14
    #38561468
ViPRos
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет по проектированию
Petro123,

да хоть раком, нет там дерева
...
Рейтинг: 0 / 0
14.02.2014, 19:48
    #38561494
guest_20040621
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет по проектированию
> нет там дерева

А что есть?

Классическое дерево. Классическая реализация: узлы отдельно, структура отдельно. Не наводите тень на плетень, Сахават.

Геморрой в этой задаче связан не со структурой, а с описанием ограничений и свойств.
...
Рейтинг: 0 / 0
14.02.2014, 22:34
    #38561599
ViPRos
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет по проектированию
guest_20040621,

а где ты видел, что одно и то ж яблоко росло на разных ветках дерева?
...
Рейтинг: 0 / 0
14.02.2014, 22:48
    #38561607
guest_20040621
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет по проектированию
> одно и то ж яблоко росло на разных ветках дерева

Не одно и то же яблоко, а яблоки одного типа на разных ветках. Тривиально:

node (id, name, ...);
graph (node_id, node_pid, ...);

Проблема в том, что характеристики node могут быть контекстно-зависимыми и могут быть заданы возможным диапазоном или сочетаниями.
...
Рейтинг: 0 / 0
15.02.2014, 03:20
    #38561691
ViPRos
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет по проектированию
guest_20040621,

ладно , кто че хочет то и видит все как всегда
...
Рейтинг: 0 / 0
15.02.2014, 03:50
    #38561692
guest_20040621
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет по проектированию
Сахават, напишите graph в виде (id, pid, node_id, node_pid, depth, ...), - всё сразу станет нагляднее.
...
Рейтинг: 0 / 0
15.02.2014, 07:06
    #38561701
фывайцук
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет по проектированию
я бы для узла дерева взял такой объект или структурку: (предок, следующий_близнец, первый_потомок, (остальные свойства)) - неважно, указатели это, индексы в массиве или ID-ы (тогда еще плюс ID самого узла)
т.е. все узлы одного уровня ("близнецы") - как бы в односвязном списке, родитель ссылается только на первого
и сделал бы рекурсивную процедурку обхода дерева, строящую после его обновления все нужные "списки всех помещений заданного класса"
...
Рейтинг: 0 / 0
15.02.2014, 08:35
    #38561717
guest_20040621
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет по проектированию
> (предок, следующий_близнец, первый_потомок, (остальные свойства))

Celko начитались?

(id, pid, node_id, depth, model_id, ...) - это наиболее простое и очевидное решение.
...
Рейтинг: 0 / 0
15.02.2014, 10:47
    #38561747
фывайцук
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет по проектированию
guest_20040621, причем тут целко, когда речь вообще о структуре данных - в памяти, очевидно (мне так хрустальный шар показывает, а датабазникам с их молотками везде гвозди мерещатся)
сложить эту структуру в БД и считать из неё - уже вторичная задача
и как вы от родителя детям перейдете, если НЕ БУДЕТ возможности "селекта"?
...
Рейтинг: 0 / 0
15.02.2014, 12:37
    #38561770
miron_baton
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет по проектированию
Действительно, речь о структуре данных в памяти, а не о бд. Подгружаю файлы (автокад, рино) с моделью, беру из нее, то что мне нужно, в итоге получаю структуру как на картинке в первом посте, с ней дальше и работаю. Вот интересно мнение о об организации такой структуры в памяти, т.к то что сделано у меня сейчас уже трещит по швам и уходят часы чтобы разобраться в том что сам писал год назад.
...
Рейтинг: 0 / 0
15.02.2014, 14:13
    #38561811
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет по проектированию
miron_baton,
В памяти можно сделать Любую структуру. Начни тогда с UML
...
Рейтинг: 0 / 0
15.02.2014, 14:16
    #38561812
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет по проектированию
miron_baton,
Переведи последний пост.
...
Рейтинг: 0 / 0
15.02.2014, 18:33
    #38561916
bidon_kordon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет по проектированию
miron_baton, в 15571436 что-то непонятно?
...
Рейтинг: 0 / 0
15.02.2014, 22:10
    #38561975
kmaw
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет по проектированию
а в чом проблема-то? как я понял, ТС уже сделал программу, и она работает.
...
Рейтинг: 0 / 0
15.02.2014, 22:28
    #38561985
iscrafm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет по проектированию
kmawа в чом проблема-то? как я понял, ТС уже сделал программу, и она работает.

miron_batonЗа последние два года код сильно разросся, оброс связями, дублированием кода, что с трудом могу в нем разобраться, новые функции внедряются все труднее.
...
Рейтинг: 0 / 0
15.02.2014, 22:29
    #38561987
kmaw
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет по проектированию
miron_batonуходят часы чтобы разобраться в том что сам писал год назад.

не месяцы, же.
...
Рейтинг: 0 / 0
15.02.2014, 22:39
    #38561998
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет по проектированию
kmaw,
)))
...
Рейтинг: 0 / 0
16.02.2014, 16:33
    #38562305
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет по проектированию
miron_batonто что сделано у меня сейчас уже трещит по швам и уходят часы чтобы разобраться в том что сам писал год назад.
Именно для этого человечество уже давно изобрело комментарии в коде.

Не знаю что там наворочено у тебя, но эта структура легко укладывается в класс, хранящий в себе ссылки на дочерние узлы. Для отображения на экране такой структуры обычно используется TreeView. Потому что, как я уже сказал, это обычное дерево.
...
Рейтинг: 0 / 0
16.02.2014, 17:21
    #38562342
guest_20040621
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет по проектированию
> причем тут целко

Видимо, при том, что начальных источников идиотских решений не так много.

> сложить эту структуру в БД и считать из неё - уже вторичная задача

Дружище, нельзя быть настолько тупым. Стыдно. Противоестественно.

> если НЕ БУДЕТ возможности "селекта"?

Если бы вы взяли на себя труд читать, а не только писать, то легко обратили бы внимание на особенность предложенного решения: иерархия - отдельно от узлов. Хранить подчинённые узлы - ни одной проблемы.
...
Рейтинг: 0 / 0
16.02.2014, 18:36
    #38562388
ViPRos
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет по проектированию
guest_20040621,

ну вот
котлеты отдельно, а всякие мухи, собаки... отдельно
несущее дерево, елка рождественская
...
Рейтинг: 0 / 0
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Нужен совет по проектированию / 25 сообщений из 79, страница 1 из 4
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]