Полиморфизм в программной архитектуре

Полиморфизм подклассов интересен не только с точки зрения объектно-ориентированной разработки в ее узком, «механистическом» понимании. Вошедшее в современную системную и программную инженерию двойственное рассмотрение систем на любом уровне позволяет по-новому взглянуть и на концепцию полиморфизма, дуализм коего подчас серьезно мешает начинающим программистам «ухватить» суть и содержание самой идеи.

Действительно, согласно воззрениям теоретика системной инженерии В. Гилинга (нидерл. Wim Gielingh; его профиль на одном из интернет-сайтов Делфтского технического университета можно увидеть по ссылке), любую сложную инженерную систему, — а по рекурсии и ее часть, — можно рассматривать как пространственно-временное сочетание функции и конструкции. Эфемерность структур языков программирования как абстрактных вещей не позволяет увидеть их в физическом мире, однако при должном навыке это не мешает разделить поддерживающие полиморфизм виртуальные функции и их вызовы надвое:

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

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

  • одному слоту могут соответствовать различные модули-кандидаты, выбор из множества которых осуществляется на этапе позднего связывания;
  • модуль по умолчанию — это реализация запроса или команды в базовом классе, впервые определяющем (вводящем) соответствующий метод как виртуальный;
  • чистая виртуальная функция — это слот, ответственность за реализацию модулей которого возлагается на автора производного класса;
  • интерфейс (напр., в Java) — это составной слот, работоспособность которого обеспечивается полной реализацией определенного сочетания модулей.

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google photo

Для комментария используется ваша учётная запись Google. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.