Методология ООП как способ восприятие мира

Автор: | 29.01.2018

Восприятие мира на основе психологии
Алгоритмизация мышления.  Классификация
Формирование сущностей
Анализ сложных систем реального мира
Классы и объекты
Основные аспекты ООП
Перспективы методологии программирования

Восприятие мира на основе психологии

Мозг человека обрабатывают информацию.  Согласно определений из психологии:

  • “информация” в узком понимании – это сведения, которые позволяют выбрать правильное решение;
  • “информация” в широком понимании – это отображение реального мира (его свойств, явлений и закономерностей).

На основе этих определений можно  представить следующую концептуальную схему функционирования мозга.

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

Ощущение Представление Понятие Суждение
Белое, черное Точка, прямая,

треугольник

Фигура, геометрия,

математика

Геометрия –

это часть математики

Психологические образы  используются для принятия решений при взаимодействии с внешним миром.

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

Принятие решений реализуется через логическое мышление,  отображение внешнего мира – через абстрактное мышление. Можно ли имитировать эти разновидности мышления с помощью компьютера?

Алгоритмизация мышления. Классификация

Компьютер обрабатывает информацию в алгоритмической последовательности.

Логическое мышление описывается математической логикой, которая легко переводится на язык алгоритма. Сложнее разобраться с абстрактным мышлением, как его перевести на язык алгоритма? Например, каким образом можно моделировать процесс трансформации ощущений в психологические образы высокого уровня? На этот вопрос пока никто не может однозначно ответить. Но можно сказать, что одним из способов достижения этой цели есть умение классифицировать объекты реальной действительности.

Здесь следует отметить две разновидности классификации, первая – когда классификация производится по заданному признаку; вторая – когда признак для классификации явно не определен (кластеризация). Второй случай рассмотрим на следующем примере.

В комнате находятся диван, кресло, чемодан, шкаф. Что-то одно нужно убрать. Здравомыслящий человек обычно выбирает чемодан. При этом руководствуются критерием-понятием  “мебель”. А почему не шкаф или диван, руководствуясь критерием “самый большой”? Очевидно, при взгляде на эти вещи из каких-либо соображений определяется наиболее существенный признак.

Каким образом может выявляться существенность признака? Здесь можно вспомнить опыты академика Павлова по выработке условного рефлекса – выделение слюны  у собаки на включение лампочки (вместо запаха пищи). Такой рефлекс вырабатывался регулярным сопровождением приема пищи с включением лампочки, т.е. повторяемостью признака.

“Повторяемость признака” программируется достаточно просто. Следует заметить, что повторяемость не является единственным условием для определения существенности признака,  например, признаки должны разделять образы на достаточно большие группы (т.е., приблизительно на равные части).

Формирование сущностей

Умение классифицировать образы с самостоятельным выбором существенных признаков является одним из важнейших факторов в формировании у человека реального восприятия окружающей действительности. Из некоторых сочетаний признаков формируются конкретные образы и обобщающие понятия. Так, изучая, например, слона человек создаёт в мозгу модель его образа из  признаков-характеристик – четвероногость, серость, огромность и др.

Пример классификации в подобном контексте приводится на рисунке ниже.



Здесь треугольники могут быть разделены на группы больших и маленьких или прямоугольных и остальных в зависимости от того, какое из сочетаний признаков будет рассматриваться более существенным.

Анализ сложных систем реального мира

В настоящее время, учитывая возросшие возможности компьютерной техники, новые методологии программирования ориентированы на человеческое восприятие мира. Это значительно облегчает программистам создание сложных программных систем. Кроме этого, такая ориентация все больше систематизирует знания о человеческом мышлении и, соответственно, расширяет возможности по  интеллектуализации программных систем.

Анализируя сложные системы реального мира  можно обнаружить ряд основополагающих признаков объектно-ориентированного стиля проектирования программ [Гради Буч]:

  • Иерархичность.
  • Произвольность выбора компонент.
  • Различие внутрикомпонентных и межкомпонентных взаимодействий.
  • Одинаковые структурные части.
  • Тенденция к развитию.

