ГЛАВА
6 Если вы ориентируетесь в современных технологиях программирования,
объектно-ориентированное программирование (ООП) наверняка является частью вашей
повседневной работы. Если же вы принадлежите к числу новичков в области ООП, после
чтения этой главы и рассмотрения нескольких примеров программирование предстанет
перед вами совсем в новом свете. Эта глава посвящена технологии ООП и ее реализации
в РНР. В ней описан весь необходимый синтаксис и приводятся примеры, которые позволят
вам заняться созданием объектно-ориентированных приложений. Стратегию ООП
лучше всего описать как смещение приоритетов в процессе программирования от функциональности
приложения к структурам данных. Это позволяет программисту моделировать в создаваемых
приложениях реальные объекты и ситуации. Технология ООП обладает тремя главными
преимуществами: она проста для понимания - ООП позволяет мыслить категориями
повседневных объектов; повышенно надежна и проста для сопровождения - правильное
проектирование обеспечивает простоту расширения и модификации объектно-ориентированных
программ. Модульная структура позволяет вносить независимые изменения в разные
части программы, сводя к минимуму риск ошибок программирования; ускоряет цикл
разработки - модульность и здесь играет важную роль, поскольку различные компоненты
ОО-программ можно легко использовать в других программах, что уменьшает избыточность,кода
и снижает риск внесения ошибок при копировании. Специфика ООП заметно повышает
эффективность труда программистов и позволяет им создавать более мощные, масштабируемые
и эффективные приложения. Многие преимущества ООП обусловлены одним из его фундаментальных
принципов - инкапсуляцией. Инкапсуляцией называется включение различных мелких
элементов в более крупный объект, в результате чего программист работает непосредственно
с этим объектом. Это приводит к упрощению программы, поскольку из нее исключаются
второстепенные детали. Инкапсуляцию можно сравнить с работой автомобиля
с точки зрения типичного водителя. Многие водители не разбираются в подробностях
внутреннего устройства машины, но при этом управляют ею именно так, как было задумано.
Пусть они не знают, как устроен двигатель, тормоз или рулевое управление, - существует
специальный интерфейс, который автоматизирует и упрощает эти сложные операции.
Сказанное также относится к инкапсуляции и ООП - многие подробности <внутреннего
устройства> скрываются от пользователя, что позволяет ему сосредоточиться на
решении конкретных задач. В ООП эта возможность обеспечивается классами, объектами
и различными средствами выражения иерархических связей между ними (классы и объекты
рассматриваются ниже). РНР и ООП Хотя РНР обладает общими объектно-ориентированными
возможностями, он не является полноценным ОО-языком (например, таким, как C++
или Java). В частности, в РНР не поддерживаются следующие объектно-ориентированные
возможности: множественное наследование; автоматический вызов конструкторов
(если вы хотите, чтобы при конструировании объекта производного класса вызывался
конструктор базового класса, вам придется вызвать его явно); абстрактные классы;
перегрузка методов; перегрузка операторов (это связано с тем, что РНР
является языком со свободной типизацией, - за дополнительной информацией обращайтесь
к главе 2); закрытый и открытый доступ, виртуальные функции; деструкторы;
полиморфизм. Но и без всего перечисленного вы все равно сможете извлечь
пользу из объектно-ориентированных возможностей, поддерживаемых РНР. Реализация
ООП в РНР оказывает колоссальную помощь в модульном оформлении функциональности
вашей программы. |