
Интерфейсы
Дисклеймер: пост хоть и публичный, но пишу его в первую очередь для себя, ни на что не претендую, ничего не жду.
Интерфейсы
Вскрылось еще одно пока достаточно мутное для меня место — интерфейсы. Давайте попробуем раскрутить.
Интерфейс какая-то странная штуковина. Странность заключается в том, что интерфейс — это про модули, про конструктивные объекты, но при этом интерфейс нематериален. Из-за нематериальности легко начать уезжать мозгами в функциональное рассмотрение.
Как я понял, интерфейс — это логическая граница между двумя модулями, регламентирующая их взаимодействие. Интерфейсы реализуются (!!! и вот опять слово, которое нам как бы намекает, что интерфейс — это что-то функциональное, а не модульное) интерфейсными модулями — конструктивными объектами (и вот тут опять … ЧТО? мы же говорим про модули, про конструктивное, откуда здесь какие-то штуковины (интерефейсы), которые не занимают объема, и которым нужны (!) какие-то конструктивные объекты (интерфейсные модули) их реализующие?!)
Дребезг сплошной.
Как я бы для себя это сформулировал?
Конструктивные части системы/модули соединяются между собой при помощи специальных функциональных элементов — интерфейсов, реализуемых интерфейсными модулями.
Функция интерфейса — соединять модули регламентированным способом. Реализуется интерфейс интерфейсным модулем — отдельным конструктивным элементом, в котором есть физическая реализация механизма взаимодействия модулей.
Либо сделать заход на то, что интерфейс — это описание взаимодействия, даже скорее мета-модель взаимодействия. Он ведь описывает правила взаимодействия. Конкретное взаимодействие будет описано, например, где-то в исходных кодах модуля (если говорим про ПО). Но как тогда быть с реализацией? Ведь интерфейсный модуль и одновременно обеспечивает взаимодействие и одновременно как бы следит, чтобы оно шло по регламенту. При чем тут мета-модель тогда? Мета-моделью тут тогда будет описание протокола/регламента интерфейса.
Тогда получается, что у нас есть какой-то нефизический (а какой тогда? ментальный, логический?) объект на физическом объекте, который реализуется частью этого физического объекта — интерфейсным модулем. У нас есть описание интерфейсного модуля и есть мета-модель — протокол интерфейса.
В общем, с интерфейсами еще надо порешать задачек, пока интуиции нет, компилятор ругается.
На этом все.
Спасибо мне за внимани-е :)
- Запостил Svyatoslav
- Дата 04.02.2023
- 2 Comments
Граница. Между модулем и окружающим миром есть граница. На ней что-то происходит (и можно описать, что должно происходить).
В самом начале было заявлено, что интерфейс не материален, откуда появился такой тезис? Из того, что мы понимаем интерфейс как логическую границу? А почему бы нам не выделить его иначе и не рассматривать сразу как функциональный объект?
Например, выделить API-метод (интерфейс между фронтом и бэком), который позволяет вызвать функцию на сервере, графический интерфейс предоставляет возможность вызвать API метод (интерфейс между браузером и фронтом), тач-скрин позволяет пальцу передать управляющий сигнал на «изображении» кнопки на экране (интерфейс между пользователем и приложением). И все эти интерфейсы занимают место в пространстве-времени.
Возможно я пропустил какие-то системные уровни в примере, но мне мышление об интерфейсе и его выделение представляется таким образом. Он существует и выполняет функцию, по аналогии с отверстием для болта.