На Тему Моделирования Предметной Области С Точки Зрения Ооп



Эта замечательная статья побудило меня опубликовать давние мысли относительно моделирования предметной области с помощью объектно-ориентированного программирования.

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

  • класс/таблица типа «Машины» (далее я использую класс в терминах ООП);
  • класс/таблица вида «Список автомобилей»;
  • класс/таблица типа «Машина».

Далее с помощью механизмов ООП и реляционной модели «подсущности» соединяются друг с другом.

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

а с точки зрения ООП/реляционной модели термины «метасущность» и «сущность» подходят соответственно.

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



И тут возникают ожидаемые проблемы:

Каждый раз (не только в каждом проекте, но и внутри проекта для каждой сущности, я это подчеркиваю) мы реализуем паттерн? Отлично, делаем копипасту.

[оффтоп]Отвлекаясь, хочу сказать, что я достаточно критично отношусь к паттернам (тема модна уже лет 10-15, чего только не придумывают вместо моделирования и написания качественного кода), потому что паттерн по своей сути является копипастом (если кто-то хочет поспорить на тему, пожалуйста, не здесь, начните публикацию, там поговорим).

[/offtopic]

Или, если вы хотите сэкономить себе работу/не копировать-вставлять (или нет понимания необходимости реализации описанного шаблона), в большинстве случаев так и делается, реализуется только одна сущность:

  1. Код:
    • класс «Машина» – это не набор, а характеристики машины, ее описание;
    • список машин так или иначе представляется в виде массива (Array), списка (List) или перечисления (IEnumerable), т.е.

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

    • Класс «Машины» чаще всего вообще не реализуется ни в каком виде.

  2. БД:
    • Как правило, это одна таблица «Станок» или «Станки» — таблица, строки которой содержат список машин, а столбцы — характеристики машин.

    • Мы задались вопросом, почему в книгах по базам данных такая таблица называется то «Машина», то «Машины» (Студент/Студент с )? И есть фреймворки для работы с базами данных, которые заставляют добавлять суффикс "к именам таблиц с " (Машина с /Студент с ).

      Причина в том, что происходит попытка объединить две сущности в одну (объект и список объектов), а то и все три в одну.

    • Такую таблицу правильно назвать «Машина», а «Список транспортных средств» и «Машины» реализовать с помощью других таблиц.



Итак, какой вывод я делаю исходя из своего опыта и комментируемой статьи:

Я хотел бы иметь язык программирования, платформу разработки, теорию баз данных и СУБД, которые позволили бы мне реализовать модель предметной области с точки зрения теории множеств в «родных» терминах.

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

Теги: #ООП #онтология #парадигмы #Аристотель #Логическая парадигма #анализ #моделирование предметной области #разработка веб-сайтов #семантика #программирование #Анализ и проектирование систем #ООП

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.