powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Какова роль "Модуля" в архитектуре программы?
25 сообщений из 94, страница 3 из 4
Какова роль "Модуля" в архитектуре программы?
    #39849306
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Artem.1st> Я неправильно выразился. Задача даже не
Artem.1st> масштабная, а неограниченная размерами.
Artem.1st> Ее бесполезно дробить, это будет рутиной.

Возьмётесь за гуж неограниченных размеров - не сдюжите.
Так что таки беритесь за гужики поменьше (в т.ч. дробите
большие на меньшие). А иначе впустую потратите время на
разработку "методик контроля программного функционала".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Какова роль "Модуля" в архитектуре программы?
    #39849309
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Artem.1stмои исследования уткнулись в то, что во многих прикладных задачах Элемент должен знать о
Контейнере. Например, в реляционных структурах зависимые сущности ссылаются по ключу на
главную сущность.

Реляционные структуры хранения не имеют ничего общего с контейнерами: главная сущность не
является контейнером и не следит за зависимыми от неё сущностями.

Artem.1stА вот это реальный код из Classes.pas

Да, VCL весьма часто представляет собой наглядный пример плохой архитектуры и "как делать
не надо".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Какова роль "Модуля" в архитектуре программы?
    #39849323
Valery_B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovArtem.1stкак эти классы реализовать без дружественности?

Легко: Item не должен ничего знать о контейнере в котором он лежит. Это и называется
инкапсуляцией.

В целом верно.

Только TCollection - это изобретение Делфи 3-4 из 1995-1997 года.
Сейчас используется TList<TMyItem>
Где TMyItem не знает ни чего, членом какой коллекции он является - TList или TDictonary.

Циркулярные(рекурсивные) ссылки всё же иногда используются, но это - исключение, а не правило.
Но для делфи программистов любое исключение становиться правилом.

Задача о яблоках, которой обычно объясняют НЕ освобождения интерфейсов, где они ссылаются друг на друга:
На корзине написан список яблок, которые в ней лежат.
А на каждом яблоке написано - в какой корзине они лежат.
...
Рейтинг: 0 / 0
Какова роль "Модуля" в архитектуре программы?
    #39849327
Valery_B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Artem.1st,

В целом попробуй открыть класс или модуль на 100 строк, и на 10,000 строк.
Где тебе будет легче, так и делай.

В классах более чем из 300 строк уже сложно разбираться, что они там делают и где ошибка.
...
Рейтинг: 0 / 0
Какова роль "Модуля" в архитектуре программы?
    #39849416
Artem.1st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovItem не должен ничего знать о контейнере в котором он лежит.

Пример бытовой задачи: Ученики(элементы) учатся в Школе(контейнер).
С архитектурной точки зрения, неужели ученик Вася Иванов не должен знать, в какой Школе он учится?
И чтоб узнать, где учится Вася, надо у кого спросить: у Школы или у Васи?

Как тут устанавливаются архитектурные зависимости?
...
Рейтинг: 0 / 0
Какова роль "Модуля" в архитектуре программы?
    #39849423
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вырожденный пример.
Допустим, Вася учится в 3х школах. Общеобразовательной, спортивной и музыхальной.
Т.е. 1 хмырь в трёх бочках. Кого спрашивать?
...
Рейтинг: 0 / 0
Какова роль "Модуля" в архитектуре программы?
    #39849427
Artem.1st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кого спрашивать?
Это и есть вопрос архитектуры.
Чтоб узнать, где учится Вася, надо у кого спросить: у Школы(чтоб она запустила поиск) или у Васи(чтоб он ответил сразу)?
...
Рейтинг: 0 / 0
Какова роль "Модуля" в архитектуре программы?
    #39849428
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Artem.1stС архитектурной точки зрения, неужели ученик Вася Иванов не должен знать, в какой Школе он
учится?

Да, не должен. Ибо школы могут быть разные. Вася не имеет права влиять на школу. Вася не
должен быть доступен никаким другим путём кроме как через школу.

Нарушение двух последних правил ведёт к геморрою при отладке внезапно и непредсказуемо
вылезающих глюков, а оно никому не надо.

Artem.1stчтоб узнать, где учится Вася, надо у кого спросить: у Школы или у Васи?

Это совершенно бессмысленное с архитектурной точки зрения действо. Если ты получил ссылку
на Васю как ученика школы, ты уже знаешь где он учится. Если же Васю можно получить другим
путём, то зависимость надо выворачивать наизнанку и школа внезапно перестаёт быть контейнером.

