ООП
Из этой темы ты узнаешь:
-
что такое абстракция и полиморфизм;
-
что такое наследование.
Абстракция, полиморфизм
Объектно-ориентированное программирование (ООП) — это подход, который заключается в представлении программы как наборе объектов, взаимодействующих друг с другом.
Абстракция — это использование только тех характеристик объекта, которые с достаточной точностью представляют его в конкретной системе. Основная идея состоит в том, чтобы представить объект минимальным набором полей и методов, при этом — с достаточной точностью для решаемой задачи.
Полиморфизм в языках программирования и теории типов — способность функции обрабатывать данные разных типов.
Абстрактным типом в Golang можно считать интерфейсы. Через этот абстрактный тип в коде мы можем передавать совершенно другие типы, удовлетворяющие интерфейсу.
Пример:
Самое время протестировать код! |
В этом примере два объекта — user и item, их абстрактным, а также полиморфным типом является tabler.
Закрепим: один объект может реализовывать хоть любое множество интерфейсов, хоть все имеющиеся интерфейсы. Достаточным условием удовлетворения интерфейсу является идентичность(эквивалентность) сигнатур методов как самого объекта, так и интерфейса (утиная типизация). Объект может реализовывать большее количество методов, чем в интерфейсе, например, для соответствия другим интерфейсам.
Дополнительно реализованные методы могут быть абсолютно свободными, пример показан ниже.
Самое время протестировать код! |
Благодаря абстракции через интерфейс мы можем использовать не настоящие объекты, а лишь их мок объекты.
Подробнее о мок объектах ты можешь узнать по ссылке.