В объектно-ориентированном программировании существует такой термин «интерфейс». Если вы только в самом начале пути программиста, то понять, что же это такое может быть достаточно сложно.
Интерфейс — это спецификация, договорённость о взаимодействии. Он описывает то, как можно обращаться к объекту, но ничего не говорит о конкретной реализации.
Очень сложно описать понятие интерфейса без опоры на какой-нибудь язык программирования, но я всё-таки попытаюсь.
Представьте, что у нас есть различные хранилища: дисковое, сетевое и оперативное. У каждого из них своя реализация, но что если мы хотим легко переключаться между ними? Можно написать кучу условий в программе и вызывать конкретные реализации во всех необходимых точках, проверяя, что мы на самом деле используем.
Но в случае с ООП и интерфейсами мы можем сделать проще. Мы объявляем интерфейс хранилища, в котором описываем все методы для работы с хранилищами. Затем классы дискового, сетевого и оперативного хранилища реализуют этот интерфейс. После чего во всех местах мы обращаемся к методам хранилища, а не к конкретным реализациям.
Можете, например, почитать статью про интерфейсы в Java.
Пример на абстрактном языке прогаммирования:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
интерфейс Хранилище открыть закрыть положить(объект) забрать(объект) реализация Диск реализация метода открыть реализация метода закрыть реализация метода положить(объект) реализация метода забрать(объект) реализация СетевойДиск реализация метода установить соединение реализация метода открыть реализация метода закрыть реализация метода положить(объект) реализация метода забрать(объект) реализация метода закрыть соединение реализация ОЗУ_Диск реализация метода открыть реализация метода закрыть реализация метода положить(объект) реализация метода забрать(объект) какой-то-метод(Хранилище хранилище) // нам приходит интерфейс хранилище, реализация нам не важна // но мы обращаемся к методам из интерфейса хранилище хранилище.открыть хранилище.положить(карандаш) хранилище.закрыть ГЛАВНАЯ_ПРОГРАММА диск = создать диск какой-то-метод(диск) сетевой_диск = подключиться к сетевому диску какой-то-метод(сетевой_диск) озу_диск = создасть ОЗУ Диск какой-то-метод(озу_диск) |