Пусть нам надо смоделировать тезис, о том, что на каждом автомобиле стоит по 4 колеса. Не группа из четырех колес, а именно, — 4 колеса.
В терминах ER модели принято говорить, что есть автомобиль, есть колесо и есть связь между автомобилем и колесом. Связь эта называется «колесо-автомобиль» и имеет отношение один ко четырем. Связь, читаемая от колес, называется: «стоит на», связь, читаемая от автомобиля, называется: «имеет».
В терминах ООП говорят так: есть класс ООП автомобилей и есть класс ООП колес. Между этими классами ООП есть связь один к четырем. Связь называется: «автомобиль-колесо». Связь, читаемая от колес, называется: «стоит на», связь, читаемая от автомобиля, называется: «имеет».
Посмотрим внимательно на предметную область и напишем, как будет выглядеть представление модели предметной области в терминах логической парадигмы.
В логической парадигме есть термин класс ТМ, который совпадает с определением класса в математике. Это определение очень похоже на определение множества, а множество, в свою очередь – есть группа объектов. Итак, у нас есть множество автомобилей и множество колес. С каждым автомобилем связано 4 колеса семантическими связями «автомобиль-колесо». Таким образом, на каждый автомобиль приходится 4 колеса и 4 семантических связи. Семантическая связь в логической парадигме записывается в виде кортежа: (Автомобиль №123; колесо №234). Все кортежи принадлежат классу, или множеству кортежей. Объединяет это множество семантика: «На автомобиле стоит колесо». Между конкретным колесом и автомобилем, на котором установлено это колесо, установлена только одна семантическая связь. Эта связь имеет отношение один к одному. Как же тогда сказать, что на одном автомобиле установлено 4 колеса? В логической парадигме это произносится так: для каждого автомобиля найдется 4 связи с колесами в классе семантических связей под названием «Автомобиль имеет колесо», для каждого колеса существует только одна такая связь в этом классе.
Таким образом, для моделирования одного автомобиля нам понадобилось 4 связи между автомобилем с колесом, а не одна, как в случае с ER моделью, и не одна, как в случае с диаграммой классов. Это и логично: у одного автомобиля 4 колеса. На диаграмме стрелочками обозначена связь «классификация».
А есть ли семантическая связь между классом ТМ автомобилей и классом ТМ колес? В такой постановке задачи – нет. Есть класс связей между автомобилями и колесами, но нет связи между классом ТМ автомобилей и классом ТМ колес.
Рассмотрим теперь другую задачу. Пусть надо смоделировать тот факт, что автомобили имеют группу колес. Не колеса, а именно группу. В математике за определение группы отвечает термин множество. На математическом языке мы должны сказать: автомобиль имеет множество (группу) колес. Это значит, что мы постулировали возможность связать семантической связью объект и класс объектов. Как смоделировать этот тезис в логической парадигме?
Для этого из класса ТМ колес мы выделяем такие классы колес, каждый из которых относится к одной машине. Так мы связываем машину и группу колес, относящихся к данной машине. В модели это будет выглядеть так:
Стрелки по-прежнему обозначают связь классификация, но кружочек обозначает связь специализация, или «множество- подмножество».
На этой диаграмме мы видим, что объект автомобиль связан с классом колес семантической связью «имеет».
Такая модель уже не представима в виде диаграммы классов или в виде ER модели. Кроме того, ни один современный онтологический стандарт не имеет возможности моделировать такие отношения. Причина проста: трудность в реализации таких отношения на ООП языках программирования.
Заметим, что диаграммы классов не моделируют классы объектов: прямоугольники на диаграммах классов моделируют типы объектов.
А вот с ER диаграммами интереснее. То, что обозначается прямоугольником на ER диаграмме, -есть класс ТМ объектов. Поэтому неверно называть прямоугольник в ER модели существительным в единственном числе. Правильно называть существительным во множественном числе. Тогда модель будет такая:
И эта модель приближает нас к модели классов ТМ. Однако, связи между классами ТМ на самом деле не существует, а есть связи между объектами класса ТМ, и читаются они так: для каждого автомобиля найдется 4 связи с колесами в классе семантических связей под названием «Автомобиль имеет колесо», для каждого колеса существует только одна такая связь в этом классе.
Вывод: концептуальное моделирование в виде ER много ближе к логической парадигме, чем моделирование в виде диаграммы классов. Но ни тот ни другой метод моделирования не позволяет моделировать семантические отношения между объектами и классами объектов. Это является существенным ограничением современных моделлеров, которое необходимо устранять.
Комментарии (142)
boldachev
28.04.2015 12:26Все же, мне кажется, вы нарушаете принцип логической парадигмы. Для того, чтобы зафиксировать количество колес на индивиде-автомобиль надо отнести его к классу «автомобили с 4 связями авто-колесо» или просто «с 4 колесами». Связь между индивидом (автомобилем) и классом может быть только «классификация» (отнесение индивида к тому или иному классу). Указанная вами связь «индивид имеет класс» в логической парадигме принципиально невозможна. Если вы хотите ее ввести, то говорите о иной парадигме.
maxstroy Автор
28.04.2015 12:43В математике мы часто встречаем связи между объектами и классами. Например, прямая и класс точек прямой, или множество монет и покупка. Мое мнение, что отсутствие в текстах подобной связи говорит об инерции мышления, а не о порочности такого способа мышления. И, если логическая парадигма строится на теории множеств, то подобная конструкция допустима. Иначе надо признать, что логическая парадигма строится не на теории множеств.
boldachev
28.04.2015 12:54В математике мы часто встречаем связи между объектами и классами.
Но это не связи типа «прямая имеет класс точек», «покупка имеет множество монет».
Связь логической парадигмы с теорией множеств заключается в том, что мы описание каждого объекта ведем через причисление его к тому или иному множеству/классу. Вы сами это декларировали в предыдущих статьях. Отношение «объект имеет класс» выходит за рамки логической парадигмы.
Мое мнение, что отсутствие в текстах подобной связи говорит об инерции мышления, а не о порочности такого способа мышления.
Да вы имеете полное право как угодно расширять рамки мышления и вводить новые парадигмы. Но это надо оговаривать отдельно, начиная с того, зачем это нужно и какие задачи вы собираетесь решать.maxstroy Автор
28.04.2015 12:58Но это не связи типа «прямая имеет класс точек», «покупка имеет множество монет».
Семантика связи — тема отдельная. Главное, что такая связь есть, и ее надо уметь моделироватьboldachev
28.04.2015 13:11Главное, что такая связь есть, и ее надо уметь моделировать
С этого — с постановки проблемы — и надо начинать. Но вопрос-то заключается именно в том, что такой связи нет в логической парадигме. Это надо признать и строить другую, в которой имеются другие связи между объектом и классом/множеством кроме «классификация».dtestyk
28.04.2015 17:09Поддерживаю, особенно если связей несколько, вообще не понятно, о каком множестве речь.
Думаю, можно было бы рассматривать подмножество множества всех возможных кортежей вида автомобиль-колесо1-колесо2-колесо3-колесо4.maxstroy Автор
28.04.2015 17:29Каждый кортеж что-то значит. Например, пусть есть Маша и Миша. Кортеж (Маша; Миша) может принадлежать классу кортежей с семантикой: «женаты». Кортеж (Миша;(Миша; Маша)) может принадлежать классу кортежей с семантикой: «отношение супруга к браку». Поэтому перечень объектов в кортеже, их порядок важны. Кортеж вида (автомобиль№1; колесо№1; колесо№2; колесо№3; колесо№4) может иметь определенную семантику, но надо явно проговорить какую. Иначе не ясно, о чем идет речь.
Mrrl
29.04.2015 10:30Но это не связи типа «прямая имеет класс точек»
Давайте посмотрим. У прямой есть два свойства — с одной стороны, она определяет некоторое множество точек, с другой — у неё есть направление. Говорить, как учили в школе, что «прямая является множеством точек» не очень хорошо. Одна из причин — что у «множества точек» направления нет. В терминах ООП мы могли бы сказать, что прямая наследуется от множества точек. Математики будут возражать: например, проективная плоскость определяется как множество точек и множество прямых, связанных предикатом «точка лежит на прямой». Прямая там равноправна с точкой. Можно сказать, что у прямой есть интерфейс «множество точек». А можно сказать, что у прямой есть property «множество точек», так же как и property «направление». И если мы можем сказать «прямая имеет направление», то почему не верно, что «прямая имеет множество точек»? Да, так не говорят. Но разницы в типах связи «прямая — направление» и «прямая — множество точек» я не вижу.boldachev
29.04.2015 20:42У прямой есть два свойства — с одной стороны, она определяет некоторое множество точек
Это не свойство, а способ описания.
И если мы можем сказать «прямая имеет направление», то почему не верно, что «прямая имеет множество точек»? Да, так не говорят. Но разницы в типах связи «прямая — направление» и «прямая — множество точек» я не вижу.
Здесь проблема в слове «имеет». Да, сказать «прямая — множество точек» вполне можно — это означает, что мы можем представить/описать прямую как множество точек. Но «прямая имеет множество точек» выражает отношение часть-целое, мол есть некая прямая и у нее есть (не она сама есть, а у нее есть) множество точек.
Так и с машиной и колесами: можно сказать, что машина есть множество ее деталей, но у машине есть класс колес, машина содержит класс колес принципиально некорректно. Отношение часть-целое может быть только между однородными сущностями. Вещь может быть частью вещи, множество может быть частью только множества.Mrrl
29.04.2015 22:16Это не свойство, а способ описания.
Это именно свойство. Говорить, что прямая определяется множеством точек можно не всегда.
Например, в классификации кривых второго порядка «кривая» x^2+y^2=0 классифицируется как «пара пересекающихся комплексно сопряженных прямых». Каждая из этих прямых на плоскости имеет ровно одну точку (0,0) — но при этом прямые разные. А «пара параллельных мнимых прямых» x^2+1=0 вообще точек не имеет. Это не мешает прямым быть прямыми и участвовать в различных выкладках. То, что прямые при этом определяют какие-то множества на плоскости с комплексными координатами, чаще всего никого не интересует — все работают с уравнениями.
А насчёт слова «имеет» — формулировку «прямая имеет направление» или «машина имеет цвет» вы тоже будете считать некорректной? Эти случаи трудно воспринять как отношение «часть-целое». Есть целая машина, и у неё есть цвет, цена, хозяин, порт приписки и дата первого запуска мотора. Все они относятся к машине так же, как множество её колёс. И как множество точек — к прямой.boldachev
29.04.2015 22:34А насчёт слова «имеет» — формулировку «прямая имеет направление» или «машина имеет цвет» вы тоже будете считать некорректной?
Проблема ведь не в словах. Сам maxstroy использует слово «имеет» как указание на то, что класс колес является частью машины. Посмотрите на рисунок, там написано «класс колес стоит на машине».maxstroy Автор
30.04.2015 09:04класс колес является частью машины
В данном контексте я этого не говорил. Дело в том, что под «имеет» я имел ввиду слова заказчика. В его воображении машина имеет группу колес, что я и записал, Никакого другого смысла я в это не вкладывал. Правда, перед тем, как записать это, я проверил и спросил заказчика: Вам действительно не важно, если я переставлю колеса местами, или заменю одни колеса на другие? Он сказал, что ему по бую. Поэтому я и нарисовал связь между машиной и группой колес.boldachev
30.04.2015 10:50В данном контексте я этого не говорил.
Я понимаю, что контекст может быть разным, но в данном тексте вы продолжаете развивать идею записи "Класс объектов или объекты класса?", а там в комментариях вы написали:
@maxstroy: Есть класс колес. Есть автомобиль. Я говорю, что авто состоит из класса колес. (ссылка)
И на картинке в текущем тексте у вас связь между классом колес и автомобилем обозначена как «класс колес стоит на автомобиле». Причем тут заказчик? Вы же пытаетесь сформировать точный язык, строгую логику. И вам надо дать однозначный ответ на вопрос: может ли индивид (автомобиль №12) вступать с классом в отношение целое-часть.
Кстати, я не очень понимаю, почему вы вообще избегаете называть эту связь своим именем? Двигатель стоит на авто — это означает двигатель является частью авто.maxstroy Автор
30.04.2015 10:56В прошлой статье я имел ввиду совсем другой контекст. В данной статье я специально изменил его, чтобы не возникало лишних вопросов. «Стоит на» не равно «состоит из».
boldachev
30.04.2015 11:01«Стоит на» не равно «состоит из».
Да, конечно, не равно. Но обе фразы («стоит на» и «состоит из») указывают на отношение «часть-целое», которое вы упорно не хотите обсуждать. Даже избегаете его произносить.
Повторю свой вопрос: может ли индивид (автомобиль №12) вступать с классом в отношение целое-часть?maxstroy Автор
30.04.2015 11:04Но обе фразы («стоит на» и «состоит из») указывают на отношение «часть-целое», которое вы упорно не хотите обсуждать
В данной статье я специально не обсуждаю эту тему. Это заготовка под статью, где я расскажу про все отношения «Часть-целое», которые мы используем в быту. Но пока рано — не все определения введены. Прошлая статья показала, что без полного введения всех сущностей, понять отношения часть-целое не удается. Поэтому отложим этот разговор до будущих времен. А сейчас обсуждаем только отношение «стоит на»boldachev
30.04.2015 11:24«Часть-целое», которые мы используем в быту.
Забавно. Это одно из первейших семантических отношений (см. например, тут). Куча книг и статей написано на эту тему.
А сейчас обсуждаем только отношение «стоит на»
Хорошо. Можно ли считать это положительным ответом на вопрос: может ли класс стоять на индивиде?. Если да, то требуется уточнение: класс стоит на индивиде (авто), так же как на авто стоит двигатель? Нужен ли слесарь, чтобы снять класс с авто? или достаточно просто удалить класс из онтологии на моделлере?
И могу повторить и свой изначальный вопрос, по которому вы так и не дали пояснений. В логической парадигме все свойства любого объекта задаются указанием на вхождение его в тот или иной класс (так вы писали в первых текстах). Теперь вы вводите принципиально новое отношение объекта и класса (класс стоит на объекте). Как это соотносится с логической парадигмой? На мой взгляд, это уже нечто совершенно иное (безотносительно самой осмысленности этого отношения). То есть вы уже не имеете право ссылаться на логическую парадигму.maxstroy Автор
30.04.2015 11:56Мы обсуждаем семантику. Какие семантические отношения возможны и между чем? Берем термин «состоит из» и смотрим, между объектами каких классов возможно такое отношение. Берем термин «стоит на» и смотрим, между объектами каких классов возможны такие отношения. Берем термин «Похож на» и смотрим, между объектами каких классов возможны такие отношения. Логическая парадигма — это теоретико-множественный подход. В логической парадигме мы можем рассматривать любые концепты и анализировать их. В логической парадигме есть отношения «похож на», «стоит рядом», «женат» и так далее.
boldachev
30.04.2015 12:33В логической парадигме есть отношения «похож на», «стоит рядом», «женат» и так далее.
Да какие угодно. Но все они выражаются через отнесение объекта к одному из классов: класс «похожие на Бреда Пита», класс «стоящие рядом с пивным ларьком», класс «женатые». Других отношений между индивидом и классом в логической парадигме нет. Это и есть теоретико-множественный подход.
А что такое класс стоит на автомобиле я даже представить себе не могу. Есть класс "колеса стоящие на авто" — его элементами являются колеса. Может быть класс "автомобили с 4 стоящими на нем колесами" — его элементами являются автомобили. В логической парадигме автомобиль может только входить в класс, но никак не включает класс в себя.
Последний контрольный вопрос: может ли в логической парадигме какое либо-другое отношение между индивидом и классом кроме индивид является элементом класса? (Я спрашиваю не про ваши соображения о возможных отношениях, а конкретно про логическую парадигму.)maxstroy Автор
30.04.2015 12:38А что такое класс стоит на автомобиле я даже представить себе не могу
Я тоже не могу, но логика говорит о том, что такое возможно. Именно это я и доказываю. И это не противоречит теории множеств.
В логической парадигме автомобиль может только входить в класс, но никак не включает класс в себя.
Термин «включает» требует определения. Также как термин «состоит из». Об этом я буду говорить в следующих статьях.
может ли в логической парадигме какое либо-другое отношение между индивидом и классом кроме индивид является элементом класса?
Отвечу: а в теории множеств есть такие отношения? Если есть в теории множеств, то есть и в логической парадигме. Примеры приводились ранее и не только мной.Mrrl
30.04.2015 12:49В теории множеств класс колёс автомобиля можно построить с помощью схемы выделения, используя класс колёс вообще в качестве базового множества, а автомобиль — как часть формулы селекции. Но будет ли это считаться «отношением» между классом и автомобилем, это вопрос. Понятно, что можно записать такое отношение, вынеся автомобиль за пределы формулы, и сделав его аргументом отношения. Тогда про любой класс можно будет сказать, является ли он именно классом колёс и именно этого автомобиля.
Mrrl
30.04.2015 12:41А в конструкции «класс колёс, стоящих на конкретном автомобиле» какое отношение между классом колёс и индивидом автомобиля? Явно не «индивид является элементом класса». Или подобное отношение («индивид является частью предиката, определяющего класс») в логическую парадигму не входит?
maxstroy Автор
30.04.2015 12:48в конструкции «класс колёс, стоящих на конкретном автомобиле» какое отношение между классом колёс и индивидом автомобиля?
Отношение «стоит на».Mrrl
30.04.2015 12:51А в конструкции «множество чисел, больших X»? Сказать, что множество больше числа, мы не можем.
maxstroy Автор
30.04.2015 14:07Как говорил мой знакомый математик, мы можем говорить все, что нам захочется, если дадим терминам определение. Если мы определим, что значит отношение между множеством и числом, то ничто потом не помешает нам пользоваться этим отношением.
Mrrl
30.04.2015 14:10+1Было такое. Примерно 150 лет назад:
«When I use a word,» Humpty Dumpty said, in rather a scornful tone, «it means just what I choose it to mean—neither more nor less.»
«The question is,» said Alice, «whether you can make words mean so many different things.»
«The question is,» said Humpty Dumpty, «which is to be master—that's all.»maxstroy Автор
30.04.2015 15:02спасибо! Я не читал оригинал, сожалею. Вы правы. Вопрос в том, кто и как определит термин. Главное — определить его. Есть общеупотребительные термины, есть те, которые создаются под задачу. Если необходимо создать новый термин, нам ничто не мешает это сделать. Главное — чтобы он был нужен и не был синонимом уже существующего.
Супремум и инфинум.
Наименьшее число, ограничивающее сверху некоторое множество чисел называется точной верхней гранью
или супремумом этого множества. Двойственным образом наибольшее число ограничивающее снизу неко-
торое множество чисел называется точной нижней гранью или инфинумом этого множества. Супремум множества A обозначается sup A, инфинум множества A обозначается inf A.
В этих определениях вводится семантическая связь между числом и множеством чисел.
boldachev
30.04.2015 12:52А в конструкции «класс колёс, стоящих на конкретном автомобиле» какое отношение между классом колёс и индивидом автомобиля?
Это название класса. Назовите так «колеса автомобиля» или «КА»Mrrl
30.04.2015 12:56Не могу. Для разных автомобилей будут разные классы, а сами автомобили названия не имеют, это всего лишь объекты — в программе или в мире. Поэтому включить автомобиль в название не удастся. И определить по названию «колёса автомобиля#812», какой автомобиль использовался в построении, тоже не получится. А это вполне конкретный автомобиль. Связанный с этим классом, но не входящий в него.
boldachev
30.04.2015 14:11To Mrrl
Мне кажется, тут у нас получилась какая-то каша. Название класса — это просто название, ну хоть «Hu65FDE6». Способ задания элементов класса тут простой — перечисление его элементов (колеса на конкретном авто). Поэтому ваш вопрос:
А в конструкции «класс колёс, стоящих на конкретном автомобиле» какое отношение между классом колёс и индивидом автомобиля?
Не имеет смысла. Он про название или про элементы класса. Или проще ответить так: никакого нет отношения. Поскольку это просто класс и для фиксации его отношений с другими сущностями надо как-то определять эти отношения. В процедуре задания класса и тем более в его названии они не определены.Mrrl
30.04.2015 14:25Способ задания элементов класса тут простой — перечисление его элементов (колеса на конкретном авто).
Такой способ задания будет неустойчив к отвинчиванию колеса и использованию его на баррикадах — класс по-прежнему будет считать, что это колесо всё ещё относится к этому автомобилю.
Но класс можно задать как-то так:
Car thisCar;
…
class wheelsOfCar=(class Wheel).RestrictedBy(x => x.AttachedTo(thisCar));
(синтаксис условный). Тогда в класс будут входить именно те колёса, которые стоят сейчас на конкретном автомобиле. И какое теперь отношение между автомобилем и классом?maxstroy Автор
30.04.2015 15:07А это приводит нас к следующей задаче: необходима историйность класса. Что и когда входило в этот класс?
Mrrl
30.04.2015 15:25Что и когда входило в класс рациональных чисел?
Если есть возможность перехватить событие «колесо добавлено в класс/удалено из него», то хранить историю как класса, так и колеса не проблема. Если нет — то перечислить все элементы класса не проще, чем все целые числа в программе.
boldachev
30.04.2015 15:27Такой способ задания будет неустойчив к отвинчиванию колеса
Не понял. Что значит «неустойчив»? Отвинтили колесо — в классе «Hu65FDE6» стало на один элемент меньше. Где проблемы?
И какое теперь отношение между автомобилем и классом?
Никакого. В логической парадигме может быть только одно отношение: объект является/не является элементом класса. Если вы о чем-то другом (не о логической парадигме, которую излагает maxstroy), то тогда и разговор будет другим.
potapuff
28.04.2015 15:46Поправьте меня, но глядя на вашу ЕР диаграмму: нельзя добавить автомобиль, пока нет колес и нельзя добавить колесо, пока нет автомобиля.
maxstroy Автор
28.04.2015 16:05В воображаемом мире, который мы описываем, автомобиль создается вместе с колесами.
potapuff
28.04.2015 20:53Одновременно вставлять записи в две таблицы можно, действительно, только в воображаемом мире.
maxstroy Автор
28.04.2015 20:58Концептуальная модель предметной области не моделирует таблицы. Это заблуждение, что концептуальная модель имеет какое-то отношение к хранению данных. Таблицы моделирует другая модель: физическая, или модель данных. Но даже в физических таблицах одновременное добавление записей возможно и порой необходимо. Это реализуется механизмом транзакций.
lair
28.04.2015 21:52Вообще-то, транзакция над двумя таблицами не дает одновременного добавления записей, только согласованное. А по времени оно (если записи вставляются на одном сервере) последовательное.
maxstroy Автор
28.04.2015 21:55Конечно, но для пользователя они добавляются обе вместе, или не добавляются. Невозможно добавить одну, не добавив другую. Иначе — коллизия.
lair
28.04.2015 21:59Вот только эта невозможность добавить не имеет ничего общего с физическими таблицами. И, что важнее, не означет возможность одновременной вставки записей в эти таблицы.
Так что, хотя на уровне домена чтобы объекты были согласованными, они должны содержать заполненные встречные связи, на уровне физической модели такое ограничение (и такая операция) как минимум в ряде реляционных СУБД невозможно.maxstroy Автор
28.04.2015 22:01Хорошо, пусть так. я не претендую на моделирование данных. Мои работы направлены на моделирование предметных областей, где нет ни таблиц, ни транзакций, ни записей.
lair
28.04.2015 22:03Я очередной раз прошу вас не делать утверждений в тех областях, в которых вы не разбираетесь.
maxstroy Автор
29.04.2015 01:46Качество диспута зависит от всех сторон-участников. Если бы участники оставались в рамках обсуждаемой темы, было бы проще. Но в данной ветке зачем-то обсуждается модель данных, в параллельной — в чем рисовать модели. С акынами трудно вести конструктивный диалог. Так что пока — поем каждый свою песню.
mactator
28.04.2015 21:19Похоже на Sybase Power Designer, дороговатый инструмент для рисования диаграмм.
maxstroy Автор
28.04.2015 21:35Не то слово! Но я склоняю голову перед теми, кто сделал этот продукт! Если почитать хелпы, становится ясно, сколько времени потрачено на вылизывание платформы. Очень точные и очень лаконичные термины. Сшито все очень качественно. Качественно по сравнению с другими продуктами. Но по абсолюту можно еще доработать.
mactator
28.04.2015 21:38А генерацию кода делали? Именно там проявляется смысл всех этих стрелочек и черточек, связей один ко многим и прочие прелести UML
maxstroy Автор
28.04.2015 21:43от концептуальной модели надо перейти к логической, затем к физической и только на ее основе получится генерация структур данных. На основе концептуальной модели сгенерировать структуру данных нельзя. Это про разное, как я уже говорил ранее.
rolechka
29.04.2015 10:00Любое моделирование должно иметь цель, тогда уже легче ответить на вопросы как смоделировать. Это может быть просто познание мира, автоматизация, моделирование ситуация «что если», передача знаний ребенку, пердача знаний другому специалисту и многое другое.
Также если говоритьь о концептуальной модели, то это инструмент для отображения общего понимания предмета разговора, если говорить кратко.
Потому вопросы:
1. Какая ваша цель моделироавания?
2. Что дают дополнительные элементы на диаграмме? Почему мало 2х элементов автомобиль и колесо плюс связи 1-4 (вот прям так и написать на связи жестко, концептуальное моделирование это разрешает).
3.Зачем производить концептуальную модель в виде ЕР диаграммы?
maxstroy Автор
29.04.2015 11:05Какая ваша цель моделирования?
Я использую критерий: способен ли я создать представление модели без искажения смысла? Если клиент говорит одно, а я в модели рисую другое, — то либо я плохой аналитик, либо инструмент моделирования плох. Я рассматриваю те кейсы, в которых, даже, если бы я и хотел записать слова клиента корректно, то не могу по причине того, что инструмент моделирования мне этого не позволяет. И говорю, чего именно мне не хватает.
Почему мало 2х элементов автомобиль и колесо плюс связи 1-4
Мы правильно понимаем, что вы связали автомобиль и колесо четырьмя связями? Но у автомобиля 4 колеса, а не одно колесо. Поэтому вопрос не понятен.
Зачем производить концептуальную модель в виде ЕР диаграммы?
Причина, по которой я предпочитаю ER модель, я указал: это то, что она ближе к моделированию классов, чем диаграмма классов UML.rolechka
30.04.2015 19:03про ясную цель моделирования все же ничего не сказано. цель — создать представление модели без искажения смысла? можно ли так вообще формулировать цель? веь взяв любой объект можно сделать миллион его разных моделей. Тот же автомобиль —
— если хотим детям объяснить что такое КРАЗ — можно показать игрушечную модельку КРАЗа не таща ребенка на производство
— если нужно запрограммировать сайт для продажи колес автомобиля, то нужна модель не самого автомобиля а данных про автомобиль которые нужно сохранить в базе (если упрощенно)
— если мы рисуем схему ДТП то на ней машинка в виде прямоугольника с палочками в виде колес — это тоже модель.
и так далее. о каком искажении смысла идет речь?
при построении любой модели важно:
а) понимать настоящую цель ее использования и применения
б) точку зрения того кто делает модель ()для руководителя и для подчиненного модель одного и того же почти всегда будет разной)
в) найти способ максимально упрощенно представить модель чтобы в ней не было ничего лишнего что не касается вашей цели
г) сделать это наглядно
Если клиент говорит одно… тут похоже есть конкретная ситуация с клиентом, которую может быть стоит разобрать?
Клиенту на модели такого вида обычно вообще все равно, используем их мы — аналитик, разработчики, для обмена знаниями, построения программ и т.п.
Последняя диаграмма в приведенной статье — вот о ней я говорила. Она вполне достаточна для большинства задач связанные с моделированием машины. просто на линии поставить слева 1, справа 4 и все.
Причина, по которой я предпочитаю ER модель, я указал: это то, что она ближе к моделированию классов, чем диаграмма классов UML.
погодите… Вам нужно промоделировать классы? или все же данные для хранения информации?
Концептуальная модель — это общая диаграмма на которой может быть ЧТО УГОДНО и КАК УГОДНО и это принципиально, она может отражать любой срез который хочет аналитик без привязок. Обычно полезна вначале понимания предметной области когда еще не понятно где точно функция, где информационный поток, где какие роли.
Я просто почему пишу это — в Вашей статье есть некоторые аспекты которые начинающие наверняка неправильно истолкуют. Если цель поделиться знаниями для подрастающего поколения — я внесла бы коррективы на этот счет.maxstroy Автор
30.04.2015 19:28цель — создать представление модели без искажения смысла? можно ли так вообще формулировать цель? веь взяв любой объект можно сделать миллион его разных моделей.
Боюсь, что Вы неправильно меня поняли. Я не пытаюсь создавать модель. Модель создает заказчик. Моя задача — записать эту модель без искажений. Поэтому, если заказчик говорит, что у мотопупки сверху чвакалка, — моя задача указать это в представлении модели, а не пытаться придумывать модель за заказчика. Вторая задача — это верификация модели. На основе проверки я могу задавать уточняющие вопросы, чтобы прояснить детали, но ничего не придумываю сам. Это тот кейс, который я рассматриваю сейчас. После того, как мы научимся записывать модели за заказчиком, нам предстоит вторая задача — научиться придумывать их самостоятельно.lair
30.04.2015 23:48У заказчика как раз в норме нет модели, у него есть работающий (или не очень) процесс, нуждающийся в (простом случае) автоматизации.
maxstroy Автор
01.05.2015 07:09Возможно, поэтому Вы меня не понимаете, потому что пытаетесь решить не ту задачу, которую решаю я. У меня не стоит задача автоматизации процесса. У меня стоит задача фиксации модели. То есть, я концентрирую свое внимание на записи концептуальной модели корректным образом тогда, когда она уже существует в голове у заказчика.
lair
01.05.2015 10:18Я и не говорил, что у вас стоит задача автоматизации процесса.
Но в любом случае, задачи корректной записи модели из чужой головы стоят не может: поскольку телепатов (предположительно) не существует, необходимо сначала узнать, что в чужой голове (т.е., фактически построить свою модель), а только затем зафиксировать это.maxstroy Автор
01.05.2015 10:26Хорошо, но заказчиком исполнения модели могу быть я сам. Кто является заказчиком — не важно. Важно умение передать модель без ее искажения. Это моя задача. Эта задача ровно та же, что решалась математиками, когда они стремились найти способ описания мира. который был бы максимально приближен к нашему способу мышления. И нашли такой способ — математическую логику. Если мы хотим строить наши модели корректно, то нам придется воспользоваться достижениями математиков. Что я пытаюсь делать.
lair
01.05.2015 10:43Кто является заказчиком — не важно
Важно, потому что от этого зависит, что именно вам как аналитику придется делать и как.
Эта задача ровно та же, что решалась математиками, когда они стремились найти способ описания мира. который был бы максимально приближен к нашему способу мышления. И нашли такой способ — математическую логику.
Вы серьезно? Я всегда считал, что (а) математика не занимается описанием мира, (б) математическая логика не является способом описания мира и (ц) математическая логика не так уж приближена к «нашему способу мышления».
Так что нет, математика — не обязательный пререквизит для корректного построения моделей. Особенно учитывая, что корректность модели — не такая очевидная характеристика, как вам того бы хотелось.maxstroy Автор
01.05.2015 10:49Мне всегда казалось, и так меня учили, что математика — это язык философии. Я не готов принять тот факт, что математика оторвана от реальности. Это кажется мне бессмысленным.
lair
01.05.2015 10:54так меня учили, что математика — это язык философии
Это излишне романтизированное представление о математике.
Я не готов принять тот факт, что математика оторвана от реальности.
А я и не говорил, что математика оторвана от реальности, я всего лишь сказал, что математика не занимается описанием мира.maxstroy Автор
01.05.2015 10:58Это излишне романтизированное представление о математике.
Не согласен.boldachev
01.05.2015 13:10так меня учили, что математика — это язык философии
И это излишне примитивизированное представление о философии.
Это излишне романтизированное представление о математике.
Хотя можно ответить и проще: откройте тексты философов и поищите там формулы ))maxstroy Автор
02.05.2015 12:32я не хочу сказать, что все концепты философии можно описать формулами, но я утверждаю, что все математические концепты имеют философский смысл. То есть мое утвержден ие необходимое, но не достаточное.
lair
02.05.2015 12:55Если не все концепты философии можно описать формулами, то математика не может являться языков философии, потому что она не способна ее выразить.
Не говоря уже о том, что из тезиса «все математические концепты имеют философский смысл», пусть и спорного, ровным счетом никак не вытекает, что математика — это способ описания мира.maxstroy Автор
03.05.2015 06:09Я лишь утверждаю, что, если мы хотим научиться моделировать пространство-время, нам придется воспользоваться достижениями математики. Или их повторить. Мне кажется, что это очевидно. Если Вы считаете, что математика в этом не поможет, то нам не стоит продолжать дискуссию.
lair
03.05.2015 17:51Я лишь утверждаю, что, если мы хотим научиться моделировать пространство-время, нам придется воспользоваться достижениями математики.
Во-первых, не математики, а физики. Математика не оперирует временем. Во-вторых, к математической логике это отношения не имеет.
Ну и в-третьих, не все моделируют пространство-время в своих задачах.Mrrl
03.05.2015 18:21В каких-нибудь случайных процессах время очень даже присутствует. И в дифференциальных уравнениях переменная, по которой идёт дифференцирование, часто обозначается буквой t. Случайность? Не думаю.
lair
03.05.2015 18:25И все же, математика per se оперирует некими величинами. Геометрия (часть математики) оперирует величинами, ассоциированными с пространством.
(при этом нет, не случайно, что дифференцирование идет по t, потому что дифференцирование хорошо ассоциируется с физикой; но если математическая формула решает какую-то прикладную задачу, то это еще не значит, что сама математика оперирует этими задачами, это всего лишь значит, что прикладная задача сводима к математической подменой терминов)maxstroy Автор
03.05.2015 18:32Я думаю, что данная тема бессмысленна в рамках данного контекста. Все, что я хотел сказать. я сказал в статье. Обсуждение математики, или физики в данном контексте выглядит лишним)
maxstroy Автор
03.05.2015 18:35Тема беседы: может ли объект быть связан с классом объектов семантической связью. Обсуждаем.
lair
03.05.2015 18:38Ответ на этот вопрос зависит от определения понятия «объект» и «класс объектов» в конкретной системе моделирования, а так же от решаемой задачи. Есть методологии, которые запрешают связь объекта с классом объектов, но при этом успешно решают все поставленные прикладные задачи, не испытывая проблем из-за этого ограничения. Так что обсуждать тут нечего.
Мне существенно интереснее вопрос, который я задал вам выше (и на который вы не ответили): для решения какой прикладной задачи вам понадобилась такая связь?maxstroy Автор
03.05.2015 18:45для решения какой прикладной задачи вам понадобилась такая связь?
Давайте оставаться в рамках темы. Тема: возможность такой связи. Я бы предпочел обсуждать эту тему.lair
03.05.2015 18:53Абстрактная [не]возможность этой связи показана мной в комментарии, на который вы отвечаете. Поэтому, повторюсь, обсуждать там нечего.
Чтобы обсуждать практическую возможность этой связи в конкретном методе моделирования, необходимо:
- строго определить понятия «объект» и «класс объектов»
- строго определить понятие «семантическая связь»
maxstroy Автор
03.05.2015 19:13строго определить понятия «объект» и «класс объектов»
Когда я задал этот вопрос математикам, они ответили, что термин класс определяется аксиоматически. А термин объект определен как 4-Д объем пространства-времени.
строго определить понятие «семантическая связь»
Это та связь, которая в воображении субъекта связывает (что связывает, описываю я в своих статьях) смыслом. В классике под объектами связи рассматриваются слова, знаки, и прочие информационные объекты. В моем случае я смотрю на то. что обозначают эти термины и смотрю, как мы связываем то, что обозначено терминами.
Mrrl
03.05.2015 18:46Если идти от теории множеств, то там любой объект является множеством. Множество объектов — такой же объект, как и любой другой. Если класс, о котором вы рассуждаете, является отражением понятия «множество», то он является объектом, равноправным с остальными.
maxstroy Автор
03.05.2015 18:57Именно это я пытаюсь донести до слушателей. Пока читатели разделились на тех, кому трудно обсуждать эту тему по причине недостаточной концентрации, тех. кто пока не смог допустить этот тезис как допустимый и того, кто задал вполне резонный вопрос о реальности групп. Болдачев, огромное ему спасибо, натолкнул меня на великолепный пример. который я рассмотрю в следующей статье, где докажу со всей очевидностью, что мы, человеки, рассматриваем объекты и классы объектов как «равнонастоящие» в отличие от типа объектов. И это довольно трудно для понимания.
Mrrl
03.05.2015 19:18Честно говоря, я не могу увидеть особого смысла в этом вопросе. В случае колёс автомобиля, первый вопрос, который у меня возникает (если возникает вообще) — идентификация этого объекта (класса): чем он определяется, как отличается от других, в какой период он существует, возможно ли его «расщепление» (когда в двух разных контекстах он станет различным). Следующим этапом (уже во время программирования) будет его представление, момент и способ создания, контроль за изменением, интерфейсы… И эти детали могут меняться: при очередном рефакторинге вполне можно переключиться с явного хранения множества, «стоящего на автомобиле» на представление в виде «гораздо более широкий класс+предикат». На адекватность модели это нисколько не повлияет, это всего лишь детали реализации.
maxstroy Автор
03.05.2015 19:36С точки зрения моделирования — все просто. Допустив существование классов объектов, можно построить много интересных конструкций. Но меня интересуют те из них, которые всегда существовали, но не были распознаны нами как классы. Статья разгонная. Основной материал будет посвящен именно таким объектам.
Mrrl
03.05.2015 19:48Я вижу два варианта. Либо разрывается связь «автомобиль — колесо», и теперь «автомобиль стоит на колесе» раскрывается в «колесо принадлежит множеству колёс автомобиля», либо класс определяется, как «колёса, стоящие на этом автомобиле», и автомобиль является его атрибутом (не знаю, как это вкладывается в конкретную модель). Тогда автомобиль этого класса не содержит (хотя имеет право знать о нём), и работать с этим классом, как с коллекцией мы тоже не можем — можем только проверить, принадлежит ли колесо этому классу (и для этой проверки нам нужен автомобиль).
maxstroy Автор
03.05.2015 20:08Я очень благодарен Вам за Ваше терпение. Однако, мы можем поступить двумя способами: поговорить лично голосом, чтобы я понял Ваш тезис лучше и мог бы корректно на него ответить. Или мы можем подождать следующей статьи. В ней я дам первый очень важный намек, и ттогда станет очевидно, к чему я так старательно веду.
Mrrl
03.05.2015 21:06Вопрос такой: можете ли вы вообще определить класс, как пересечение двух классов? Например, класса деталей автомобиля и класса всех колёс?
Если да — то приведёт ли добавление к классу деталей автомобиля ещё одного колеса к автоматическому изменению класса колёс автомобиля?
Если тоже да — то не противоречит ли это тому, что класс определяется исключительно перечислением своих элементов?maxstroy Автор
03.05.2015 21:28пересечение двух классов: деталей автомобиля и класса всех колес — дает нам класс из 4-х колес.
приведёт ли добавление к классу деталей автомобиля ещё одного колеса к автоматическому изменению класса колёс автомобиля?
Это зависит от метода учета.
не противоречит ли это тому, что класс определяется исключительно перечислением своих элементов?
Класс, или группа также могут быть разложены на темпоральные части. как и объект. В какой-то момент времени есть 4 колеса в классе, в какой-то — 5. Я не вижу в этом сложности. а Вы?Mrrl
03.05.2015 21:44В какой-то момент времени есть 4 колеса в классе, в какой-то — 5.
Вопрос о согласованности. Если на диаграмме (в модели) можно указать, что класс колёс автомобиля — это всегда пересечение двух классов, и, следовательно, события изменения класса деталей автомобиля и класса его колёс происходят синхронно — это одно дело. Модель получает математическую окраску, и если на диаграмму добавить достаточное количество логических и теоретико-множественных связок (включая кванторы — «любой элемент класса» и «некоторый элемент класса»), то можно будет описать всё, что нужно (в случае колёс автомобиля — просто показать класс деталей (он задаётся явным перечислением), класс его колёс (строится как пересечение), и то, что пересечение классов имеет мощность 4).
Если же такой способ описания класса недопустим… то утверждение о 4 колёсах тоже можно нарисовать. Закодировав пересечение с помощью кванторов и связки «A лежит в B». Тогда класс колёс автомобиля возникнет как временная безымянная сущность. И это будет громоздко и непонятно.
Есть более сложная задача — смоделировать утверждение, что все 4 колеса должны быть одной марки. Предполагается что класс классов колёс, сгруппированных по маркам, у нас есть.maxstroy Автор
03.05.2015 22:03Сорри, но мне трудно понять вопрос. Все, что я читаю, верно. Можно указывать как пересечение, можно перечислять объекты. Правда надо делать оговорку, что данное перечисление соответствует такому-то времени.
Есть более сложная задача — смоделировать утверждение, что все 4 колеса должны быть одной марки
Это делается очень просто: указав класс, к которому относятся данные колеса: класс «Бриджстаунмля»Mrrl
03.05.2015 22:26Это делается очень просто: указав класс, к которому относятся данные колеса: класс «Бриджстаунмля»
Это же совсем другое утверждение! Оно запретит существование автомобиля, все колёса которого относятся к классу «Лонгюра». Или какому-нибудь пока неизвестному классу.maxstroy Автор
03.05.2015 22:30Понял!!! Вы создаете мир на основе модели, а я модель на основе мира! Разве нет?
Mrrl
03.05.2015 22:42+1В какой-то мере. Если в модели написано «любая ворона — чёрная», значит, в мире не может быть белых ворон. Иначе либо модель, либо мир неправильны.
maxstroy Автор
04.05.2015 08:28колеса одних автомобилей могут относиться к одной марке (марка колес связана с соответствующим классом), а могут — к другой марке. Если мы говорим, что все автомобили оснащены колесами одной марки, то мы утверждаем, что автомобили с другими колесами — это автомобили уже не этого класса, но они (автомобили) не «запрещены» в принципе.
Mrrl
04.05.2015 09:04То есть, когда автомобилю меняют зимнюю резину на летнюю, он может поменять класс. Бедный пользователь, ему теперь два раза в год придётся перерегистрировать машину. А ведь как просто было бы написать:
? WT ? WheelTypes: ? W ? (CarDetails ? Wheels): W ? WT
и не привязываться к конкретной марке резины.maxstroy Автор
04.05.2015 09:08Мы упираемся в метод учета. Как скажет учетчик, так мы и поступим. Скажет, что автомобиль меняет класс со сменой колес, учтем это так. Скажет, что не меняет, учтем это так. Например, автомобиль требует перерегистрации при смене двигателя. Это требование метода учета. С тем же успехом можно ввести закон о перерегистрации при смене колес.
Mrrl
04.05.2015 09:20Но сможете ли вы сделать то, что сказал учётчик? Поддержит ли модель утверждение, что все колёса должны быть одного класса, но этот класс может быть любым, и класс автомобиля не зависит от класса резины?
maxstroy Автор
04.05.2015 09:28Вы имеете ввиду, что колеса должны быть одной марки? Иначе не понятно. Ведь класс — это произвольная группа. которая может включать все что угодно, в том числе и конкретные колеса. Поэтому требование
колёса должны быть одного класса
само по себе бессмысленноMrrl
04.05.2015 09:36Да, здесь «один класс» принадлежит классу марок колёс (точнее, классу классов колёс соответствующих марок).
Mrrl
04.05.2015 09:28Можно указывать как пересечение, можно перечислять объекты. Правда надо делать оговорку, что данное перечисление соответствует такому-то времени.
Ну да. Одно дело, когда вы напишете
? T: CarWheels(T) = CarDetails(T) ? Wheels;
Другое — когда
CarDetails(TAttach) = CarDetails(TAttach-1) U CarWheels
и третье — когда
? T: CarDetails(T) = CarWheels(T) U CarGlasses(T) U CarMetalStuff(T) U ...
(в этом случае класс колёс будет базовым по отношению к деталям автомобиля, и автомобиль будет стоять на классе колёс, а не на отдельных колёсах)
Получаются слегка разные модели. И разные связи между автомобилем и классом колёс.
Mrrl
03.05.2015 18:40Геометрия оперирует теми величинами, которые ей дадут в качестве координат. Задачи линейной аппроксимации, кластеризации, многофакторного анализа и т.п. формулируются и решаются в геометрических терминах, хотя моделируемые величины ничего общего с физическим пространством могут и не иметь.
Время вполне может быть одной из координат в геометрической постановке задачи. Или более, чем одной. Конечно, то, как представляется физическое время в конкретной модели, зависит от способа построения модели, но чтобы потом с этим представлением времени работать — математика точно пригодится.lair
03.05.2015 18:41Вы говорите о сведении задачи к математической. Это не означает, что сама задача выражена в математических терминах.
Mrrl
03.05.2015 18:53Согласен. Модель может быть не только математической, а выражена в виде каких-нибудь тонких структур, или притч из Библии или сур Корана, или ролевой игры… При работе с такими моделями, наверное, можно обойтись и без математики. Но и компьютер в этой работе вряд ли поможет.
boldachev
02.05.2015 13:11Тогда надо было написать «философия — это язык математики» ))
А вообще философский смысл можно отыскать везде. А вот в обратную сторону не получится: философия невыразима на нефилософском языке. И на математическом.maxstroy Автор
02.05.2015 13:22Ну да, трудно поспорить). Философского языка нет. Как только он появится, философские концепты автоматом будут формализованы. Философия тем и хороша, что она не замыкается на формальной логике и формальных выводах. Просто потому что наше восприятие и наше мышление — не есть способы вывода.
boldachev
02.05.2015 13:26Как это философского языка нет? Не на птичьем же языке написаны все философские тексты? ))) Еще скажите, что нет языка музыки, поэзии, живописи… И как язык искусства, так и язык философии никогда не будет формализован. Хотя локально философские системы вполне рациональны.
maxstroy Автор
02.05.2015 15:59Про язык философии я бы с радостью послушал. Я понятия не имею, на что его положить и как его позиционировать. У меня нет ни сил ни возможности понять это. Поэтому я буду плескаться на поверхности мелководья, где игры разума породили устойчивые структуры, которыми можно забавляться, — формальный язык.
rolechka
01.05.2015 10:49+1Записать модель без искажений… а где вы определили уровень детализации?
Без искажений вообще — это показать сам автомобиль. А так всегда будут искажения зависящие от целей моделирования.
Задача «просто сделать модель» — кому это нужно? Заказчику не нужно, другим тоже. Если только Вам, тогда это не несет полезности для общественности.
Вобщем мой меседж в том что должна быть цель моделирования, как описано во всех методологиях моделирования, той же АРИС.maxstroy Автор
01.05.2015 10:56Записать модель без искажений… а где вы определили уровень детализации?
Вы путаете модель и ее представление. Я не говорю о моделировании. Я говорю о записи моделей, или об их представлении. Степень детализации определяет моделировщик, он же решает вопросы о непротиворечивости модели. Я же говорю только о записи представления этой модели, модели. созданной в другом процессе. Вы же смешиваете два процесса: создание модели и ее записи.lair
01.05.2015 11:07Чтобы «записать» модель, нужно, чтобы она была «построена» в тех же терминах, в которых вы будете ее «записывать».
maxstroy Автор
01.05.2015 11:22Хороший вопрос. Вы знаете исследования на эту тему? То, что мне ответил психолог, звучит так: запись модели будет отличаться для разных целевых групп. Если я имею модель шамбалы, но обращаюсь к аборигенам, не имеющим органов восприятия шамбалы, то моя модель будет строиться на языке аборигенов по принципу аналогий. «Знаете, что такое апельсин? так вот самолет — это штука, совершенно не похожая на апельсин!» Иногда, чтобы передать модель приходится рассказывать метод приобретения аппарата восприятия, на основе которого потом можно будет передать и модель. Поэтому Ваш тезис верен только в том случае, если тот, кто передает модель и тот, кто ее принимает, используют один и тот же понятийный аппарат и один и тот же аппарат восприятия. В противном случае — модель и представление модели будут отличаться как понятиями, так и конструкциями.
lair
01.05.2015 12:48Я об этом и говорю: если представление модели отличается от модели, то оно является другой моделью. Что возвращает нас к тезису, что задача аналитика — создание модели, а не ее запись.
rolechka
01.05.2015 12:49Давайте не переходить на личности. Я исхожу из того что все тут грамтные думающие люди и мы ведем полезную дисскуссию.
Насчет «представления модели». Можете дать определение и ссылку на определение данного понятия? В терминах моделирования предметных областей используют понятия «представление знаний», «модель».
Как-то не стыковуется пока что — получается что представление модели это модель модели. Зачем это? Если вы говорите о визуальном представлении модели — так это и емть модель ))) Ивопрос то вобщем-то не в этом. Вопос в том что если что-то моделируется то это для чего-то нужно, для передачи знаний, для автоматизации, для исследования зависимостей или будь-чего.maxstroy Автор
02.05.2015 12:41Насчет «представления модели». Можете дать определение и ссылку на определение данного понятия?
В ИСО 15926 введен такой термин и вот пример его применения: Но это не все, я спрашивал много людей по поводу различения модели в башке и ее представления на бумаге, в кирпиче, или глине и все согласны с тем, что модель в башке и ее представление в натуре — разные вещи. Так что мне это просто очевидно.
maxstroy Автор
30.04.2015 19:37Вам нужно промоделировать классы? или все же данные для хранения информации?
Мне нужно моделировать предметную область. Предметной областью может быть что угодно: настроение, галлюцинации, заводы… Концептуальная модель как раз для этого предназначена. Она не моделирует данные, она моделирует предметную область.
vvagr
29.04.2015 17:09Что-то странное.
На третьей диаграмме не отображено то, что написано текстом: «для каждого автомобиля найдется 4 связи с колесами в классе семантических связей под названием «Автомобиль имеет колесо», для каждого колеса существует только одна такая связь в этом классе. „
А причина этого проста. И на диаграмме, и в текстовом формализме логических моделей это записывается именно как “семантическая связь между классом ТМ автомобилей и классом ТМ колес». Точно с теми же кардинальностями, как на UML и прочих диаграммах.
А фразы "В такой постановке задачи – нет. Есть класс связей между автомобилями и колесами, но нет связи между классом ТМ автомобилей и классом ТМ колес. " — не соответствуют действительности. Ибо это единственный способ разумно записать то самое правило «для каждого автомобиля найдется 4 связи с колесами».
maxstroy Автор
29.04.2015 17:47семантическая связь между классом ТМ автомобилей и классом ТМ колес
Я могу придумать связь между классом автомобилей и классом колес. Это может быть так: для производства группы автомобилей из 600 штук необходима группа колес из 2400 штук. Но то, что я обозначил в тексте не связывает класс автомобилей и класс колес.
maxstroy Автор
29.04.2015 19:29Хотя, я понял, что «для каждого автомобиля найдется 4 связи с колесами в классе семантических связей под названием «Автомобиль имеет колесо» есть тоже описание класса автомобилей и класса колес. Однако, эта связь между классами должна быть выделена отдельно от класса связей между автомобилями и колесами. Получается, что есть класс связей между колесами и автомобилями, а также есть связь между классом автомобилей и классом колес. Но класс связей и связь не есть одно и то же. Поэтому надо точно понимать, что имеется ввиду в ER модели? класс связей. или связь между классами? ИМХО, имеется ввиду все-таки связь между объектами класса.
vvagr
29.04.2015 19:56Связь между классами — это и есть класс связей между их членами, поэтому ничего отдельного в ней нет. Надо всего лишь записать ряд свойств для класса связей «Автомобили-колёса», который прекрасно нарисован на третей диаграмме.
Эти свойства в том, что одна роль ограничена «Класс ТМ автомобилей», вторая — «Класс ТМ колёс». Именно в этом смысле (и ни в каком ином) класс отношений является отношением между классами концов этих отношений.
Ну и через обычное утверждение о кардинальностях записываем что есть по 4 члена на каждый автомобиль и по одному на каждое колесо.
maxstroy Автор
30.04.2015 08:58Связь между классами — это и есть класс связей между их членами
Не согласен. И далее становится ясно, что это принципиальный момент. Кстати, Крис Партридж согласен со мной:
lair
03.05.2015 19:45(только сейчас заметил)
Сегодня я расскажу, почему я предпочитаю строить концептуальные модели в виде ER диаграмм.
Не вы ли писали «В ER-модели [...] построить конструкции, которые меня бы удовлетворили, я не могу»?maxstroy Автор
03.05.2015 19:48да, ER модели меня не устраивают. По Гамбургскому счету.
lair
03.05.2015 20:14Тогда почему же вы предпочитаете их, а не модели из той же логической парадигмы?
maxstroy Автор
03.05.2015 20:23Для моих моделей нет нотации и нет языка. В своей статье я однажды сказал, что моя цель — построение такого языка и такой нотации. Поэтому приходится моделировать в том, что есть.
lair
03.05.2015 20:24А почему вам не подходит нотация из логической модели?
Моделируя «в том, что есть», вы неизбежно обедняете вашу модель. Раз уж ваша цель — построение языка и нотации, то и занимайтесь этим построением, а не натягиванием воздушного шарика на слона.
lair
Это неверно. В терминах ООП нет связей. В терминах ООП у одного из этих объектов будет свойство, хранящее ссылку, или коллекцию ссылок, или экземпляры другого объекта.
Зачем? Для решения какой конкретной прикладной задачи это необходимо?
maxstroy Автор
Связи в UML есть. Они не могут не есть). Например, тут видно описание этих связей: Правда, тут же говорится, что связь между классами означает связь между объектами классов, но вот тут они перегнули палку. Если такая связь и есть, то она совершенно другая.
lair
А вы не путайте UML и ООП, хорошо? Если вы свое представление об ООП строите на UML, то лучше так и пишите — «в используемой мной UML-нотации», а не «в ООП».
maxstroy Автор
ОК, спаибо! Но я имел ввиду подход, а не программирование. Надо будет уточнять это.
lair
Подход тем более не в UML описывается.
Duduka
Любая программа — это взаимосвязь блоков и отношения частей (ваш К.О.). И ООП — не исключение, свойства отражают это отношение, но вводит еще и связь «хранит».
lair
Парадигма «вещей и связей» вообще одна из самых универсальных, так что не удивительно, что и ООП может быть выражено с ее помощью. Вопрос в том, надо ли подменять внутреннюю терминологию ООП терминологией более общей парадигмы.
maxstroy Автор
Термины ООП предназначены для описания кода. Они не предназначены для описания предметной области, отличной от кода. Попытки «натянуть» ООП на описание предметной области порождают термины, которые трудно себе представить. Например, наследование в классах. Нет наследования в природе, кроме того, которое возникает при размножении. Попытка аналитиков говорить на птичьем языке вызывает у меня удивление. Лично мне прикольно слышать «экземпляр этого молотка». Оставьте термины ООП для описания кода и все будет хорошо.
lair
Знаете, за последние пять лет единственный известный мне аналитик, который говорил о предметной области в терминах ООП — это вы.
maxstroy Автор
Значит, для Вас нет ничего нового. Я пишу для тех, кто не знаком со способами описания предметных областей и хочет научиться этому ремеслу.