powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Нужен совет по проектированию
25 сообщений из 79, страница 1 из 4
Нужен совет по проектированию
    #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
Нужен совет по проектированию
    #38561247
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Паттерны в современном их понимании - бесполезная вещь.
Олдскульные структуры данных - рулят.
На картинке изображено типичное дерево с которым нет проблем ни в ООП, ни в процедурном программировании.
Тебе нужен удобный доступ исключительно при спуске сверху вниз или начиная из любого узла?
...
Рейтинг: 0 / 0
Нужен совет по проектированию
    #38561264
miron_baton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,
Из любого узла вниз. У меня опыта мало, в итоге только в конце понимаю как это нужно было делать.
...
Рейтинг: 0 / 0
Нужен совет по проектированию
    #38561277
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

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

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

А что есть?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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