Языки программирования

Объектно-ориентированные возможности РНР

Если вы ориентируетесь в современных технологиях программирования, объектно-ориентированное программирование (ООП) наверняка является частью вашей повседневной работы. Именно поэтому в новой главе по языку PHP «Классы и объекты» в первой статье я расскажу объектно-ориентированные возможности РНР.
Объектно-ориентированные программы более просты и мобильны, их легче модифицировать и сопровождать, чем их «традиционных» собратьев. Кроме того, сама идея объектной ориентированности при грамотном ее использовании позволяет программе быть даже более защищенной от различного рода ошибок, чем это задумывал программист в момент работы над ней.
Стратегию ООП лучше всего описать как смещение приоритетов в процессе программирования от функциональности приложения к структурам данных. Это позволяет программисту моделировать в создаваемых приложениях реальные объекты и ситуации. Технология ООП обладает тремя главными преимуществами:
  • она проста для понимания — ООП позволяет мыслить категориями повседневных объектов;
  • повышенно надежна и проста для сопровождения — правильное проектирование обеспечивает простоту расширения и модификации объектно-ориентированных программ. Модульная структура позволяет вносить независимые изменения в разные части программы, сводя к минимуму риск ошибок программирования;
  • ускоряет цикл разработки — модульность и здесь играет важную роль, поскольку различные компоненты ООП-программ можно легко использовать в других программах, что уменьшает избыточность,кода и снижает риск внесения ошибок при копировании.
Объектно-ориентированное программирование основано на:
  • Инкапсуляции
  • Полиморфизме
  • Наследовании
ИНКАПСУЛЯЦИЯ — это механизм, объединяющий данные и обрабатывающий их код как единое целое.
Многие преимущества ОО обусловлены одним из его фундаментальных принципов — инкапсуляцией. Инкапсуляцией называется включение различных мелких элементов в более крупный объект, в результате чего программист работает непосредственно с этим объектом. Это приводит к упрощению программы, поскольку из нее исключаются второстепенные детали.
ПОЛИМОРФИЗМ позволяет использовать одни и те же имена для похожих, но технически разных задач. Главным в полиморфизме является то, что он позволяет манипулировать объектами путем создания стандартных интерфейсов для схожих действий. Полиморфизм значительно облегчает написание сложных программ.
НАСЛЕДОВАНИЕ позволяет одному объекту приобретать свойства другого объекта. При копировании создается точная копия объекта, а при наследовании точная копия дополняется уникальными свойствами, которые характерны только для производного объекта.
Хотя PHP обладает общими объектно-ориентированными возможностями, он не является полноценным ОО-языком (например, таким, как C++ или Java). В частности, в PHP не поддерживаются следующие объектно-ориентированные возможности:
  • множественное наследование;
  • автоматический вызов конструкторов
  • абстрактные классы;
  • перегрузка методов;
  • перегрузка операторов
  • закрытый и открытый доступ, виртуальные функции;
  • деструкторы;
  • полиморфизм.
Но и без всего перечисленного вы все равно сможете извлечь пользу из объектно-ориентированных возможностей, поддерживаемых PHP. Реализация ООП в PHP оказывает колоссальную помощь в модульном оформлении функциональности вашей программы.
Начиная с версии PHP 5 объектная модель была полностью переписана, она стала более производительной и функциональной.

Основные понятия ООП

Классы

Класс — это каркас для объекта. Это кусок кода, который определяет:
  • Типы данных, которые будут содержать созданные объекты класса
  • Функции, которые будут содержать эти объекты.

Объекты

Объект — это переменная специального типа, которая создается через класс. Она содержит действительные данные и функции для манипулирования ими. Можно создавать сколько угодно объектов от одного единственного класса. Каждая функция объекта не зависит от другого объекта, даже если они созданы от одного и того же класса.

Переменные класса

Значения данных, которые хранятся в том или ином объекте, записываются в специальные переменные, называемые переменными класса. Переменные класса тесно связаны с его объектом. Несмотря на то что все объекты класса имеют одни и те же переменные, их значения могут отличаться.

Методы

Функции, определяемые в классе и применяемые для объектов этого класса, называются методами. Они не во многом отличаются от обычных функций — вы можете передавать им значения, они могут содержать локальные переменные и возвращать значения. Однако, методы чаще работают с переменными объекта.
На этом теория закончилась, в последующих статьях главы «Классы и объекты» я на практике покажу как работать с объектами, классами, методами и переменными класса.
Самоучитель по PHP