Pull to refresh

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

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

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

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



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



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

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



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

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

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

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



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

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

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

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



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

Вывод: концептуальное моделирование в виде ER много ближе к логической парадигме, чем моделирование в виде диаграммы классов. Но ни тот ни другой метод моделирования не позволяет моделировать семантические отношения между объектами и классами объектов. Это является существенным ограничением современных моделлеров, которое необходимо устранять.
Tags:
Hubs:
Total votes 9: ↑8 and ↓1+7
Comments142

Articles