Объектом по PHP

Никита Кислицин

Xakep, номер #057, стр. 057-092-1


(nikitoz@real.xakep.ru) http://xa.nikitos.inc.ru

Объектно-ориентированное программирование в PHP

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

Что такое ООП?

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

В программировании же абстракция является инструментом, при помощи которого один программист может передавать другому некоторые результаты своей профессиональной деятельности. Существует несколько методов абстракции, я расскажу об основном - методе спецификации функций и процедур. Под спецификацией понимается словесное описание (например, в форме комментария) действия, которое реализует данный блок, а также описание (в более строгой форме) принимаемых и возвращаемых значений. Таким образом, программист абстрагируется от конкретной реализации некоторой функции - он лишь знает, что она делает и как с ней работать. Можно привести пример функции, вычисляющей синус аргумента. Большинству людей абсолютно не интересно знать, как она замкнута на аппаратные процессорные команды: им достаточно уметь ее вызывать (хотя кто-то и может подозревать, что, наверное, вычисляется сумма ряда Тейлора).

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

Содержание  Вперед на стр. 057-092-2