Я продолжаю серию статей, посвященных особенностям концептуального моделирования предметных областей. В прошлой статье я показал. как возможно связать объект с классом объектов семантической связью. В статье я рассказал о том, что понимается под термином класс в ООП. Сегодня я расскажу, почему я предпочитаю строить концептуальные модели в виде ER диаграмм.

Пусть нам надо смоделировать тезис, о том, что на каждом автомобиле стоит по 4 колеса. Не группа из четырех колес, а именно, — 4 колеса.

В терминах ER модели принято говорить, что есть автомобиль, есть колесо и есть связь между автомобилем и колесом. Связь эта называется «колесо-автомобиль» и имеет отношение один ко четырем. Связь, читаемая от колес, называется: «стоит на», связь, читаемая от автомобиля, называется: «имеет».



В терминах ООП говорят так: есть класс ООП автомобилей и есть класс ООП колес. Между этими классами ООП есть связь один к четырем. Связь называется: «автомобиль-колесо». Связь, читаемая от колес, называется: «стоит на», связь, читаемая от автомобиля, называется: «имеет».



Посмотрим внимательно на предметную область и напишем, как будет выглядеть представление модели предметной области в терминах логической парадигмы.

В логической парадигме есть термин класс ТМ, который совпадает с определением класса в математике. Это определение очень похоже на определение множества, а множество, в свою очередь – есть группа объектов. Итак, у нас есть множество автомобилей и множество колес. С каждым автомобилем связано 4 колеса семантическими связями «автомобиль-колесо». Таким образом, на каждый автомобиль приходится 4 колеса и 4 семантических связи. Семантическая связь в логической парадигме записывается в виде кортежа: (Автомобиль №123; колесо №234). Все кортежи принадлежат классу, или множеству кортежей. Объединяет это множество семантика: «На автомобиле стоит колесо». Между конкретным колесом и автомобилем, на котором установлено это колесо, установлена только одна семантическая связь. Эта связь имеет отношение один к одному. Как же тогда сказать, что на одном автомобиле установлено 4 колеса? В логической парадигме это произносится так: для каждого автомобиля найдется 4 связи с колесами в классе семантических связей под названием «Автомобиль имеет колесо», для каждого колеса существует только одна такая связь в этом классе.



Таким образом, для моделирования одного автомобиля нам понадобилось 4 связи между автомобилем с колесом, а не одна, как в случае с ER моделью, и не одна, как в случае с диаграммой классов. Это и логично: у одного автомобиля 4 колеса. На диаграмме стрелочками обозначена связь «классификация».

А есть ли семантическая связь между классом ТМ автомобилей и классом ТМ колес? В такой постановке задачи – нет. Есть класс связей между автомобилями и колесами, но нет связи между классом ТМ автомобилей и классом ТМ колес.

Рассмотрим теперь другую задачу. Пусть надо смоделировать тот факт, что автомобили имеют группу колес. Не колеса, а именно группу. В математике за определение группы отвечает термин множество. На математическом языке мы должны сказать: автомобиль имеет множество (группу) колес. Это значит, что мы постулировали возможность связать семантической связью объект и класс объектов. Как смоделировать этот тезис в логической парадигме?

Для этого из класса ТМ колес мы выделяем такие классы колес, каждый из которых относится к одной машине. Так мы связываем машину и группу колес, относящихся к данной машине. В модели это будет выглядеть так:



Стрелки по-прежнему обозначают связь классификация, но кружочек обозначает связь специализация, или «множество- подмножество».

На этой диаграмме мы видим, что объект автомобиль связан с классом колес семантической связью «имеет».
Такая модель уже не представима в виде диаграммы классов или в виде ER модели. Кроме того, ни один современный онтологический стандарт не имеет возможности моделировать такие отношения. Причина проста: трудность в реализации таких отношения на ООП языках программирования.

Заметим, что диаграммы классов не моделируют классы объектов: прямоугольники на диаграммах классов моделируют типы объектов.

А вот с ER диаграммами интереснее. То, что обозначается прямоугольником на ER диаграмме, -есть класс ТМ объектов. Поэтому неверно называть прямоугольник в ER модели существительным в единственном числе. Правильно называть существительным во множественном числе. Тогда модель будет такая:



И эта модель приближает нас к модели классов ТМ. Однако, связи между классами ТМ на самом деле не существует, а есть связи между объектами класса ТМ, и читаются они так: для каждого автомобиля найдется 4 связи с колесами в классе семантических связей под названием «Автомобиль имеет колесо», для каждого колеса существует только одна такая связь в этом классе.

Вывод: концептуальное моделирование в виде ER много ближе к логической парадигме, чем моделирование в виде диаграммы классов. Но ни тот ни другой метод моделирования не позволяет моделировать семантические отношения между объектами и классами объектов. Это является существенным ограничением современных моделлеров, которое необходимо устранять.

