Особенности концептуального моделирования предметной области

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

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

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

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

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

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

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

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

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

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

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

© Habrahabr.ru