И таки да, существует возможность архитектуры с кольцевыми связями, только они уже не
относятся к классу "контейнер", а, скорее, "наблюдатель". Там школа держит ссылку на Васю
и подписана на его события, а у Васи есть список наблюдателей, подписанных на его события.
При этом Васе всё равно какого класса эти наблюдатели, он их тупо оповещает о своей
смерти, например.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Какова роль "Модуля" в архитектуре программы?
    #39849433
Artem.1st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovЕсли ты получил ссылку на Васю как ученика школы, ты уже знаешь где он учится.

Спасибо за ответ.
...
Рейтинг: 0 / 0
Какова роль "Модуля" в архитектуре программы?
    #39849435
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovони уже не относятся к классу "контейнер", а, скорее, "наблюдатель".

В VCL это реализовано как Notification/FreeNotification, но из-за отсутствия
множественного наследования смотрится неэлегантно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Какова роль "Модуля" в архитектуре программы?
    #39849443
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

а в Qt равноценное смотрится элегантно?
...
Рейтинг: 0 / 0
Какова роль "Модуля" в архитектуре программы?
    #39849446
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Artem.1st> Как тут устанавливаются архитектурные зависимости?

В "школе" есть список "классов" (и еще куча других списков), в каждом
из оных - список "учеников". В чем собсно вопрос/проблема/сложность?

Artem.1st> Чтоб узнать, где учится Вася, надо у кого спросить:
Artem.1st> у Школы(чтоб она запустила поиск) или у Васи(чтоб он ответил сразу)?

Можно оба варианта, конечно, но второй лучше.
Если Вы про ссылки - тут вопрос лишь в том, нужна
ли Васе "ссылка" на "школу" или достаточно ссылки
на "класс" (откуда уже можно получить "школу").
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Какова роль "Модуля" в архитектуре программы?
    #39849450
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DS> Вася не должен быть доступен никаким другим путём кроме как через школу.

Ну шо за глупости. Когда Вася первый раз приходит в не-школьную
библиотеку (понимаю, что пример архаичный) - там про его школу
не знают и чит.билет выписывают (или обходятся без него), в кот.
могут указать (или не указывать) школу.

> Если же Васю можно получить другим
> путём, то зависимость надо выворачивать
> наизнанку и школа внезапно перестаёт быть контейнером.

C таким подходом нужно уточнять термины до начала разговора.
В приведенном примере (абстрактно, речь не про конкретное ПО)
школа в принципе не может быть контейнером, потому что у неё
нет "собственнических" связей с учениками.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Какова роль "Модуля" в архитектуре программы?
    #39849453
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Artem.1stПример бытовой задачи: Ученики(элементы) учатся в Школе(контейнер).
Возможно, найдётся задача, для которой это подходящий дизайн, но в общем случае это скорее пример того, как не нужно делать. Контрольный вопрос: что случается с учениками, когда школу закрывают? Они умирают или просто повисают в воздухе?
...
Рейтинг: 0 / 0
Какова роль "Модуля" в архитектуре программы?
    #39849455
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer> Они умирают или просто повисают в воздухе?

В этом примере - их стирают ластиком.


P.S. А сама "задача неограниченных размеров" была
где-то озвучена? Это очередной АСУД или что?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Какова роль "Модуля" в архитектуре программы?
    #39849486
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамC таким подходом нужно уточнять термины до начала разговора.
Так они и были уточнены задолго до того как ты влез. Аффтар явно заявил "школа это
контейнер учеников".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Какова роль "Модуля" в архитектуре программы?
    #39849618
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня частенько присутствуют мемберы класса, которые не должны быть видны юзеру, но нужные для доступа из классов того же модуля. Наворачивать какие-то искусственные паттерны или делать открытым то, что не нужно, считаю излишним
...
Рейтинг: 0 / 0
Какова роль "Модуля" в архитектуре программы?
    #39849807
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DS> Аффтар явно заявил "школа это контейнер учеников".

