Объектно-ориентированное программирование (ООП) в PHP
В этом уроке вы ознакомитесь с основами объектно-ориентированного программирования в PHP. Начнем с введения в классы и объекты, а ознакомившись со всеми уроками данной серии, вы узнаете об основных принципах и концепциях ООП и научитесь быстро и легко создавать полезные приложения на PHP.
Что такое объектно-ориентированное программирование (ООП)?
Объектно-ориентированное программирование или сокращённо называемое ООП — это подход, который помогает разрабатывать сложные приложения так, чтобы их можно было в течение длительного времени легко поддерживать и масштабировать.
В процедурном программировании мы создаём структуры данных — числа, строки, массивы, а затем обрабатываем эти структуры специальными функциями, которые манипулируют этими данными.
В мире ООП мы храним структуры данных и функции, их обрабатывающие, в одной сущности, называемой объектом. Вместо того, чтобы обработать данные какой-либо функцией, мы загружаем эти данные в объект, а затем вызываем его методы для манипулирования ими и получаем желаемый результат. Это отличается от процедурного программирования, когда мы, в первую очередь, взаимодействуем с функциями и глобальными переменными.
Объектно-ориентированное программирование имеет несколько преимуществ перед процедурным программированием:
- ООП быстрее и проще в исполнении — позволяет мыслить категориями повседневных объектов, такие реальные понятия как
Person,CarилиAnimalрассматриваются как объекты. Это во многом упрощает задачу, когда вы только начинаете проектировать свое приложение, так как назначение каждого объекта, так и цель отношений между объектами, будут логически понятны. - Легче писать модульные программы — ООП предполагает написание модулей. Модульность упрощает обслуживание, изменение и отладку кода. Модульная структура позволяет вносить независимые изменения в разные части программы, сводя к минимуму риск ошибок программирования.
- ООП позволяет создавать полностью повторно используемые приложения с меньшим количеством кода и более коротким временем разработки. Со временем вы даже можете создать целую библиотеку такого рода модулей, которые в дальнейшем сможете использовать во многих приложениях. С помощью ООП становится сравнительно легче писать такой код, так как структуры данных и функции инкапсулируются в единственный объект, который можно использовать любое количество раз.
Объектно-ориентированные концепции
Прежде чем мы углубимся в детали ООП, давайте определим важные термины, относящиеся к объектно-ориентированному программированию:
Класс — это тип данных, определяемый программистом, который включает как локальные функции, так и локальные данные. Вы можете думать о классе как о шаблоне для создания множества экземпляров одного и того же вида (или класса) объекта.
Объект — отдельный экземпляр структуры данных, определенной классом. Вы определяете класс один раз, а затем создаете множество объектов, которые ему принадлежат. Объекты также известны как экземпляры.
Переменная-член — это переменные, определенные внутри класса. Эти данные будут невидимы для внешнего класса, и к ним можно будет получить доступ через функции-члены. Эти переменные называются атрибутом объекта после создания объекта.
Функция-член — это функция, определенная внутри класса и используемая для доступа к данным объекта.
Наследование — когда класс определяется путем наследования существующей функции родительского класса, это называется наследованием. Здесь дочерний класс наследует все или несколько функций-членов и переменных родительского класса.
Родительский класс — класс, унаследованный от другого класса. Это также называется базовым классом или суперклассом.
Дочерний класс — класс, наследуемый от другого класса. Это также называется подклассом или производным классом.
Полиморфизм — это объектно-ориентированная концепция, в которой одна и та же функция может использоваться для разных целей. Например, имя функции останется прежним, но она принимает другое количество аргументов и может выполнять разные задачи.
Перегрузка — тип полиморфизма, при котором некоторые или все операторы имеют разные реализации в зависимости от типов их аргументов. Точно так же функции могут быть перегружены другой реализацией.
Абстракция данных — любое представление данных, в котором детали реализации скрыты (абстрагированы).
Инкапсуляция — относится к концепции, при которой мы инкапсулируем все данные и функции-члены вместе для формирования объекта.
Конструктор — относится к особому типу функции, которая будет вызываться автоматически при формировании объекта из класса.
Деструктор — относится к особому типу функции, которая будет вызываться автоматически всякий раз, когда объект удаляется или выходит за пределы области видимости.
Итак, класс — это шаблон для объектов, а объект — это экземпляр класса. Когда создаются отдельные объекты, они наследуют все свойства и поведение класса, но каждый объект будет иметь разные значения свойств.