Иерархичность. Сложные системы являются иерархическими и состоят из взаимозависимых подсистем. Основными видами иерархических структур являются иерархия «is- (треугольник – это геометрическая фигура) и иерархия «part of»(системный блок – часть компьютера).

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

Внутрикомпонентная связь обычно сильнее, чем связь между компонентами. Различие внутрикомпонентных и межкомпонентных взаимодействий обуславливает разделение функций между частями системы и дает возможность изолированно изучать каждую часть (например, блоки в компьютере).

Одинаковые структурные части. Системы организованы достаточно экономными средствами и содержат одинаковые структурные части. Например, из отрезков формируется треугольник и четырехугольник.

Тенденция к развитию. Сложная система является результатом развития работавшей более простой системы. В процессе ее усложнения и развития выделяются устойчивые промежуточные формы. Невозможно сразу правильно создать элементарные объекты: с ними надо сначала повозиться, чтобы больше узнать о реальном поведении системы, и затем уже совершенствовать их. Как  пример – структура общественных институтов. Люди объединяются в группы для решения задач, которые не могут быть решены индивидуально. Одни организации быстро распадаются, другие при необходимости перестраиваются и функционируют достаточно долго.

Классы и объекты

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

Важно помнить о том, что все рабочие данные хранятся в объекте. Класс не содержит никаких данных; он лишь описывает общую структуру и поведение объекта. Связь между классом и объектом подобна той, которая существует между типом данных (например, целочисленным) и переменной. Только для объекта свойства и методы (действия) находят конкретное воплощение, для класса они только трактуются (описываются).

Прототипом класса в реальном мире есть обобщающие понятия, прототипом объекта – конкретные представители этих обобщений. Классы и объекты отображают сущности, которые находят отражение в словаре языка. Причем, одно и то же слово может отображаться как класс и как объект. Например, слово преподаватель может восприниматься как обобщающее понятие и как конкретный человек. В обоих случаях слово характеризуется свойствами (имя, фамилия, оклад, …) и какими либо действиями (например,   пересчет зарплаты от стажа).

Основные аспекты ООП

Концептуальная база объектно-ориентированного стиля проектирования имеет четыре главных элемента:

  • абстрагирование;
  • инкапсуляция;
  • модульность;
  • иерархия.

При абстрагировании в ООП на этапе анализа и ранних стадиях проектирования решаются две задачи:

  • Выявление классов и объектов, составляющих словарь предметной области.
  • Построение структур, обеспечивающих взаимодействие объектов и классов, при котором наилучшим образом выполняются требования задачи.

Инкапсуляция выполняется посредством скрытия информации, то есть маскировкой всех внутренних деталей, не влияющих на внешнее поведение.

Модульность. Классы и объекты составляют логическую структуру системы, они помещаются в модули, образующие физическую структуру системы.

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

Иерархия. Выше были указаны два возможных вида иерархии сложных систем в реальном мире («is-a» и «part of«).  В ООП основным видом иерархии «is-a» является концепция наследования классов, а отношение «part of» (часть) вводит иерархию агрегации объектов.

Наследование означает такое отношение между классами (отношение родитель/потомок), когда один класс заимствует структурную или функциональную часть одного или нескольких других классов (соответственно, одиночное и множественное наследование). Так, например, в цепочке фигура -> многоугольник-> треугольник  отражена концепция множественного наследования.

Агрегация означает вхождение представителей объектов одних классов в описание других классов. Так, например, в описание класса “Автомобильный прицеп” входят 2 объекта класса “Колесная пара”. В свою очередь, в описание класса “колесная пара” входят 2 объекта класса “Колесо”.  Иерархия агрегации находит применение в  так называемой объектной модели программных систем (например, объектная модель AutoCAD)

Перспективы методологии программирования

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

 

Автор: Николай Свирневский

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *