Интерфейсы

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

Интерфейсы

Вскрылось еще одно пока достаточно мутное для меня место - интерфейсы. Давайте попробуем раскрутить.

Интерфейс какая-то странная штуковина. Странность заключается в том, что интерфейс - это про модули, про конструктивные объекты, но при этом интерфейс нематериален. Из-за нематериальности легко начать уезжать мозгами в функциональное рассмотрение.

Как я понял, интерфейс - это логическая граница между двумя модулями, регламентирующая их взаимодействие. Интерфейсы реализуются (!!!! и вот опять слово, которое нам как бы намекает, что интерфейс - это что-то функциональное, а не модульное) интерфейсными модулями - конструктивными объектами (и вот тут опять … ЧТО? мы же говорим про модули, про конструктивное, откуда здесь какие-то штуковины (интерефейсы), которые не занимают объема, и которым нужны(!) какие-то конструктивные объекты (интерфейсные модули) их реализующие?!)

Дребезг сплошной.

Как я бы для себя это сформулировал?

Конструктивные части системы/модули соединяются между собой при помощи специальных функциональных элементов - интерфейсов, реализуемых интерфейсными модулями.

Функция интерфейса - соединять модули регламентированным способом. Реализуется интерфейс интерфейсным модулем - отдельным конструктивным элементом, в котором есть физическая реализация механизма взаимодействия модулей.

Либо сделать заход на то, что интерфейс - это описание взаимодействия, даже скорее мета-модель взаимодействия. Он ведь описывает правила взаимодействия. Конкретное взаимодействие будет описано, например, где-то в исходных кодах модуля (если говорим про ПО). Но как тогда быть с реализацией? Ведь интерфейсный модуль и одновременно обеспечивает взаимодействие и одновременно как бы следит, чтобы оно шло по регламенту. При чем тут мета-модель тогда? Мета-моделью тут тогда будет описание протокола/регламента интерфейса.

Тогда получается, что у нас есть какой-то нефизический (а какой тогда? ментальный, логический?) объект на физическом объекте, который реализуется частью этого физического объекта - интерфейсным модулем. У нас есть описание интерфейсного модуля и есть мета-модель - протокол интерфейса.

В общем, с интерфейсами еще надо порешать задачек, пока интуиции нет, компилятор ругается.

На этом все.

Спасибо мне за внимани-е :)

Граница. Между модулем и окружающим миром есть граница. На ней что-то происходит (и можно описать, что должно происходить).

В самом начале было заявлено, что интерфейс не материален, откуда появился такой тезис? Из того, что мы понимаем интерфейс как логическую границу? А почему бы нам не выделить его иначе и не рассматривать сразу как функциональный объект?

Например, выделить API-метод (интерфейс между фронтом и бэком), который позволяет вызвать функцию на сервере, графический интерфейс предоставляет возможность вызвать API метод (интерфейс между браузером и фронтом), тач-скрин позволяет пальцу передать управляющий сигнал на “изображении” кнопки на экране (интерфейс между пользователем и приложением). И все эти интерфейсы занимают место в пространстве-времени.

Возможно я пропустил какие-то системные уровни в примере, но мне мышление об интерфейсе и его выделение представляется таким образом. Он существует и выполняет функцию, по аналогии с отверстием для болта.