Эта замечательная статья побудило меня опубликовать давние мысли относительно моделирования предметной области с помощью объектно-ориентированного программирования.
К актуальности представленных в статье идей приходишь подспудно (не имея возможности выразить ее в связи с тем, что парадигма моделирования с точки зрения теории множеств не преподается в вузах, по крайней мере, будущим «программистам»), поработав давно работаю с ООП и реляционными базами данных: Каждый раз при моделировании предметной области в терминах ООП (сейчас речь идет не об этапе бизнес-анализа, а о последующем этапе реализации модели в коде) для всех сущностей предметной области необходимо реализовать следующий шаблон в схеме кода и базы данных, состоящий из их взаимосвязанных «подсущностей»:
- класс/таблица типа «Машины» (далее я использую класс в терминах ООП);
- класс/таблица вида «Список автомобилей»;
- класс/таблица типа «Машина».
Более того, термины «сущность» и «подсущность» применимы именно к модели предметной области с точки зрения теории множеств.
а с точки зрения ООП/реляционной модели термины «метасущность» и «сущность» подходят соответственно.
Надеюсь, понятно, почему? — ООП/реляционная модель — это механизмы нижнего уровня, и суть предметной области приходится конструировать; у них нет инструментов, которые бы нативно отражали суть предметной области.
И тут возникают ожидаемые проблемы:
Каждый раз (не только в каждом проекте, но и внутри проекта для каждой сущности, я это подчеркиваю) мы реализуем паттерн? Отлично, делаем копипасту.[оффтоп]Отвлекаясь, хочу сказать, что я достаточно критично отношусь к паттернам (тема модна уже лет 10-15, чего только не придумывают вместо моделирования и написания качественного кода), потому что паттерн по своей сути является копипастом (если кто-то хочет поспорить на тему, пожалуйста, не здесь, начните публикацию, там поговорим).
[/offtopic]
Или, если вы хотите сэкономить себе работу/не копировать-вставлять (или нет понимания необходимости реализации описанного шаблона), в большинстве случаев так и делается, реализуется только одна сущность:
- Код:
- класс «Машина» – это не набор, а характеристики машины, ее описание;
- список машин так или иначе представляется в виде массива (Array), списка (List) или перечисления (IEnumerable), т.е.
для реализации сущности «список» используются низкоуровневые типы данных языка — но с такими данными мы можем делать что угодно мы хотим или что-то происходит случайно, и это уже не объектный, а процедурный подход со всеми вытекающими;
- Класс «Машины» чаще всего вообще не реализуется ни в каком виде.
- БД:
- Как правило, это одна таблица «Станок» или «Станки» — таблица, строки которой содержат список машин, а столбцы — характеристики машин.
- Мы задались вопросом, почему в книгах по базам данных такая таблица называется то «Машина», то «Машины» (Студент/Студент с )? И есть фреймворки для работы с базами данных, которые заставляют добавлять суффикс "к именам таблиц с " (Машина с /Студент с ).
Причина в том, что происходит попытка объединить две сущности в одну (объект и список объектов), а то и все три в одну.
- Такую таблицу правильно назвать «Машина», а «Список транспортных средств» и «Машины» реализовать с помощью других таблиц.
- Как правило, это одна таблица «Станок» или «Станки» — таблица, строки которой содержат список машин, а столбцы — характеристики машин.
Итак, какой вывод я делаю исходя из своего опыта и комментируемой статьи:
Я хотел бы иметь язык программирования, платформу разработки, теорию баз данных и СУБД, которые позволили бы мне реализовать модель предметной области с точки зрения теории множеств в «родных» терминах.Мне кажется, что необходимость появления таких инструментов в мейнстриме давно назрела.
Теги: #ООП #онтология #парадигмы #Аристотель #Логическая парадигма #анализ #моделирование предметной области #разработка веб-сайтов #семантика #программирование #Анализ и проектирование систем #ООП
-
Essenly - Бизнес-Книги В Двух Словах
19 Oct, 24 -
Бета-Версия Mvc Framework
19 Oct, 24 -
Итоги 2015: Ит-Индустрия
19 Oct, 24 -
Где Живут Эксперты По Юзабилити?
19 Oct, 24 -
Синий Экран Смерти Bsod – Негативная Реклама
19 Oct, 24 -
5 Заблуждений О Devsecops
19 Oct, 24