Просмотров: 10106

Методологические примочки к ООП


Наблюдаю много переходов на мою довольно давнюю статью Почему объектно-ориентированное программирование провалилось? Но хотелось бы попробовать подойти к этой же теме чуть более конструктивно.

О безнадежной сложности в программировании я как раз недавно писал, но что мы можем предпринять в рамках ООП для облегчения своей участи? Этот короткий пост посвящен коллекции нескольких малоизвестных тем, методологий или подходов, так или иначе связанных с продвинутым ООП, дизайном или моделированием ПО. Если вы уже применяете в рамках вашего объектно-ориентированного программирования такие вещи как OCL, DCI и DDD — этот пост из коллекции ссылок и обучающих видео вряд ли расскажет вам что-то новое.

В противном случае — двигайте под кат.

Методологические примочки к ООП объекты

1. DCI — хорошо забытый старый взгляд на объекты

Вот вам свежее обучающее видео по теме DCI:

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

DCI (Data, Context and Interaction) — подход к построению объектно-ориентированных систем, который позволяет лучше сфокусироваться на проектировании объектов и уйти от класс-ориентированного программирования. В этой презентации мы постараемся максимально просто изложить этот подход и познакомить слушателей с Qi4j — фреймворком, который помогает реализовать данный подход в Java.

2. Объектный язык ограничений OCL

Это часть стандарта UML для работы с объектами, цитата ниже взята отсюда:

На наш взгляд, объектный язык ограничений (Object Constraint Language, OCL) должен знать каждый, кто занимается моделированием или кому интересна модельно-ориентированная разработка. Однако, он незаслуженно обделён вниманием в сети вообще, а, уж, в русскоязычном сегменте информации просто мизер. Что это за язык и зачем он нужен, описано в этой статье.

Статья не претендует на фундаментальность, полноту охвата, точность определений и т.п. Её задача: 1) на простых примерах познакомить с OCL тех, кто никогда не слышал об этом языке; 2) а для тех, кто о нём слышал, возможно, открыть новые способы его применения.

Основы OCL можно почитать вот здесь, ниже выкладываю вот такую вот презенташку по OCL до всей кучи.

3. Старый добрый DDD

А ещё кодеры любят всякие архитектурные штуки для разработки по-настоящему сложного ПО, и обычно эти штуки заканчиваются тоже на xDD — DDD, TDD, MDD и т.д.

Что такое DDD, если говорить максимально просто? Вот хорошее видео выступления:

Скачать это видео можно здесь (0,73 Гб). А вот и презентация к ентому докладу:

Бонус: Снова о разработке на основе предметной области (Domain-Driven Design, DDD).

4. Проблематика ООП

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

Итак, терминологическая и семантическая проблематика ООП в серии из трех частей.

Особенности моделирование предметной области при помощи ООП:

Хочу заметить, что тем, кто пользуется терминами ООП, будет очень трудно понять меня. Дело в том, что ООП подменил понятия. В ООП под классом понимается не множество, как обычно принято в математике, или лингвистике. В ООП классом называют тип объектов, как у Аристотеля. Было бы правильно в ООП вместо термина класс объектовиспользовать термин тип объекта.

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

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

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

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

Третья часть: На тему моделирования предметной области в терминах ООП.

twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru ya.ru pikabu.ru blogger.com liveinternet.ru livejournal.ru google.com bobrdobr.ru yandex.ru del.icio.us

Подписка на обновления блога → через RSS, на e-mail, через Twitter
Теги: , , , ,
Эта запись опубликована: Четверг, 10 сентября 2015 в рубрике ЛитдыбрОбзоры.

2 комментария

Следите за комментариями по RSS
  1. Программер

    Пропущено BDD, и набирающее популярность "реактивное" программирование.

  2. DCI - недо DDD

    OCL - парнишко забыл, что scope коммиксов это коротенькая история, если нужно написать роман - картинки не годятся...

    DDD - да, вот это имхо очень серьезно.

    >>>Возможен встречный вопрос — зачем вообще такие сложности?

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

Оставьте комментарий!

Не регистрировать/аноним

Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

Зарегистрировать/комментатор

Для регистрации укажите свой действующий email и пароль. Связка email-пароль позволяет вам комментировать и редактировать данные в вашем персональном аккаунте, такие как адрес сайта, ник и т.п. (Письмо с активацией придет в ящик, указанный при регистрации)

(обязательно)


⇑ Наверх
⇓ Вниз