В статье рассматривается роль и специфика объектного мышления на современном этапе объектно-ориентированного программирования.
Ключевые слова: программирование, объектное мышление, объектно-ориентированное программирование.
Введение объектов и переход к объектно-ориентированной методологии в разработке языков высокого уровня программирования можно считать самым радикальным изменением в области IT-технологий. Объектно-ориентированное программирование — основное направление развития технологии программирования в инженерно-технологической сфере.
Следует отметить, что объектно-ориентированное программирование является способом программирования и во многом аналогично процессу человеческого мышления. Так, объектный подход был известен еще древнегреческим философам. Они рассматривали мир в терминах как объектов, так и событий. В XVII в. Р. Декарт отмечал, что люди обычно имеют объектно-ориентированный взгляд на мир. В XX в. данная тема нашла свое отражение в философии объективистской эпистемологии А. Рэнда [3]. Модель человеческого мышления, в которой разум человека рассматривается как общность мыслящих агентов, предложил М. Мински. Он доказывал, что только совместное действие таких агентов приводит к осмысленному поведению человека [2].
Основатель когнитивной теории личности, исходящей из постулата «любой человек — исследователь», Дж. Келли указывает, что люди мыслят конструктами. Под конструктами понимается некая абстракция объектов реального мира в форме понятия.
Анализируя работы Дж. Келли, можно утверждать, что базовыми для человека являются рассуждения с абстрагированными понятиями (объектное мышление), чем рассуждения о последовательностях действий (алгоритмическое мышление). Следует отметить, что Дж. Келли указывает, что любая абстрактная модель относительна и в силу своей относительности ограничена [1]. Таким образом, можно прийти к выводу, что объектное мышление — это мышление, направленное на создание простых моделей мира.
Основное понятие объектно-ориентированного программирования –объект — совокупность кода и данных, которые воспринимаются как одно целое. Для объектного мышления основным понятием также является объект — некая образная структурированная единица реального физического мира.
В свою очередь объектно-ориентированное программирование — это подход, благодаря которому мы думаем и оперируем в приложении конкретными сущностями, в частности объектами. Это не только способ написания кода и использования определенных инструментов, а еще и способ мышления и совсем другой подход к организации логики будущего проекта. При этом по сути код, который необходим для обработки определенного общего функционала — то есть некоторой конкретной сущности, — как бы группируется в рамках соответствующего класса, а значит конкретный функционал описан четко в одном едином месте.
Проблема процедурного подхода ориентирована на то, что программист не «думает» реальными объектами или же ситуациями — он просто прописывает определенный код, исходя из логики работы приложения. Объектно-ориентированный подход, используя классы и их объекты, позволяет сместить приоритеты в процессе написания кода от функциональности скрипта к структурам данных, что в итоге приводит к моделированию в создаваемых приложениях реальных объектов и ситуаций.
Отметим, что положительным критерием объектно-ориентированного программирования является, во-первых, доступный подход, позволяющий мыслить в рамках реальных объектов, для которых пишется приложение. Приложения, написанные на нём, при правильном проектировании обеспечивают простоту расширения и модификации объектно-ориентированных программ. Во- вторых, объектно-ориентированный подход ускоряет разработку за счёт повторного использования кода классов, а значит, его можно использовать в других разрабатываемых приложениях.
Объектное мышление также опирается и на логику, поскольку направлено на логичное описание образов объектов. Например, объектно-ориентированное программирование в основу ставит информационные объекты, а все процессы рассматриваются только как порожденные информационными объектами.
Объединение объектов в некоторые группы (классы) происходит путем введения абстрагированных понятий, определяющих значимые для объектов свойства, их внутренние процессы или явления, в которых они могут принимать участие. Уточняя или, наоборот, абстрагируя вводимые понятия, объектное мышление выстраивает структуры иерархических связей между объектами или их группами. Для объектного мышления характерно уточнять старые и создавать новые понятия, применять классификации понятий.
Объектное мышление исследует поведение объектов как набор разных состояний. В каждом из возможных состояний объект подчиняется различным правилам функционирования, т. е. существует возможность качественного изменения любого объекта. Это прослеживается и в объектно-ориентированном программировании, где любой объект может в корне изменить свое поведение, перейдя в другое состояние.
Объектное мышление рассматривает взаимодействие объектов как происходящие между ними события. Причем в качестве причины для смены состояний объектов также объявляется событие, возникшее внутри объекта или со стороны другого объекта. Если рассматривать поведение объектов реального мира в терминах сигналов и состояний, то объектное мышление опирается на условно-рефлекторную природу человеческого мышления. Модель мышления человека может рассматриваться как набор состояний, которые сменяются в результате внешнего или внутреннего события.
Объектное мышление интересуется логическим содержанием действий, происходящих с объектами или внутри них, но после изучения их структуры и по-другому. С информационной точки зрения объект рассматривается как «черный ящик», для которого известны только входные и выходные данные. Таким образом, осуществляется механизм, известный в объектно-ориентированном программировании как «инкапсуляции». Такой принцип сокрытия причин и структуры часто полезен при построении моделей. Однако основная эвристическая сила объектного подхода — в методе моделирования взаимодействия объектов. Объектный подход в отличие от алгоритмического аналога никогда не предписывает изначально, каково должно быть поведение системы в целом. Он только описывает поведение отдельных объектов и их взаимодействие.
Таким образом, объектно-ориентированный подход значительно повышает эффективность труда программиста и позволяет создавать более мощные и расширяемые приложения. Несмотря на «эргономичность» объектного мышления, отметим, что обучение объектно-ориентированному программированию становится значительно более трудной задачей, чем другие аналоги.
Литература:
- Джонстон Г. Учись программировать. — М.: Финансы и статистика, 2005. — 367 с.
- Буч Г. Объектно-ориентированный анализ и проектирование с примерами приложений на C++. — М.: Вильямс, 2008. — 720 с.
- http://www.refsru.com/referat-29539–5.html