При этом каждый объект внутри программы использует сервисы, предоставляемые другими объектами, чтобы получить информацию, необходимую ему для выполнения своей работы, т. е. принятия решений, исходя из информации, предоставленной другими объектами. Передача этих сообщений, по существу, и представляет собой собственно выполнение программы. Данные и методы, или функциональность объекта, хранятся в одном центральном месте.
Разница между двумя подходами в том, что в объектах содержатся все данные и поведение, которые должны существовать вместе, тогда как в функциональной парадигме данные и функции отчетливо разделены. Благодаря этому обеспечивается легкость прослеживания работы объектно-ориентированного кода при его сопровождении и возрастает модульность проекта.
Из этого не следует, что функциональные программы невозможно сопровождать, просто они требуют значительно больших усилий проектировщиков для того, чтобы разместить все в нужных местах. Они должны обеспечить отсутствие глобальных переменных, обрабатываемых в нескольких файлах проекта, если таковые существуют. Самое хорошее в объектно-ориентированном программировании то, что просто создаются разумные объекты, и при следовании некоторым руководящим принципам все оказывается достаточно организовано. В более сложных приложениях применяются особые схемы, усиливающие конструкцию разрабатываемых систем и приносящие дополнительные выгоды.
Значение ООП
Как прикладной программист вы должны понимать, что ООП - всего лишь технология, т. е. она не является особым языком или платформой. РНР, C++ и Java - это языки, поддерживающие ООП, но реализующие этот подход своим особым способом, однако программирование на C++ или Java весьма отлично, поскольку ООП требует известной сноровки в синтаксисе и семантике того или иного языка.
Во всех объектно-ориентированных языках реализуется одна и та же парадигма, поэтому все языки ООП основаны примерно на одних и тех же понятиях. Поэтому очень важно сначала изучить понятия ООП и только потом обратиться к их реализации в выбранном языке Что ка
сается РНР, то, как будет показано, он поддерживает лишь часть тех возможностей, которые могут быть в объектно-ориентированном языке программирования. Об этих ограничениях рассказывается на протяжении всей а ближе к ее концу о них будет сказано особо.
Нисходящий подход к разработке программ
С тех пор как возник научный подход к действительности, происходят попытки категоризировать, определить и сформулировать все, что встречается в окружающем мире. Программирование не составляет исключения, поскольку компьютеры ведут свое происхождение от математики и логики. Прелесть объектно-ориентированного программирования в том, что оно не только позволяет поместить код и данные в надлежащее им место, но и позволяет категоризировать и определять программы так, как мы представляем себе реальные объекты окружающей действительности. Гораздо проще размышлять о проблемах в самом общем виде, прежде чем погружаться в детали. В результате легче оценивать время, риск и различные ресурсы, участвующие в проекте.