Термин - это не что такое школа, а что такое контейнер.
Ну или пользовать чужие готовые - GoF-ские или чьи-то
еще (у GoF паттерна "контейнер" вообще нет, например).
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Какова роль "Модуля" в архитектуре программы?
    #39849813
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Даже если принять за терминологию, что контейнер - это коллекция/список,
то в отрыве от конкретного примера/задачи обсуждать это смысла нет, ибо
школа может как быть этим контейнером для учеников, так и не быть - например,
у них будет свой "контейнер" (коллекция), ссылки на который будут из "школы".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Какова роль "Модуля" в архитектуре программы?
    #39850058
Artem.1st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerArtem.1stПример бытовой задачи: Ученики(элементы) учатся в Школе(контейнер).
Контрольный вопрос: что случается с учениками, когда школу закрывают? Они умирают или просто повисают в воздухе?
Как и в реальной жизни, связь между Школой и Учениками - это Агрегация(не Композиция). Т.е. ученики могут переходить в другую Школу.
Чтоб тема не уходила в сторону, напомню вопрос: Должен ли Элемент знать о Контейнере?
А до этого был вопрос: Можно ли обойтись без дружественных классов?
...
Рейтинг: 0 / 0
Какова роль "Модуля" в архитектуре программы?
    #39850065
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Artem.1stЧтоб тема не уходила в сторону, напомню вопрос: Должен ли Элемент знать о Контейнере?
Может , но не должен . Пример: я делаю окно вида "слева список справочников системы, справа открываются данные выбранного справочника". Данные справочника сделаны фреймами. В этом случае я могу положить фреймы на TabControl - и элементы будут знать о контейнере. А могу положить их в Dictionary<String, TDicFrame> - и тогда они не будут знать о контейнере и нафиг не нужно, чтобы знали.

Artem.1stА до этого был вопрос: Можно ли обойтись без дружественных классов?
Конечно. Хотя бы потому, что можно обойтись вообще без классов.

Дружественные классы - это просто удобный способ сажать ошибки проектирования и делать низкокачественный продукт под гордым лозунгом "Я самый умный, а пользователь не должен".
...
Рейтинг: 0 / 0
Какова роль "Модуля" в архитектуре программы?
    #39850461
Фотография roschinspb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий14.08.2019 12:49, softwarer пишет:
> Это отрицательная фича, которую было бы очень здорово выпилить нафиг.

дык, ввели же наконец-то strict private.

лучше поздно чем вообще (С)
От ведь же ж... А я то думал нахрена надо было индексацию строк переделывать, кому это мешало, кому не лень мегатонны говнокода перелопачивать. Есть оказываются счастливые люди у которых других проблем нет. Завидую просто!
...
Рейтинг: 0 / 0
Какова роль "Модуля" в архитектуре программы?
    #39850540
Фотография Victor Cookin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerКонтрольный вопрос: что случается с учениками, когда школу закрывают? Они умирают или просто повисают в воздухе?
Школа вызывает у учеников метод "Школа ваша закрылась". По этому методу школы у ученика обнуляется. Я не представляю как можно решить такую задачу если не соблюдены оба два условия - школа знает про учеников, ученики знают про школу.
...
Рейтинг: 0 / 0
Какова роль "Модуля" в архитектуре программы?
    #39850554
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor CookinsoftwarerКонтрольный вопрос: что случается с учениками, когда школу закрывают? Они умирают или просто повисают в воздухе?
Школа вызывает у учеников метод "Школа ваша закрылась". По этому методу школы у ученика обнуляется. Я не представляю как можно решить такую задачу если не соблюдены оба два условия - школа знает про учеников, ученики знают про школу.
Школы не должна вызывать у учеников ничего. Школа генерирует событие, что она закрывается. На события школы подписаны ученики, сотрудники и т.д. Получая событие что она закрывается, ученики/сотрудники что-то делают...

Никаких циклических ссылок не нужно..
...
Рейтинг: 0 / 0
Какова роль "Модуля" в архитектуре программы?
    #39850556
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor CookinШкола вызывает у учеников метод "Школа ваша закрылась". По этому методу школы у ученика обнуляется. Я не представляю как можно решить такую задачу если не соблюдены оба два условия - школа знает про учеников, ученики знают про школу.
Плохо, что не представляете. Ну просто для примера: РОНО дёргает оповещение "школа 123 закрылась". Подписчики реагируют на оповещение каждый как считают нужным: ученики дёргают оповещение "ищу новую школу", учителя увольняются, газета пишет заметку...
...
Рейтинг: 0 / 0
25 сообщений из 94, страница 3 из 4
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Какова роль "Модуля" в архитектуре программы?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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