ООП Flashcards
Основные принципы ООП - инкапсуляция, наследование и полиморфизм. Как
их можно использовать?
Инкапсуляция - ограничение доступа одних компонентов к другим (важно то, что это работает, но не важно, как именно, например, важно то, что машина едет, но не важно, что у нее под капотом).
Наследование (пример - класс форма и наследующиеся от него классы квадрат, треугольлник, круг и т.д.)
Полиморфизм (класс человек и разделение по полу или по возрасту, например)
Что такое namespace и для чего он служит? Как ими пользоваться?
Один из способов инкапсуляции элементов.
Зарезервированное слово namespace
Что такое абстрактные классы и интерфейсы? Зачем они нужны?
a. В каких случаях следует использовать интерфейсы?
b. Что такое трейты? Для чего они нужны?
Абстрактный класс - класс, у которого не может быть объектов, несет описательный характер, все абстрактные методы должны быть определены в дочерних классах (фигура - квадрат, круг). Отвечает на вопрос что.
Интерфейс - позволяет указывать, какие должны быть методы без необходимости определять, как они должны быть реализованы (рисовать, считать периметр). Отвечает на вопрос, что делает.
Трейты - механиз обеспечения повторного использования кода в языках с поддержкой только одиночного наследования.
Что такое позднее статическое связывание? Для чего оно нужно?
a. Привести пример использования в Drupal8.
При раннем связывании сразу ясно, какую именно функцию необходимо вызвать.
При позднем связывании мы как бы говорим, что не нужно сразу выбирать функцию, а записываем, что нужно найти. Нахождение будет происходить прямо во врмея выполнения программы.
static::method
Что такое паттерны программирования? Для чего они нужны? Примеры
Паттерны программирования - описывают типичные способы решения часто встречающихся проблем при поектировании программ
+ проверенные решения
+ стандартизация кода
+ общий программисткий словарь
Какие есть типы паттернов? Какую задачу решает каждый из них?
a. Поведенческие
b. Структурные
c. Порождающие
Порождающие - эти паттерны отвечают за удобное и безопасное создание новых объектов или даже целых семейств объектов (фабрика)
Структурные - разные способы построения связи между объектами (адаптер, декоратор).
Поведенческие - коммуникация между объектами (стратегия, наблюдатель)
Что такое Инъекция Зависимости (Dependency Injection) (паттерн)? Зачем это
нужно?
Паттерн, который позволяет писать слабосвязный код. Идея в том, чтобы одни компоненты слабо зависели от других. Чтобы без осложнений можно было подменить один код другим.
Что такое Фабричный метод/фабрика (паттерн)? Зачем это нужно?
Фабричный метод - определяет общий интерфейс для создания объектов в базовом классе, позволяя дочерним элементам изменять тип создаваемых объектов. Паттерн предлагает создавать объект не напрямую через new, а через вызов особого фабричного метода. Чтобы система заработала, все возвращаемые объекты должны иметь общий интерфейс (мебель - стол, стулья)
В абстрактной фабрике речь идет уже не о продуктах, а о семействах продуктов (стол и стулья обычные, викторианские, минималистичные и т.д.)
Для начала надо определить общие интерфейсы для отдельных продуктов, далее создается АФ - общий интерфейс создания всех продуктов семейства, который возвращает абстрактные типы продуктов.
Для каждой вариации семейства продуктов создается своя фабрика, реализующая абстрактный интерфейс.
Что такое магические методы? Для чего они нужны? Примеры.
Зарезервированные методы, начинающиеся с двойного подчерскивания, выполняемые при работе с недоступными свойствами. \_\_construct \_\_get \_\_set \_\_isset