Комментарии (142)


  1. lair
    28.04.2015 12:24

    В терминах ООП говорят так: есть класс ООП автомобилей и есть класс ООП колес. Между этими классами ООП есть связь один к четырем. Связь называется: «автомобиль-колесо».

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

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

    Зачем? Для решения какой конкретной прикладной задачи это необходимо?


    1. maxstroy Автор
      28.04.2015 12:57

      Связи в UML есть. Они не могут не есть). Например, тут видно описание этих связей: Правда, тут же говорится, что связь между классами означает связь между объектами классов, но вот тут они перегнули палку. Если такая связь и есть, то она совершенно другая.


      1. lair
        28.04.2015 13:00
        +1

        А вы не путайте UML и ООП, хорошо? Если вы свое представление об ООП строите на UML, то лучше так и пишите — «в используемой мной UML-нотации», а не «в ООП».


        1. maxstroy Автор
          28.04.2015 13:02

          ОК, спаибо! Но я имел ввиду подход, а не программирование. Надо будет уточнять это.


          1. lair
            28.04.2015 13:36

            Подход тем более не в UML описывается.


            1. Duduka
              29.04.2015 12:08

              Любая программа — это взаимосвязь блоков и отношения частей (ваш К.О.). И ООП — не исключение, свойства отражают это отношение, но вводит еще и связь «хранит».


              1. lair
                29.04.2015 13:35

                Парадигма «вещей и связей» вообще одна из самых универсальных, так что не удивительно, что и ООП может быть выражено с ее помощью. Вопрос в том, надо ли подменять внутреннюю терминологию ООП терминологией более общей парадигмы.


                1. maxstroy Автор
                  29.04.2015 14:29

                  Термины ООП предназначены для описания кода. Они не предназначены для описания предметной области, отличной от кода. Попытки «натянуть» ООП на описание предметной области порождают термины, которые трудно себе представить. Например, наследование в классах. Нет наследования в природе, кроме того, которое возникает при размножении. Попытка аналитиков говорить на птичьем языке вызывает у меня удивление. Лично мне прикольно слышать «экземпляр этого молотка». Оставьте термины ООП для описания кода и все будет хорошо.


                  1. lair
                    29.04.2015 14:53
                    +1

                    Знаете, за последние пять лет единственный известный мне аналитик, который говорил о предметной области в терминах ООП — это вы.


                    1. maxstroy Автор
                      29.04.2015 15:18

                      Значит, для Вас нет ничего нового. Я пишу для тех, кто не знаком со способами описания предметных областей и хочет научиться этому ремеслу.


  1. boldachev
    28.04.2015 12:26

    Все же, мне кажется, вы нарушаете принцип логической парадигмы. Для того, чтобы зафиксировать количество колес на индивиде-автомобиль надо отнести его к классу «автомобили с 4 связями авто-колесо» или просто «с 4 колесами». Связь между индивидом (автомобилем) и классом может быть только «классификация» (отнесение индивида к тому или иному классу). Указанная вами связь «индивид имеет класс» в логической парадигме принципиально невозможна. Если вы хотите ее ввести, то говорите о иной парадигме.


    1. maxstroy Автор
      28.04.2015 12:43

      В математике мы часто встречаем связи между объектами и классами. Например, прямая и класс точек прямой, или множество монет и покупка. Мое мнение, что отсутствие в текстах подобной связи говорит об инерции мышления, а не о порочности такого способа мышления. И, если логическая парадигма строится на теории множеств, то подобная конструкция допустима. Иначе надо признать, что логическая парадигма строится не на теории множеств.


      1. boldachev
        28.04.2015 12:54

        В математике мы часто встречаем связи между объектами и классами.
        Но это не связи типа «прямая имеет класс точек», «покупка имеет множество монет».

        Связь логической парадигмы с теорией множеств заключается в том, что мы описание каждого объекта ведем через причисление его к тому или иному множеству/классу. Вы сами это декларировали в предыдущих статьях. Отношение «объект имеет класс» выходит за рамки логической парадигмы.
        Мое мнение, что отсутствие в текстах подобной связи говорит об инерции мышления, а не о порочности такого способа мышления.
        Да вы имеете полное право как угодно расширять рамки мышления и вводить новые парадигмы. Но это надо оговаривать отдельно, начиная с того, зачем это нужно и какие задачи вы собираетесь решать.


        1. maxstroy Автор
          28.04.2015 12:58

          Но это не связи типа «прямая имеет класс точек», «покупка имеет множество монет».


          Семантика связи — тема отдельная. Главное, что такая связь есть, и ее надо уметь моделировать


          1. boldachev
            28.04.2015 13:11

            Главное, что такая связь есть, и ее надо уметь моделировать
            С этого — с постановки проблемы — и надо начинать. Но вопрос-то заключается именно в том, что такой связи нет в логической парадигме. Это надо признать и строить другую, в которой имеются другие связи между объектом и классом/множеством кроме «классификация».


            1. dtestyk
              28.04.2015 17:09

              Поддерживаю, особенно если связей несколько, вообще не понятно, о каком множестве речь.
              Думаю, можно было бы рассматривать подмножество множества всех возможных кортежей вида автомобиль-колесо1-колесо2-колесо3-колесо4.


              1. maxstroy Автор
                28.04.2015 17:29

                Каждый кортеж что-то значит. Например, пусть есть Маша и Миша. Кортеж (Маша; Миша) может принадлежать классу кортежей с семантикой: «женаты». Кортеж (Миша;(Миша; Маша)) может принадлежать классу кортежей с семантикой: «отношение супруга к браку». Поэтому перечень объектов в кортеже, их порядок важны. Кортеж вида (автомобиль№1; колесо№1; колесо№2; колесо№3; колесо№4) может иметь определенную семантику, но надо явно проговорить какую. Иначе не ясно, о чем идет речь.


        1. Mrrl
          29.04.2015 10:30

          Но это не связи типа «прямая имеет класс точек»

          Давайте посмотрим. У прямой есть два свойства — с одной стороны, она определяет некоторое множество точек, с другой — у неё есть направление. Говорить, как учили в школе, что «прямая является множеством точек» не очень хорошо. Одна из причин — что у «множества точек» направления нет. В терминах ООП мы могли бы сказать, что прямая наследуется от множества точек. Математики будут возражать: например, проективная плоскость определяется как множество точек и множество прямых, связанных предикатом «точка лежит на прямой». Прямая там равноправна с точкой. Можно сказать, что у прямой есть интерфейс «множество точек». А можно сказать, что у прямой есть property «множество точек», так же как и property «направление». И если мы можем сказать «прямая имеет направление», то почему не верно, что «прямая имеет множество точек»? Да, так не говорят. Но разницы в типах связи «прямая — направление» и «прямая — множество точек» я не вижу.


          1. boldachev
            29.04.2015 20:42

            У прямой есть два свойства — с одной стороны, она определяет некоторое множество точек
            Это не свойство, а способ описания.
            И если мы можем сказать «прямая имеет направление», то почему не верно, что «прямая имеет множество точек»? Да, так не говорят. Но разницы в типах связи «прямая — направление» и «прямая — множество точек» я не вижу.
            Здесь проблема в слове «имеет». Да, сказать «прямая — множество точек» вполне можно — это означает, что мы можем представить/описать прямую как множество точек. Но «прямая имеет множество точек» выражает отношение часть-целое, мол есть некая прямая и у нее есть (не она сама есть, а у нее есть) множество точек.

            Так и с машиной и колесами: можно сказать, что машина есть множество ее деталей, но у машине есть класс колес, машина содержит класс колес принципиально некорректно. Отношение часть-целое может быть только между однородными сущностями. Вещь может быть частью вещи, множество может быть частью только множества.


            1. Mrrl
              29.04.2015 22:16

              Это не свойство, а способ описания.

              Это именно свойство. Говорить, что прямая определяется множеством точек можно не всегда.
              Например, в классификации кривых второго порядка «кривая» x^2+y^2=0 классифицируется как «пара пересекающихся комплексно сопряженных прямых». Каждая из этих прямых на плоскости имеет ровно одну точку (0,0) — но при этом прямые разные. А «пара параллельных мнимых прямых» x^2+1=0 вообще точек не имеет. Это не мешает прямым быть прямыми и участвовать в различных выкладках. То, что прямые при этом определяют какие-то множества на плоскости с комплексными координатами, чаще всего никого не интересует — все работают с уравнениями.
              А насчёт слова «имеет» — формулировку «прямая имеет направление» или «машина имеет цвет» вы тоже будете считать некорректной? Эти случаи трудно воспринять как отношение «часть-целое». Есть целая машина, и у неё есть цвет, цена, хозяин, порт приписки и дата первого запуска мотора. Все они относятся к машине так же, как множество её колёс. И как множество точек — к прямой.


              1. boldachev
                29.04.2015 22:34

                А насчёт слова «имеет» — формулировку «прямая имеет направление» или «машина имеет цвет» вы тоже будете считать некорректной?
                Проблема ведь не в словах. Сам maxstroy использует слово «имеет» как указание на то, что класс колес является частью машины. Посмотрите на рисунок, там написано «класс колес стоит на машине».


                1. maxstroy Автор
                  30.04.2015 09:04

                  класс колес является частью машины

                  В данном контексте я этого не говорил. Дело в том, что под «имеет» я имел ввиду слова заказчика. В его воображении машина имеет группу колес, что я и записал, Никакого другого смысла я в это не вкладывал. Правда, перед тем, как записать это, я проверил и спросил заказчика: Вам действительно не важно, если я переставлю колеса местами, или заменю одни колеса на другие? Он сказал, что ему по бую. Поэтому я и нарисовал связь между машиной и группой колес.


                  1. boldachev
                    30.04.2015 10:50

                    В данном контексте я этого не говорил.
                    Я понимаю, что контекст может быть разным, но в данном тексте вы продолжаете развивать идею записи "Класс объектов или объекты класса?", а там в комментариях вы написали:
                    @maxstroy: Есть класс колес. Есть автомобиль. Я говорю, что авто состоит из класса колес. (ссылка)
                    И на картинке в текущем тексте у вас связь между классом колес и автомобилем обозначена как «класс колес стоит на автомобиле». Причем тут заказчик? Вы же пытаетесь сформировать точный язык, строгую логику. И вам надо дать однозначный ответ на вопрос: может ли индивид (автомобиль №12) вступать с классом в отношение целое-часть.

                    Кстати, я не очень понимаю, почему вы вообще избегаете называть эту связь своим именем? Двигатель стоит на авто — это означает двигатель является частью авто.


                    1. maxstroy Автор
                      30.04.2015 10:56

                      В прошлой статье я имел ввиду совсем другой контекст. В данной статье я специально изменил его, чтобы не возникало лишних вопросов. «Стоит на» не равно «состоит из».


                      1. boldachev
                        30.04.2015 11:01

                        «Стоит на» не равно «состоит из».
                        Да, конечно, не равно. Но обе фразы («стоит на» и «состоит из») указывают на отношение «часть-целое», которое вы упорно не хотите обсуждать. Даже избегаете его произносить.

                        Повторю свой вопрос: может ли индивид (автомобиль №12) вступать с классом в отношение целое-часть?


                        1. maxstroy Автор
                          30.04.2015 11:04

                          Но обе фразы («стоит на» и «состоит из») указывают на отношение «часть-целое», которое вы упорно не хотите обсуждать

                          В данной статье я специально не обсуждаю эту тему. Это заготовка под статью, где я расскажу про все отношения «Часть-целое», которые мы используем в быту. Но пока рано — не все определения введены. Прошлая статья показала, что без полного введения всех сущностей, понять отношения часть-целое не удается. Поэтому отложим этот разговор до будущих времен. А сейчас обсуждаем только отношение «стоит на»


                          1. boldachev
                            30.04.2015 11:24

                            «Часть-целое», которые мы используем в быту.
                            Забавно. Это одно из первейших семантических отношений (см. например, тут). Куча книг и статей написано на эту тему.
                            А сейчас обсуждаем только отношение «стоит на»
                            Хорошо. Можно ли считать это положительным ответом на вопрос: может ли класс стоять на индивиде?. Если да, то требуется уточнение: класс стоит на индивиде (авто), так же как на авто стоит двигатель? Нужен ли слесарь, чтобы снять класс с авто? или достаточно просто удалить класс из онтологии на моделлере?

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


                            1. maxstroy Автор
                              30.04.2015 11:56

                              Мы обсуждаем семантику. Какие семантические отношения возможны и между чем? Берем термин «состоит из» и смотрим, между объектами каких классов возможно такое отношение. Берем термин «стоит на» и смотрим, между объектами каких классов возможны такие отношения. Берем термин «Похож на» и смотрим, между объектами каких классов возможны такие отношения. Логическая парадигма — это теоретико-множественный подход. В логической парадигме мы можем рассматривать любые концепты и анализировать их. В логической парадигме есть отношения «похож на», «стоит рядом», «женат» и так далее.


                              1. boldachev
                                30.04.2015 12:33

                                В логической парадигме есть отношения «похож на», «стоит рядом», «женат» и так далее.
                                Да какие угодно. Но все они выражаются через отнесение объекта к одному из классов: класс «похожие на Бреда Пита», класс «стоящие рядом с пивным ларьком», класс «женатые». Других отношений между индивидом и классом в логической парадигме нет. Это и есть теоретико-множественный подход.

                                А что такое класс стоит на автомобиле я даже представить себе не могу. Есть класс "колеса стоящие на авто" — его элементами являются колеса. Может быть класс "автомобили с 4 стоящими на нем колесами" — его элементами являются автомобили. В логической парадигме автомобиль может только входить в класс, но никак не включает класс в себя.

                                Последний контрольный вопрос: может ли в логической парадигме какое либо-другое отношение между индивидом и классом кроме индивид является элементом класса? (Я спрашиваю не про ваши соображения о возможных отношениях, а конкретно про логическую парадигму.)


                                1. maxstroy Автор
                                  30.04.2015 12:38

                                  А что такое класс стоит на автомобиле я даже представить себе не могу

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

                                  Термин «включает» требует определения. Также как термин «состоит из». Об этом я буду говорить в следующих статьях.
                                  может ли в логической парадигме какое либо-другое отношение между индивидом и классом кроме индивид является элементом класса?

                                  Отвечу: а в теории множеств есть такие отношения? Если есть в теории множеств, то есть и в логической парадигме. Примеры приводились ранее и не только мной.


                                  1. Mrrl
                                    30.04.2015 12:49

                                    В теории множеств класс колёс автомобиля можно построить с помощью схемы выделения, используя класс колёс вообще в качестве базового множества, а автомобиль — как часть формулы селекции. Но будет ли это считаться «отношением» между классом и автомобилем, это вопрос. Понятно, что можно записать такое отношение, вынеся автомобиль за пределы формулы, и сделав его аргументом отношения. Тогда про любой класс можно будет сказать, является ли он именно классом колёс и именно этого автомобиля.


                                  1. boldachev
                                    30.04.2015 12:50

                                    maxstroy: Я тоже не могу, но логика говорит о том, что такое возможно.
                                    Я этой логики не увидел.


                                    1. maxstroy Автор
                                      30.04.2015 13:51

                                      Я почти закончил описание дороги, которая приводит к этому выводу с очевидностью. Именно этому будет посвящена следующая статья.


                                1. Mrrl
                                  30.04.2015 12:41

                                  А в конструкции «класс колёс, стоящих на конкретном автомобиле» какое отношение между классом колёс и индивидом автомобиля? Явно не «индивид является элементом класса». Или подобное отношение («индивид является частью предиката, определяющего класс») в логическую парадигму не входит?


                                  1. maxstroy Автор
                                    30.04.2015 12:48

                                    в конструкции «класс колёс, стоящих на конкретном автомобиле» какое отношение между классом колёс и индивидом автомобиля?

                                    Отношение «стоит на».


                                    1. Mrrl
                                      30.04.2015 12:51

                                      А в конструкции «множество чисел, больших X»? Сказать, что множество больше числа, мы не можем.


                                      1. maxstroy Автор
                                        30.04.2015 14:07

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


                                        1. 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.»


                                          1. maxstroy Автор
                                            30.04.2015 15:02

                                            спасибо! Я не читал оригинал, сожалею. Вы правы. Вопрос в том, кто и как определит термин. Главное — определить его. Есть общеупотребительные термины, есть те, которые создаются под задачу. Если необходимо создать новый термин, нам ничто не мешает это сделать. Главное — чтобы он был нужен и не был синонимом уже существующего.

                                            Супремум и инфинум.
                                            Наименьшее число, ограничивающее сверху некоторое множество чисел называется точной верхней гранью
                                            или супремумом этого множества. Двойственным образом наибольшее число ограничивающее снизу неко-
                                            торое множество чисел называется точной нижней гранью или инфинумом этого множества. Супремум множества A обозначается sup A, инфинум множества A обозначается inf A.

                                            В этих определениях вводится семантическая связь между числом и множеством чисел.


                                  1. boldachev
                                    30.04.2015 12:52

                                    А в конструкции «класс колёс, стоящих на конкретном автомобиле» какое отношение между классом колёс и индивидом автомобиля?
                                    Это название класса. Назовите так «колеса автомобиля» или «КА»


                                    1. Mrrl
                                      30.04.2015 12:56

                                      Не могу. Для разных автомобилей будут разные классы, а сами автомобили названия не имеют, это всего лишь объекты — в программе или в мире. Поэтому включить автомобиль в название не удастся. И определить по названию «колёса автомобиля#812», какой автомобиль использовался в построении, тоже не получится. А это вполне конкретный автомобиль. Связанный с этим классом, но не входящий в него.


                                      1. boldachev
                                        30.04.2015 14:11

                                        To Mrrl
                                        Мне кажется, тут у нас получилась какая-то каша. Название класса — это просто название, ну хоть «Hu65FDE6». Способ задания элементов класса тут простой — перечисление его элементов (колеса на конкретном авто). Поэтому ваш вопрос:

                                        А в конструкции «класс колёс, стоящих на конкретном автомобиле» какое отношение между классом колёс и индивидом автомобиля?
                                        Не имеет смысла. Он про название или про элементы класса. Или проще ответить так: никакого нет отношения. Поскольку это просто класс и для фиксации его отношений с другими сущностями надо как-то определять эти отношения. В процедуре задания класса и тем более в его названии они не определены.


                                        1. Mrrl
                                          30.04.2015 14:25

                                          Способ задания элементов класса тут простой — перечисление его элементов (колеса на конкретном авто).

                                          Такой способ задания будет неустойчив к отвинчиванию колеса и использованию его на баррикадах — класс по-прежнему будет считать, что это колесо всё ещё относится к этому автомобилю.
                                          Но класс можно задать как-то так:
                                          Car thisCar;

                                          class wheelsOfCar=(class Wheel).RestrictedBy(x => x.AttachedTo(thisCar));

                                          (синтаксис условный). Тогда в класс будут входить именно те колёса, которые стоят сейчас на конкретном автомобиле. И какое теперь отношение между автомобилем и классом?


                                          1. maxstroy Автор
                                            30.04.2015 15:07

                                            А это приводит нас к следующей задаче: необходима историйность класса. Что и когда входило в этот класс?


                                            1. Mrrl
                                              30.04.2015 15:25

                                              Что и когда входило в класс рациональных чисел?

                                              Если есть возможность перехватить событие «колесо добавлено в класс/удалено из него», то хранить историю как класса, так и колеса не проблема. Если нет — то перечислить все элементы класса не проще, чем все целые числа в программе.


                                              1. maxstroy Автор
                                                30.04.2015 15:41

                                                Да, это вопрос учета.


                                          1. boldachev
                                            30.04.2015 15:27

                                            Такой способ задания будет неустойчив к отвинчиванию колеса
                                            Не понял. Что значит «неустойчив»? Отвинтили колесо — в классе «Hu65FDE6» стало на один элемент меньше. Где проблемы?
                                            И какое теперь отношение между автомобилем и классом?
                                            Никакого. В логической парадигме может быть только одно отношение: объект является/не является элементом класса. Если вы о чем-то другом (не о логической парадигме, которую излагает maxstroy), то тогда и разговор будет другим.


  1. potapuff
    28.04.2015 15:46

    Поправьте меня, но глядя на вашу ЕР диаграмму: нельзя добавить автомобиль, пока нет колес и нельзя добавить колесо, пока нет автомобиля.


    1. maxstroy Автор
      28.04.2015 16:05

      В воображаемом мире, который мы описываем, автомобиль создается вместе с колесами.


      1. potapuff
        28.04.2015 20:53

        Одновременно вставлять записи в две таблицы можно, действительно, только в воображаемом мире.


        1. maxstroy Автор
          28.04.2015 20:58

          Концептуальная модель предметной области не моделирует таблицы. Это заблуждение, что концептуальная модель имеет какое-то отношение к хранению данных. Таблицы моделирует другая модель: физическая, или модель данных. Но даже в физических таблицах одновременное добавление записей возможно и порой необходимо. Это реализуется механизмом транзакций.


          1. lair
            28.04.2015 21:52

            Вообще-то, транзакция над двумя таблицами не дает одновременного добавления записей, только согласованное. А по времени оно (если записи вставляются на одном сервере) последовательное.


            1. maxstroy Автор
              28.04.2015 21:55

              Конечно, но для пользователя они добавляются обе вместе, или не добавляются. Невозможно добавить одну, не добавив другую. Иначе — коллизия.


              1. lair
                28.04.2015 21:59

                Вот только эта невозможность добавить не имеет ничего общего с физическими таблицами. И, что важнее, не означет возможность одновременной вставки записей в эти таблицы.

                Так что, хотя на уровне домена чтобы объекты были согласованными, они должны содержать заполненные встречные связи, на уровне физической модели такое ограничение (и такая операция) как минимум в ряде реляционных СУБД невозможно.


                1. maxstroy Автор
                  28.04.2015 22:01

                  Хорошо, пусть так. я не претендую на моделирование данных. Мои работы направлены на моделирование предметных областей, где нет ни таблиц, ни транзакций, ни записей.


                  1. lair
                    28.04.2015 22:03

                    Я очередной раз прошу вас не делать утверждений в тех областях, в которых вы не разбираетесь.


                    1. maxstroy Автор
                      29.04.2015 01:46

                      Качество диспута зависит от всех сторон-участников. Если бы участники оставались в рамках обсуждаемой темы, было бы проще. Но в данной ветке зачем-то обсуждается модель данных, в параллельной — в чем рисовать модели. С акынами трудно вести конструктивный диалог. Так что пока — поем каждый свою песню.


  1. mactator
    28.04.2015 21:19

    Похоже на Sybase Power Designer, дороговатый инструмент для рисования диаграмм.


    1. maxstroy Автор
      28.04.2015 21:35

      Не то слово! Но я склоняю голову перед теми, кто сделал этот продукт! Если почитать хелпы, становится ясно, сколько времени потрачено на вылизывание платформы. Очень точные и очень лаконичные термины. Сшито все очень качественно. Качественно по сравнению с другими продуктами. Но по абсолюту можно еще доработать.


      1. mactator
        28.04.2015 21:38

        А генерацию кода делали? Именно там проявляется смысл всех этих стрелочек и черточек, связей один ко многим и прочие прелести UML


        1. maxstroy Автор
          28.04.2015 21:43

          от концептуальной модели надо перейти к логической, затем к физической и только на ее основе получится генерация структур данных. На основе концептуальной модели сгенерировать структуру данных нельзя. Это про разное, как я уже говорил ранее.


          1. SamKrew
            28.04.2015 23:44

            Тогда рисовать можно и в бесплатном draw.io


  1. rolechka
    29.04.2015 10:00

    Любое моделирование должно иметь цель, тогда уже легче ответить на вопросы как смоделировать. Это может быть просто познание мира, автоматизация, моделирование ситуация «что если», передача знаний ребенку, пердача знаний другому специалисту и многое другое.

    Также если говоритьь о концептуальной модели, то это инструмент для отображения общего понимания предмета разговора, если говорить кратко.
    Потому вопросы:
    1. Какая ваша цель моделироавания?
    2. Что дают дополнительные элементы на диаграмме? Почему мало 2х элементов автомобиль и колесо плюс связи 1-4 (вот прям так и написать на связи жестко, концептуальное моделирование это разрешает).
    3.Зачем производить концептуальную модель в виде ЕР диаграммы?


  1. maxstroy Автор
    29.04.2015 11:05

    Какая ваша цель моделирования?

    Я использую критерий: способен ли я создать представление модели без искажения смысла? Если клиент говорит одно, а я в модели рисую другое, — то либо я плохой аналитик, либо инструмент моделирования плох. Я рассматриваю те кейсы, в которых, даже, если бы я и хотел записать слова клиента корректно, то не могу по причине того, что инструмент моделирования мне этого не позволяет. И говорю, чего именно мне не хватает.
    Почему мало 2х элементов автомобиль и колесо плюс связи 1-4

    Мы правильно понимаем, что вы связали автомобиль и колесо четырьмя связями? Но у автомобиля 4 колеса, а не одно колесо. Поэтому вопрос не понятен.
    Зачем производить концептуальную модель в виде ЕР диаграммы?

    Причина, по которой я предпочитаю ER модель, я указал: это то, что она ближе к моделированию классов, чем диаграмма классов UML.


    1. rolechka
      30.04.2015 19:03

      про ясную цель моделирования все же ничего не сказано. цель — создать представление модели без искажения смысла? можно ли так вообще формулировать цель? веь взяв любой объект можно сделать миллион его разных моделей. Тот же автомобиль —
      — если хотим детям объяснить что такое КРАЗ — можно показать игрушечную модельку КРАЗа не таща ребенка на производство
      — если нужно запрограммировать сайт для продажи колес автомобиля, то нужна модель не самого автомобиля а данных про автомобиль которые нужно сохранить в базе (если упрощенно)
      — если мы рисуем схему ДТП то на ней машинка в виде прямоугольника с палочками в виде колес — это тоже модель.
      и так далее. о каком искажении смысла идет речь?
      при построении любой модели важно:
      а) понимать настоящую цель ее использования и применения
      б) точку зрения того кто делает модель ()для руководителя и для подчиненного модель одного и того же почти всегда будет разной)
      в) найти способ максимально упрощенно представить модель чтобы в ней не было ничего лишнего что не касается вашей цели
      г) сделать это наглядно

      Если клиент говорит одно… тут похоже есть конкретная ситуация с клиентом, которую может быть стоит разобрать?
      Клиенту на модели такого вида обычно вообще все равно, используем их мы — аналитик, разработчики, для обмена знаниями, построения программ и т.п.

      Последняя диаграмма в приведенной статье — вот о ней я говорила. Она вполне достаточна для большинства задач связанные с моделированием машины. просто на линии поставить слева 1, справа 4 и все.

      Причина, по которой я предпочитаю ER модель, я указал: это то, что она ближе к моделированию классов, чем диаграмма классов UML.

      погодите… Вам нужно промоделировать классы? или все же данные для хранения информации?
      Концептуальная модель — это общая диаграмма на которой может быть ЧТО УГОДНО и КАК УГОДНО и это принципиально, она может отражать любой срез который хочет аналитик без привязок. Обычно полезна вначале понимания предметной области когда еще не понятно где точно функция, где информационный поток, где какие роли.

      Я просто почему пишу это — в Вашей статье есть некоторые аспекты которые начинающие наверняка неправильно истолкуют. Если цель поделиться знаниями для подрастающего поколения — я внесла бы коррективы на этот счет.


      1. maxstroy Автор
        30.04.2015 19:28

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

        Боюсь, что Вы неправильно меня поняли. Я не пытаюсь создавать модель. Модель создает заказчик. Моя задача — записать эту модель без искажений. Поэтому, если заказчик говорит, что у мотопупки сверху чвакалка, — моя задача указать это в представлении модели, а не пытаться придумывать модель за заказчика. Вторая задача — это верификация модели. На основе проверки я могу задавать уточняющие вопросы, чтобы прояснить детали, но ничего не придумываю сам. Это тот кейс, который я рассматриваю сейчас. После того, как мы научимся записывать модели за заказчиком, нам предстоит вторая задача — научиться придумывать их самостоятельно.


        1. lair
          30.04.2015 23:48

          У заказчика как раз в норме нет модели, у него есть работающий (или не очень) процесс, нуждающийся в (простом случае) автоматизации.


          1. maxstroy Автор
            01.05.2015 07:09

            Возможно, поэтому Вы меня не понимаете, потому что пытаетесь решить не ту задачу, которую решаю я. У меня не стоит задача автоматизации процесса. У меня стоит задача фиксации модели. То есть, я концентрирую свое внимание на записи концептуальной модели корректным образом тогда, когда она уже существует в голове у заказчика.


            1. lair
              01.05.2015 10:18

              Я и не говорил, что у вас стоит задача автоматизации процесса.

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


              1. maxstroy Автор
                01.05.2015 10:26

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


                1. lair
                  01.05.2015 10:43

                  Кто является заказчиком — не важно

                  Важно, потому что от этого зависит, что именно вам как аналитику придется делать и как.

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

                  Вы серьезно? Я всегда считал, что (а) математика не занимается описанием мира, (б) математическая логика не является способом описания мира и (ц) математическая логика не так уж приближена к «нашему способу мышления».

                  Так что нет, математика — не обязательный пререквизит для корректного построения моделей. Особенно учитывая, что корректность модели — не такая очевидная характеристика, как вам того бы хотелось.


                  1. maxstroy Автор
                    01.05.2015 10:49

                    Мне всегда казалось, и так меня учили, что математика — это язык философии. Я не готов принять тот факт, что математика оторвана от реальности. Это кажется мне бессмысленным.


                    1. lair
                      01.05.2015 10:54

                      так меня учили, что математика — это язык философии

                      Это излишне романтизированное представление о математике.

                      Я не готов принять тот факт, что математика оторвана от реальности.

                      А я и не говорил, что математика оторвана от реальности, я всего лишь сказал, что математика не занимается описанием мира.


                      1. maxstroy Автор
                        01.05.2015 10:58

                        Это излишне романтизированное представление о математике.

                        Не согласен.


                        1. boldachev
                          01.05.2015 13:10

                          так меня учили, что математика — это язык философии
                          Это излишне романтизированное представление о математике.
                          И это излишне примитивизированное представление о философии.

                          Хотя можно ответить и проще: откройте тексты философов и поищите там формулы ))


                          1. maxstroy Автор
                            02.05.2015 12:32

                            я не хочу сказать, что все концепты философии можно описать формулами, но я утверждаю, что все математические концепты имеют философский смысл. То есть мое утвержден ие необходимое, но не достаточное.


                            1. lair
                              02.05.2015 12:55

                              Если не все концепты философии можно описать формулами, то математика не может являться языков философии, потому что она не способна ее выразить.

                              Не говоря уже о том, что из тезиса «все математические концепты имеют философский смысл», пусть и спорного, ровным счетом никак не вытекает, что математика — это способ описания мира.


                              1. maxstroy Автор
                                03.05.2015 06:09

                                Я лишь утверждаю, что, если мы хотим научиться моделировать пространство-время, нам придется воспользоваться достижениями математики. Или их повторить. Мне кажется, что это очевидно. Если Вы считаете, что математика в этом не поможет, то нам не стоит продолжать дискуссию.


                                1. lair
                                  03.05.2015 17:51

                                  Я лишь утверждаю, что, если мы хотим научиться моделировать пространство-время, нам придется воспользоваться достижениями математики.

                                  Во-первых, не математики, а физики. Математика не оперирует временем. Во-вторых, к математической логике это отношения не имеет.

                                  Ну и в-третьих, не все моделируют пространство-время в своих задачах.


                                  1. Mrrl
                                    03.05.2015 18:21

                                    В каких-нибудь случайных процессах время очень даже присутствует. И в дифференциальных уравнениях переменная, по которой идёт дифференцирование, часто обозначается буквой t. Случайность? Не думаю.


                                    1. lair
                                      03.05.2015 18:25

                                      И все же, математика per se оперирует некими величинами. Геометрия (часть математики) оперирует величинами, ассоциированными с пространством.

                                      (при этом нет, не случайно, что дифференцирование идет по t, потому что дифференцирование хорошо ассоциируется с физикой; но если математическая формула решает какую-то прикладную задачу, то это еще не значит, что сама математика оперирует этими задачами, это всего лишь значит, что прикладная задача сводима к математической подменой терминов)


                                      1. maxstroy Автор
                                        03.05.2015 18:32

                                        Я думаю, что данная тема бессмысленна в рамках данного контекста. Все, что я хотел сказать. я сказал в статье. Обсуждение математики, или физики в данном контексте выглядит лишним)


                                      1. maxstroy Автор
                                        03.05.2015 18:35

                                        Тема беседы: может ли объект быть связан с классом объектов семантической связью. Обсуждаем.


                                        1. lair
                                          03.05.2015 18:38

                                          Ответ на этот вопрос зависит от определения понятия «объект» и «класс объектов» в конкретной системе моделирования, а так же от решаемой задачи. Есть методологии, которые запрешают связь объекта с классом объектов, но при этом успешно решают все поставленные прикладные задачи, не испытывая проблем из-за этого ограничения. Так что обсуждать тут нечего.

                                          Мне существенно интереснее вопрос, который я задал вам выше (и на который вы не ответили): для решения какой прикладной задачи вам понадобилась такая связь?


                                          1. maxstroy Автор
                                            03.05.2015 18:45

                                            для решения какой прикладной задачи вам понадобилась такая связь?

                                            Давайте оставаться в рамках темы. Тема: возможность такой связи. Я бы предпочел обсуждать эту тему.


                                            1. lair
                                              03.05.2015 18:53

                                              Абстрактная [не]возможность этой связи показана мной в комментарии, на который вы отвечаете. Поэтому, повторюсь, обсуждать там нечего.

                                              Чтобы обсуждать практическую возможность этой связи в конкретном методе моделирования, необходимо:

                                              • строго определить понятия «объект» и «класс объектов»
                                              • строго определить понятие «семантическая связь»


                                              1. maxstroy Автор
                                                03.05.2015 19:13

                                                строго определить понятия «объект» и «класс объектов»

                                                Когда я задал этот вопрос математикам, они ответили, что термин класс определяется аксиоматически. А термин объект определен как 4-Д объем пространства-времени.
                                                строго определить понятие «семантическая связь»

                                                Это та связь, которая в воображении субъекта связывает (что связывает, описываю я в своих статьях) смыслом. В классике под объектами связи рассматриваются слова, знаки, и прочие информационные объекты. В моем случае я смотрю на то. что обозначают эти термины и смотрю, как мы связываем то, что обозначено терминами.


                                                1. lair
                                                  03.05.2015 19:15

                                                  Да, можно создать такую парадигму моделирования, в которой такая связь будет возможна.


                                                  1. maxstroy Автор
                                                    03.05.2015 19:19

                                                    Допустив это, я хочу посмотреть, к каким следствиям это нас приведет


                                                1. Mrrl
                                                  03.05.2015 19:21

                                                  Не надо спрашивать у математиков, что такое класс. Особенно в контексте теории множеств :) К реальному миру это понятие отношения не имеет и никогда иметь не будет.


                                                  1. maxstroy Автор
                                                    03.05.2015 19:31

                                                    пока не знаю. Ответа я пока не получил.


                                        1. Mrrl
                                          03.05.2015 18:46

                                          Если идти от теории множеств, то там любой объект является множеством. Множество объектов — такой же объект, как и любой другой. Если класс, о котором вы рассуждаете, является отражением понятия «множество», то он является объектом, равноправным с остальными.


                                          1. maxstroy Автор
                                            03.05.2015 18:57

                                            Именно это я пытаюсь донести до слушателей. Пока читатели разделились на тех, кому трудно обсуждать эту тему по причине недостаточной концентрации, тех. кто пока не смог допустить этот тезис как допустимый и того, кто задал вполне резонный вопрос о реальности групп. Болдачев, огромное ему спасибо, натолкнул меня на великолепный пример. который я рассмотрю в следующей статье, где докажу со всей очевидностью, что мы, человеки, рассматриваем объекты и классы объектов как «равнонастоящие» в отличие от типа объектов. И это довольно трудно для понимания.


                                            1. Mrrl
                                              03.05.2015 19:18

                                              Честно говоря, я не могу увидеть особого смысла в этом вопросе. В случае колёс автомобиля, первый вопрос, который у меня возникает (если возникает вообще) — идентификация этого объекта (класса): чем он определяется, как отличается от других, в какой период он существует, возможно ли его «расщепление» (когда в двух разных контекстах он станет различным). Следующим этапом (уже во время программирования) будет его представление, момент и способ создания, контроль за изменением, интерфейсы… И эти детали могут меняться: при очередном рефакторинге вполне можно переключиться с явного хранения множества, «стоящего на автомобиле» на представление в виде «гораздо более широкий класс+предикат». На адекватность модели это нисколько не повлияет, это всего лишь детали реализации.


                                              1. maxstroy Автор
                                                03.05.2015 19:36

                                                С точки зрения моделирования — все просто. Допустив существование классов объектов, можно построить много интересных конструкций. Но меня интересуют те из них, которые всегда существовали, но не были распознаны нами как классы. Статья разгонная. Основной материал будет посвящен именно таким объектам.


                                                1. Mrrl
                                                  03.05.2015 19:48

                                                  Я вижу два варианта. Либо разрывается связь «автомобиль — колесо», и теперь «автомобиль стоит на колесе» раскрывается в «колесо принадлежит множеству колёс автомобиля», либо класс определяется, как «колёса, стоящие на этом автомобиле», и автомобиль является его атрибутом (не знаю, как это вкладывается в конкретную модель). Тогда автомобиль этого класса не содержит (хотя имеет право знать о нём), и работать с этим классом, как с коллекцией мы тоже не можем — можем только проверить, принадлежит ли колесо этому классу (и для этой проверки нам нужен автомобиль).


                                                  1. maxstroy Автор
                                                    03.05.2015 20:08

                                                    Я очень благодарен Вам за Ваше терпение. Однако, мы можем поступить двумя способами: поговорить лично голосом, чтобы я понял Ваш тезис лучше и мог бы корректно на него ответить. Или мы можем подождать следующей статьи. В ней я дам первый очень важный намек, и ттогда станет очевидно, к чему я так старательно веду.


                                                    1. Mrrl
                                                      03.05.2015 20:14

                                                      Посмотрим, что за намёк…


                                                    1. Mrrl
                                                      03.05.2015 21:06

                                                      Вопрос такой: можете ли вы вообще определить класс, как пересечение двух классов? Например, класса деталей автомобиля и класса всех колёс?
                                                      Если да — то приведёт ли добавление к классу деталей автомобиля ещё одного колеса к автоматическому изменению класса колёс автомобиля?
                                                      Если тоже да — то не противоречит ли это тому, что класс определяется исключительно перечислением своих элементов?


                                                      1. maxstroy Автор
                                                        03.05.2015 21:28

                                                        пересечение двух классов: деталей автомобиля и класса всех колес — дает нам класс из 4-х колес.

                                                        приведёт ли добавление к классу деталей автомобиля ещё одного колеса к автоматическому изменению класса колёс автомобиля?

                                                        Это зависит от метода учета.
                                                        не противоречит ли это тому, что класс определяется исключительно перечислением своих элементов?

                                                        Класс, или группа также могут быть разложены на темпоральные части. как и объект. В какой-то момент времени есть 4 колеса в классе, в какой-то — 5. Я не вижу в этом сложности. а Вы?


                                                        1. Mrrl
                                                          03.05.2015 21:44

                                                          В какой-то момент времени есть 4 колеса в классе, в какой-то — 5.

                                                          Вопрос о согласованности. Если на диаграмме (в модели) можно указать, что класс колёс автомобиля — это всегда пересечение двух классов, и, следовательно, события изменения класса деталей автомобиля и класса его колёс происходят синхронно — это одно дело. Модель получает математическую окраску, и если на диаграмму добавить достаточное количество логических и теоретико-множественных связок (включая кванторы — «любой элемент класса» и «некоторый элемент класса»), то можно будет описать всё, что нужно (в случае колёс автомобиля — просто показать класс деталей (он задаётся явным перечислением), класс его колёс (строится как пересечение), и то, что пересечение классов имеет мощность 4).
                                                          Если же такой способ описания класса недопустим… то утверждение о 4 колёсах тоже можно нарисовать. Закодировав пересечение с помощью кванторов и связки «A лежит в B». Тогда класс колёс автомобиля возникнет как временная безымянная сущность. И это будет громоздко и непонятно.
                                                          Есть более сложная задача — смоделировать утверждение, что все 4 колеса должны быть одной марки. Предполагается что класс классов колёс, сгруппированных по маркам, у нас есть.


                                                          1. maxstroy Автор
                                                            03.05.2015 22:03

                                                            Сорри, но мне трудно понять вопрос. Все, что я читаю, верно. Можно указывать как пересечение, можно перечислять объекты. Правда надо делать оговорку, что данное перечисление соответствует такому-то времени.

                                                            Есть более сложная задача — смоделировать утверждение, что все 4 колеса должны быть одной марки

                                                            Это делается очень просто: указав класс, к которому относятся данные колеса: класс «Бриджстаунмля»


                                                            1. Mrrl
                                                              03.05.2015 22:26

                                                              Это делается очень просто: указав класс, к которому относятся данные колеса: класс «Бриджстаунмля»

                                                              Это же совсем другое утверждение! Оно запретит существование автомобиля, все колёса которого относятся к классу «Лонгюра». Или какому-нибудь пока неизвестному классу.


                                                              1. maxstroy Автор
                                                                03.05.2015 22:30

                                                                Понял!!! Вы создаете мир на основе модели, а я модель на основе мира! Разве нет?


                                                                1. Mrrl
                                                                  03.05.2015 22:42
                                                                  +1

                                                                  В какой-то мере. Если в модели написано «любая ворона — чёрная», значит, в мире не может быть белых ворон. Иначе либо модель, либо мир неправильны.


                                                                  1. maxstroy Автор
                                                                    04.05.2015 08:28

                                                                    колеса одних автомобилей могут относиться к одной марке (марка колес связана с соответствующим классом), а могут — к другой марке. Если мы говорим, что все автомобили оснащены колесами одной марки, то мы утверждаем, что автомобили с другими колесами — это автомобили уже не этого класса, но они (автомобили) не «запрещены» в принципе.


                                                                    1. Mrrl
                                                                      04.05.2015 09:04

                                                                      То есть, когда автомобилю меняют зимнюю резину на летнюю, он может поменять класс. Бедный пользователь, ему теперь два раза в год придётся перерегистрировать машину. А ведь как просто было бы написать:
                                                                      ? WT ? WheelTypes: ? W ? (CarDetails ? Wheels): W ? WT
                                                                      и не привязываться к конкретной марке резины.


                                                                      1. maxstroy Автор
                                                                        04.05.2015 09:08

                                                                        Мы упираемся в метод учета. Как скажет учетчик, так мы и поступим. Скажет, что автомобиль меняет класс со сменой колес, учтем это так. Скажет, что не меняет, учтем это так. Например, автомобиль требует перерегистрации при смене двигателя. Это требование метода учета. С тем же успехом можно ввести закон о перерегистрации при смене колес.


                                                                        1. Mrrl
                                                                          04.05.2015 09:20

                                                                          Но сможете ли вы сделать то, что сказал учётчик? Поддержит ли модель утверждение, что все колёса должны быть одного класса, но этот класс может быть любым, и класс автомобиля не зависит от класса резины?


                                                                          1. maxstroy Автор
                                                                            04.05.2015 09:28

                                                                            Вы имеете ввиду, что колеса должны быть одной марки? Иначе не понятно. Ведь класс — это произвольная группа. которая может включать все что угодно, в том числе и конкретные колеса. Поэтому требование

                                                                            колёса должны быть одного класса

                                                                            само по себе бессмысленно


                                                                            1. Mrrl
                                                                              04.05.2015 09:36

                                                                              Да, здесь «один класс» принадлежит классу марок колёс (точнее, классу классов колёс соответствующих марок).


                                                            1. 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 ...

                                                              (в этом случае класс колёс будет базовым по отношению к деталям автомобиля, и автомобиль будет стоять на классе колёс, а не на отдельных колёсах)
                                                              Получаются слегка разные модели. И разные связи между автомобилем и классом колёс.


                                      1. Mrrl
                                        03.05.2015 18:40

                                        Геометрия оперирует теми величинами, которые ей дадут в качестве координат. Задачи линейной аппроксимации, кластеризации, многофакторного анализа и т.п. формулируются и решаются в геометрических терминах, хотя моделируемые величины ничего общего с физическим пространством могут и не иметь.
                                        Время вполне может быть одной из координат в геометрической постановке задачи. Или более, чем одной. Конечно, то, как представляется физическое время в конкретной модели, зависит от способа построения модели, но чтобы потом с этим представлением времени работать — математика точно пригодится.


                                        1. lair
                                          03.05.2015 18:41

                                          Вы говорите о сведении задачи к математической. Это не означает, что сама задача выражена в математических терминах.


                                          1. Mrrl
                                            03.05.2015 18:53

                                            Согласен. Модель может быть не только математической, а выражена в виде каких-нибудь тонких структур, или притч из Библии или сур Корана, или ролевой игры… При работе с такими моделями, наверное, можно обойтись и без математики. Но и компьютер в этой работе вряд ли поможет.


                                        1. dtestyk
                                          04.05.2015 00:37

                                          время может быть временем, как в анализе временных рядов


                            1. boldachev
                              02.05.2015 13:11

                              Тогда надо было написать «философия — это язык математики» ))

                              А вообще философский смысл можно отыскать везде. А вот в обратную сторону не получится: философия невыразима на нефилософском языке. И на математическом.


                              1. maxstroy Автор
                                02.05.2015 13:22

                                Ну да, трудно поспорить). Философского языка нет. Как только он появится, философские концепты автоматом будут формализованы. Философия тем и хороша, что она не замыкается на формальной логике и формальных выводах. Просто потому что наше восприятие и наше мышление — не есть способы вывода.


                                1. boldachev
                                  02.05.2015 13:26

                                  Как это философского языка нет? Не на птичьем же языке написаны все философские тексты? ))) Еще скажите, что нет языка музыки, поэзии, живописи… И как язык искусства, так и язык философии никогда не будет формализован. Хотя локально философские системы вполне рациональны.


                                  1. maxstroy Автор
                                    02.05.2015 15:59

                                    Про язык философии я бы с радостью послушал. Я понятия не имею, на что его положить и как его позиционировать. У меня нет ни сил ни возможности понять это. Поэтому я буду плескаться на поверхности мелководья, где игры разума породили устойчивые структуры, которыми можно забавляться, — формальный язык.


                                    1. dtestyk
                                      02.05.2015 17:35

                                      возможно, вам понравятся труды Аристотеля, обратите внимание на сам ход рассуждений


                                      1. maxstroy Автор
                                        03.05.2015 06:10

                                        Я читал их. Но это все равно, что изучать математику по трудам Евклида. Как исторический трактат интересен, но как современное состояние искусства — уже не катит.


        1. rolechka
          01.05.2015 10:49
          +1

          Записать модель без искажений… а где вы определили уровень детализации?
          Без искажений вообще — это показать сам автомобиль. А так всегда будут искажения зависящие от целей моделирования.

          Задача «просто сделать модель» — кому это нужно? Заказчику не нужно, другим тоже. Если только Вам, тогда это не несет полезности для общественности.

          Вобщем мой меседж в том что должна быть цель моделирования, как описано во всех методологиях моделирования, той же АРИС.


          1. maxstroy Автор
            01.05.2015 10:56

            Записать модель без искажений… а где вы определили уровень детализации?

            Вы путаете модель и ее представление. Я не говорю о моделировании. Я говорю о записи моделей, или об их представлении. Степень детализации определяет моделировщик, он же решает вопросы о непротиворечивости модели. Я же говорю только о записи представления этой модели, модели. созданной в другом процессе. Вы же смешиваете два процесса: создание модели и ее записи.


            1. lair
              01.05.2015 11:07

              Чтобы «записать» модель, нужно, чтобы она была «построена» в тех же терминах, в которых вы будете ее «записывать».


              1. maxstroy Автор
                01.05.2015 11:22

                Хороший вопрос. Вы знаете исследования на эту тему? То, что мне ответил психолог, звучит так: запись модели будет отличаться для разных целевых групп. Если я имею модель шамбалы, но обращаюсь к аборигенам, не имеющим органов восприятия шамбалы, то моя модель будет строиться на языке аборигенов по принципу аналогий. «Знаете, что такое апельсин? так вот самолет — это штука, совершенно не похожая на апельсин!» Иногда, чтобы передать модель приходится рассказывать метод приобретения аппарата восприятия, на основе которого потом можно будет передать и модель. Поэтому Ваш тезис верен только в том случае, если тот, кто передает модель и тот, кто ее принимает, используют один и тот же понятийный аппарат и один и тот же аппарат восприятия. В противном случае — модель и представление модели будут отличаться как понятиями, так и конструкциями.


                1. lair
                  01.05.2015 12:48

                  Я об этом и говорю: если представление модели отличается от модели, то оно является другой моделью. Что возвращает нас к тезису, что задача аналитика — создание модели, а не ее запись.


                  1. rolechka
                    01.05.2015 12:53

                    Поддерживаю полностью lair.
                    Все просто — есть обьект реальный — автомобиль и есть миллион разных его моделей в зависимости от целей и задач для чего нужны эти модели, а какую модель сделать — собственно это и есть главная задача аналитика.


            1. rolechka
              01.05.2015 12:49

              Давайте не переходить на личности. Я исхожу из того что все тут грамтные думающие люди и мы ведем полезную дисскуссию.

              Насчет «представления модели». Можете дать определение и ссылку на определение данного понятия? В терминах моделирования предметных областей используют понятия «представление знаний», «модель».
              Как-то не стыковуется пока что — получается что представление модели это модель модели. Зачем это? Если вы говорите о визуальном представлении модели — так это и емть модель ))) Ивопрос то вобщем-то не в этом. Вопос в том что если что-то моделируется то это для чего-то нужно, для передачи знаний, для автоматизации, для исследования зависимостей или будь-чего.


              1. maxstroy Автор
                02.05.2015 12:41

                Насчет «представления модели». Можете дать определение и ссылку на определение данного понятия?

                В ИСО 15926 введен такой термин и вот пример его применения: Но это не все, я спрашивал много людей по поводу различения модели в башке и ее представления на бумаге, в кирпиче, или глине и все согласны с тем, что модель в башке и ее представление в натуре — разные вещи. Так что мне это просто очевидно.


      1. maxstroy Автор
        30.04.2015 19:37

        Вам нужно промоделировать классы? или все же данные для хранения информации?

        Мне нужно моделировать предметную область. Предметной областью может быть что угодно: настроение, галлюцинации, заводы… Концептуальная модель как раз для этого предназначена. Она не моделирует данные, она моделирует предметную область.


  1. vvagr
    29.04.2015 17:09

    Что-то странное.

    На третьей диаграмме не отображено то, что написано текстом: «для каждого автомобиля найдется 4 связи с колесами в классе семантических связей под названием «Автомобиль имеет колесо», для каждого колеса существует только одна такая связь в этом классе. „

    А причина этого проста. И на диаграмме, и в текстовом формализме логических моделей это записывается именно как “семантическая связь между классом ТМ автомобилей и классом ТМ колес». Точно с теми же кардинальностями, как на UML и прочих диаграммах.

    А фразы "В такой постановке задачи – нет. Есть класс связей между автомобилями и колесами, но нет связи между классом ТМ автомобилей и классом ТМ колес. " — не соответствуют действительности. Ибо это единственный способ разумно записать то самое правило «для каждого автомобиля найдется 4 связи с колесами».


    1. maxstroy Автор
      29.04.2015 17:47

      семантическая связь между классом ТМ автомобилей и классом ТМ колес


      Я могу придумать связь между классом автомобилей и классом колес. Это может быть так: для производства группы автомобилей из 600 штук необходима группа колес из 2400 штук. Но то, что я обозначил в тексте не связывает класс автомобилей и класс колес.


    1. maxstroy Автор
      29.04.2015 19:29

      Хотя, я понял, что «для каждого автомобиля найдется 4 связи с колесами в классе семантических связей под названием «Автомобиль имеет колесо» есть тоже описание класса автомобилей и класса колес. Однако, эта связь между классами должна быть выделена отдельно от класса связей между автомобилями и колесами. Получается, что есть класс связей между колесами и автомобилями, а также есть связь между классом автомобилей и классом колес. Но класс связей и связь не есть одно и то же. Поэтому надо точно понимать, что имеется ввиду в ER модели? класс связей. или связь между классами? ИМХО, имеется ввиду все-таки связь между объектами класса.


      1. vvagr
        29.04.2015 19:56

        Связь между классами — это и есть класс связей между их членами, поэтому ничего отдельного в ней нет. Надо всего лишь записать ряд свойств для класса связей «Автомобили-колёса», который прекрасно нарисован на третей диаграмме.

        Эти свойства в том, что одна роль ограничена «Класс ТМ автомобилей», вторая — «Класс ТМ колёс». Именно в этом смысле (и ни в каком ином) класс отношений является отношением между классами концов этих отношений.

        Ну и через обычное утверждение о кардинальностях записываем что есть по 4 члена на каждый автомобиль и по одному на каждое колесо.


  1. maxstroy Автор
    30.04.2015 08:58

    Связь между классами — это и есть класс связей между их членами

    Не согласен. И далее становится ясно, что это принципиальный момент. Кстати, Крис Партридж согласен со мной:


  1. lair
    03.05.2015 19:45

    (только сейчас заметил)

    Сегодня я расскажу, почему я предпочитаю строить концептуальные модели в виде ER диаграмм.

    Не вы ли писали «В ER-модели [...] построить конструкции, которые меня бы удовлетворили, я не могу»?


    1. maxstroy Автор
      03.05.2015 19:48

      да, ER модели меня не устраивают. По Гамбургскому счету.


      1. lair
        03.05.2015 20:14

        Тогда почему же вы предпочитаете их, а не модели из той же логической парадигмы?


        1. maxstroy Автор
          03.05.2015 20:23

          Для моих моделей нет нотации и нет языка. В своей статье я однажды сказал, что моя цель — построение такого языка и такой нотации. Поэтому приходится моделировать в том, что есть.


          1. lair
            03.05.2015 20:24

            А почему вам не подходит нотация из логической модели?

            Моделируя «в том, что есть», вы неизбежно обедняете вашу модель. Раз уж ваша цель — построение языка и нотации, то и занимайтесь этим построением, а не натягиванием воздушного шарика на слона.


            1. maxstroy Автор
              03.05.2015 20:32

              Простите, но мне решать, что и на что мне «натягивать»))