Форум Сообщества Аналитиков

Общий раздел => Для всех => Тема начата: MARKUS27 от 27 Июня 2018, 14:45:28

Название: Поиск удобной нотации для отображения зависимостей объектов
Отправлено: MARKUS27 от 27 Июня 2018, 14:45:28
Добрый день, я нахожусь в поиске удобной нотации для отображения следующего примера:
Пускай есть 3 группы объектов: Материал, метод обработки, инструмент. В группе материал находятся: гвозди, шурупы, чопики. В группе метод обработки находятся: забивать, крутить. В группе инструмент: молоток, отвертка.
Необходимо представить зависимости между этими группами наиболее удобно: Например если в качестве инструмента выбран молоток, то множество материалов сужается до (гвозди, чопики), а метод обработки до (забивать)
Есть варианты изображения данной зависимости с помощью паттерна фабрика, но хотелось бы что то более удобное(понятное даже человеку не знакомому с UML)/

Если коротко, нужна диаграмма отображающая сценарий, при котором выбор одного элемента множества, отсекает объекты из другого множества, не имеющих связи с выбранным объектом.

Очень хотелось бы услышать варианты представления таких задач.
Спасибо
Название: Re: Поиск удобной нотации для отображения зависимостей объектов
Отправлено: Vadim от 28 Июня 2018, 10:19:56
Для начала хорошо бы определить характер зависимости: нет ли среди 12 возможных (под)зависимостей функциональные (12 зависимостей получаются для 3 групп, если групп больше, то больше и зависимостей http://www.academia.edu/13759154/The_meaning_of_multiplicity_of_n-ary_associations_in_UML (ftp://www.academia.edu/13759154/The_meaning_of_multiplicity_of_n-ary_associations_in_UML) таблица 4). По примеру это возможно, например: молоток позволяет только забивать, а отвертка - только закручивать.
Название: Re: Поиск удобной нотации для отображения зависимостей объектов
Отправлено: MARKUS27 от 28 Июня 2018, 12:05:48
Возможны и такие случаи, как - молоток-гвоздодер позволяет как забивать гвозди и чопики так и вытаскивать гвозди и "еще что нибудь"(но не чопики)
Название: Re: Поиск удобной нотации для отображения зависимостей объектов
Отправлено: Vadim от 28 Июня 2018, 12:43:43
Ещё вопрос по предметной области: может быть есть отдельная связь между материалами и методами обработки (гвозди могут забиваться и вытаскиваться, чопики - забиваться и удаляться [не равно вытаскиваться!]). И уже экземпляры этой связи связываются с инструментами (несколькими, только одним или вообще с нулем!), например гвозди доставаться могут только молотком-гвоздодером, а чопики могут удаляться и молотком-гвоздодером, и отверткой, а шурупы должны удаляться, но нет ни одного инструмента для этого?
Название: Re: Поиск удобной нотации для отображения зависимостей объектов
Отправлено: MARKUS27 от 28 Июня 2018, 13:06:35
Да, связь может быть между всеми группами объектов. Допустим если мы выбрали шурупы, то мы знаем что их можно только вкрутить, а удалить уже не получиться , при этом инструмент только отвертка, если мы выбрали гвозди, то мы знаем, что их можно как забить так и вытащить, при этом забить можно как молотком, так и молотком-гвоздодером, а вытащить только молотком-гвоздодером.
Название: Re: Поиск удобной нотации для отображения зависимостей объектов
Отправлено: Vadim от 28 Июня 2018, 14:49:06
шурупы должны удаляться, но нет ни одного инструмента для этого?
Такая ситуация допустима?
Название: Re: Поиск удобной нотации для отображения зависимостей объектов
Отправлено: MARKUS27 от 28 Июня 2018, 16:30:29
Такая ситуация допустима?
Да
Название: Re: Поиск удобной нотации для отображения зависимостей объектов
Отправлено: Vadim от 28 Июня 2018, 16:54:43
Еще 2 ситуации возможны?:
Название: Re: Поиск удобной нотации для отображения зависимостей объектов
Отправлено: MARKUS27 от 28 Июня 2018, 17:42:30
Еще 2 ситуации возможны?:
  • шурупы обрабатываются отверткой, но не определен метод обработки
  • кручение делается отверткой, но не определен материал
Ответ на обе ситуации такой: для пары всегда определено множество с которым оно взаимодействует(при этом это множество может быть пустым, значит в данный момент нету доступного материала например) , а для одного объекта, например шурупа, должно соответствовать 2 множества (материалы и метод обработки) при выборе одного объекта из другого множества, сужаетси и 3 множество
Название: Re: Поиск удобной нотации для отображения зависимостей объектов
Отправлено: Galogen от 28 Июня 2018, 23:16:52
А чем вам например таблица не подходит?
Название: Re: Поиск удобной нотации для отображения зависимостей объектов
Отправлено: Vadim от 29 Июня 2018, 08:58:08
Хочу определить детали структуры информации. Для этого использую пример, в котором в каждом пункте делается попытка добавления одной минимальной порции данных. Минимальная порция данных - связка материала, метода обработки и инструмента. Любой из элементов связки может быть не заполнен (NULL).
Наращиваем содержимое:Правильно?
Название: Re: Поиск удобной нотации для отображения зависимостей объектов
Отправлено: MARKUS27 от 29 Июня 2018, 14:54:36
Хочу определить детали структуры информации. Для этого использую пример, в котором в каждом пункте делается попытка добавления одной минимальной порции данных. Минимальная порция данных - связка материала, метода обработки и инструмента. Любой из элементов связки может быть не заполнен (NULL).
Наращиваем содержимое:
  • гвоздь, забивание, молоток - принимается
  • гвоздь, вытаскивание, молоток-гвоздодер - принимается
  • гвоздь, забивание, молоток-гвоздодер - принимается
  • гвоздь, забивание, молоток - не принимается (дублирование)
  • гвоздь, забивание, NULL - принимается
  • гвоздь,  NULL, молоток - принимается
  • NULL, забивание, молоток - принимается
  • гвоздь, забивание, NULL - не принимается (дублирование)
  • гвоздь, NULL, NULL - не принимается (мало заполненных элементов)
  • NULL, забивание, NULL - не принимается (мало заполненных элементов)
  • NULL, NULL, молоток - не принимается (мало заполненных элементов
Правильно?
Да, все верно
Название: Re: Поиск удобной нотации для отображения зависимостей объектов
Отправлено: MARKUS27 от 29 Июня 2018, 14:57:29
А чем вам например таблица не подходит?
При увеличении кол-ва групп таблица будет крайне громосткой, хотелось бы использовать вариант более компактный и в виде диаграммы
Название: Re: Поиск удобной нотации для отображения зависимостей объектов
Отправлено: Vadim от 29 Июня 2018, 16:51:51
Предметная область понятна. Теперь дальше.
Необходимо представить зависимости между этими группами наиболее удобно: Например если в качестве инструмента выбран молоток, то множество материалов сужается до (гвозди, чопики), а метод обработки до (забивать)
Есть варианты изображения данной зависимости с помощью паттерна фабрика, но хотелось бы что то более удобное(понятное даже человеку не знакомому с UML)/

Если коротко, нужна диаграмма отображающая сценарий, при котором выбор одного элемента множества, отсекает объекты из другого множества, не имеющих связи с выбранным объектом.
Непонятно, может "варианты изображения данной зависимости с помощью паттерна фабрика" покажете, будет яснее.

Ещё вопрос - пусть содержимое:После выбора гвоздя что оказывается:?
Название: Re: Поиск удобной нотации для отображения зависимостей объектов
Отправлено: MARKUS27 от 29 Июня 2018, 16:57:44
Предметная область понятна. Теперь дальше.Непонятно, может "варианты изображения данной зависимости с помощью паттерна фабрика" покажете, будет яснее.

Ещё вопрос - пусть содержимое:
  • гвоздь, забивание, молоток
  • гвоздь, вытаскивание, молоток-гвоздодер
  • гвоздь, забивание, молоток-гвоздодер
  • шуруп, вкручивание, отвертка
После выбора гвоздя что оказывается:
  • есть 2 метода обработки: забивание и вытаскивание; есть 2 инструмента: молоток и молоток-гвоздодер
  • есть 3 пары: забивание, молоток; вытаскивание, молоток-гвоздодер; забивание, молоток-гвоздодер
?
Вариант с фабрикой смогу скинуть позже,
Отвечая на второй вопрос:
Остается 2 метода обработки и 2 инструмента
Название: Re: Поиск удобной нотации для отображения зависимостей объектов
Отправлено: [прилетело НЛО и...] от 13 Июня 2022, 23:49:08
Некрокопания псто.
Группы изображаем как классы: Material, Method, Tool.
Соединяем их классом тернарной ассоциации Matches
Material-0..*---┓
Method-0..*---⃟-- -- --Matches
Tool-0..*-------┛
Чтобы были тройки вместо NULL заводим объекты-плейсходлеры undefined-material:Material, undefined-tool:Tool, undefined-method:Method.
Конкретные тройки связанных экземпляров рисуем на диаграмме объектов (есть лакуна в стандарте UML по части того, как должно рисовать тройки, соединённые экземпляром тернарной ассоциации). В книгах авторы просто повторяют то, что на диаграмме классов, полагая, что если экземпляр бинарной ассоциации выглядит также, как она сама, то это справедливо и для тернарной.

Нормальной онлайн-рисовалки, как выяснилось, нет.
(https://mindmup-export.s3.us-east-1.amazonaws.com/map.jpg/out/8748a590eb5711ec8fedbb4d3ee7bfe1.map.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=ASIASNCK5ADRRPFOE6PM%2F20220613%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20220613T202930Z&X-Amz-Expires=93600&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEHUaCXVzLWVhc3QtMSJGMEQCIGbrIg0oc40tqPVP5X5SidkaQLYf5UjjtMflZ5dSxfvNAiB1FPuhjZ5ZfCyYVrOuulRXWOar950xJHS%2FCFl0Hbff8SqVAgh9EAAaDDE2NTUxMzMzMDkxNSIMc6K28w3Bc62LEQ8pKvIBK9QpTuKWPEp%2F6CyqrqKaYjqnY9Qni9zT2xb%2BgzVGO0UFkWx2O%2Bq%2BoDiX9RHOaYPLkbRIakHApCq4%2FdIXbZFdc2F4zXPMSzwWMvkgNuk9HUjU46xT74MpRAr00jhRfUXH78ITHVtqIqabPi1lyqKoVpifICLhIqBFT7dFK9QdNWg9R6kOSuBrVHOOTGkdv1vl4F9TxGdZ9RNFlJTyyAa%2Fqv78KRNUvYk7xUPbKKIOtxVOFAEhOkrOE%2B3jRBLxLG1VA7jRofIQF1NaP6gpixbjjo5kC5OfZ4V0v0DuE%2B%2FSjkwfjvjigo9udFKNot3x76k3wVcwgbSelQY6mwFzHIKlCPxTnJWaP6GRa%2BtvHd1mnbp4%2FRSVsWoNnvgCQPyQQxbRSqx8Ub4B8KpMASy76ZEiJ1JFR7OmVIMQmYnAZVdyDlZa3XM625j%2FjdOklfNXOBYTEY48MmBosX8gs0U2TNQFWmxtlavK%2By12cOkMU7t%2BkuCsxgQLEvK%2BHWLThcPeUSKgTHdczfz2%2FlQL5v7hLOhXWnI2ad4dTg%3D%3D&X-Amz-Signature=b84075a69a4a0fb57a4e5108c96d75f10901331e3c063b96b9bc831d208eeb9d&X-Amz-SignedHeaders=host&x-id=GetObject)
Название: Re: Поиск удобной нотации для отображения зависимостей объектов
Отправлено: Vadim от 14 Июня 2022, 16:21:51
На диаграмме классов для тернарной ассоциации Matches надо как-то обозначить, что объектов-плейсходлеров в экземпляре тернарной ассоциации должно быть не более одного.
Название: Re: Поиск удобной нотации для отображения зависимостей объектов
Отправлено: [прилетело НЛО и...] от 15 Июня 2022, 00:43:23
OCLь нам в помощь.)
Название: Re: Поиск удобной нотации для отображения зависимостей объектов
Отправлено: Vadim от 15 Июня 2022, 10:10:41
OCL вроде не поддерживает навигацию по тернарным ассоциациям.
Название: Re: Поиск удобной нотации для отображения зависимостей объектов
Отправлено: [прилетело НЛО и...] от 15 Июня 2022, 15:45:15
OCL вроде не поддерживает навигацию по тернарным ассоциациям.
Поддерживает, но кривую. Другими словами, не поддерживает _должным_ образом_, на мой взгляд.
ОК. Дефект исправляем. Превращаем тернарную ассоциацию в класс тернарной ассоциации. Для него есть allInstances() и доступ ко всем концам.
Нашёлся ещё такой файлик, проясняющий по N-арным ассоциациям и OCL.
https://www.eclipse.org/forums/index.php?t=getfile&id=25690
(у меня скачался по VPN)
Там же дан другой рефакторинг решения -- материализация связи.