Skip to content

ООП

Из этой темы ты узнаешь:

  • что такое абстракция и полиморфизм;

  • что такое наследование.

Абстракция, полиморфизм

Объектно-ориентированное программирование (ООП) — это подход, который заключается в представлении программы как наборе объектов, взаимодействующих друг с другом.

Абстракция — это использование только тех характеристик объекта, которые с достаточной точностью представляют его в конкретной системе. Основная идея состоит в том, чтобы представить объект минимальным набором полей и методов, при этом — с достаточной точностью для решаемой задачи.

Полиморфизм в языках программирования и теории типов — способность функции обрабатывать данные разных типов.

Абстрактным типом в Golang можно считать интерфейсы. Через этот абстрактный тип в коде мы можем передавать совершенно другие типы, удовлетворяющие интерфейсу.

Пример:

Самое время протестировать код!

В этом примере два объекта — user и item, их абстрактным, а также полиморфным типом является tabler.

Закрепим: один объект может реализовывать хоть любое множество интерфейсов, хоть все имеющиеся интерфейсы. Достаточным условием удовлетворения интерфейсу является идентичность(эквивалентность) сигнатур методов как самого объекта, так и интерфейса (утиная типизация). Объект может реализовывать большее количество методов, чем в интерфейсе, например, для соответствия другим интерфейсам.

Дополнительно реализованные методы могут быть абсолютно свободными, пример показан ниже.

Самое время протестировать код!

Благодаря абстракции через интерфейс мы можем использовать не настоящие объекты, а лишь их мок объекты.

Подробнее о мок объектах ты можешь узнать по ссылке.