Оценка возможностей имитации интеллекта методами объектно-ориентированного программирования

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

Рубрика Программирование, компьютеры и кибернетика
Вид статья
Язык русский
Дата добавления 02.07.2018
Размер файла 44,7 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru//

Размещено на http://www.allbest.ru//

Хмельницкий национальный университет

Оценка возможностей имитации интеллекта методами объектно-ориентированного программирования

Н.С. Свирневский

Т.К. Скрипник

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

Постановка проблемы

Современные программные системы служат для моделирования различных аспектов реального мира, в том числе и интеллектуальной деятельности. Для обнаружения эффективных методов проектирования программных систем , с одной стороны, осуществляется поиск порядка в хаосе реального мира; с другой - учитывается предшествующий опыт по созданию более естественных для человека средств программирования.

Анализ последних исследований и публикаций

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

Рис.1 Концептуальная схема функционирования мозга человека

В публикации [2] описывается объектно - ориентированная методология проектирования больших программных систем, но не рассматриваются вопросы связанные с моделированием интеллектуальной деятельности.

Формулирование цели статьи

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

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

Целью статьи является оценка перспектив имитации интеллектуальной деятельности при помощи методов объектно-ориентированного стиля проектирования программ [2]

Изложение основного материала

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

Иерархичность.

Произвольность выбора компонент.

Различие внутрикомпонентных и межкомпонентных взаимодействий.

Одинаковые структурные части.

Тенденция к развитию.

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

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

Умение классифицировать образы с самостоятельным выбором существенных признаков - является одним из важнейших факторов в формировании у человека реального восприятия окружающей действительности. Приведем пример, демонстрирующий это. После своего рождения у ребенка в течении 3-х месяцев ограничены возможности видеть. Т.е., он лишь видит мир красок (растровое изображение) и способен фиксировать элементарные признаки (белое, черное, разноцветное, яркое и др.). В процессе созидательного наблюдения он выделяет, что некоторые признаки регулярно присутствуют в различных сочетаниях. Например, из всех углов наиболее часто выделяются прямые углы. Эти сочетания он фиксирует в памяти как существенные признаки. Из некоторых сочетаний признаков формируются конкретные образы и обобщающие понятия. Согласно этой схеме изучая, например, слона человек создаёт в мозгу модель его образа из признаков-характеристик - четвероногость, серость, огромность и др. Затем сохраняет этот образ в памяти

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

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

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

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

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

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

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

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

Абстракция объекта всегда предшествует его реализации. А после того, как решение о реализации принято, оно должно трактоваться как секрет абстракции, скрытый от большинства клиентов. Никакая часть сложной системы не должна зависеть от внутреннего устройства какой-либо другой части. Абстракция и инкапсуляция дополняют друг друга: абстрагирование направлено на наблюдаемое поведение объекта, а инкапсуляция занимается внутренним устройством. Чаще всего инкапсуляция выполняется посредством скрытия информации, то есть маскировкой всех внутренних деталей, не влияющих на внешнее поведение. Обычно скрываются внутренняя структура объекта и реализация его методов. Инкапсуляция, таким образом, определяет четкие границы между различными абстракциями. Возьмем для примера структуру растения: чтобы понять на верхнем уровне действие фотосинтеза, вполне допустимо игнорировать такие подробности, как функции корней растения или химию клеточных стенок. Аналогичным образом при проектировании базы данных принято писать программы так, чтобы они не зависели от физического представления данных; вместо этого сосредотачиваются на схеме, отражающей логическое строение данных. В обоих случаях объекты защищены от деталей реализации объектов более низкого уровня. Интерфейс отражает внешнее поведение объекта, описывая абстракцию поведения всех объектов данного класса. Внутренняя реализация описывает представление этой абстракции и механизмы достижения желаемого поведения объекта.

Классы и объекты составляют логическую структуру системы, они помещаются в модули, образующие физическую структуру системы. Это свойство становится особенно полезным, когда система состоит из многих сотен классов. Логика электронного оборудования может быть построена на основе элементарных схем типа НЕ, И-НЕ, ИЛИ-НЕ, но можно объединить такие схемы в стандартные интегральные схемы (модули), например, серий 7400, 7402 или 7404. Модульность - это разделение программы на фрагменты, которые компилируются по отдельности, но могут устанавливать связи с другими модулями. Конечной целью декомпозиции программы на модули является снижение затрат на программирование за счет независимой разработки и тестирования. Для небольших задач допустимо описание всех классов и объектов в одном модуле. Однако для большинства программ (кроме самых тривиальных) лучшим решением будет сгруппировать в отдельный модуль логически связанные классы и объекты, оставив открытыми те элементы, которые совершенно необходимо видеть другим модулям.

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

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

Выше были указаны два возможных вида иерархии сложных систем в реальном мире. В объектно - ориентированном программировании основным видом иерархии "is-a" является концепция наследования. Наследование означает такое отношение между классами (отношение родитель/потомок), когда один класс заимствует структурную или функциональную часть одного или нескольких других классов (соответственно, одиночное и множественное наследование). Иными словами, наследование создает такую иерархию абстракций, в которой подклассы наследуют строение от одного или нескольких суперклассов. Принципы инкапсуляции и наследования находятся между собой в некоем здоровом конфликте. Инкапсуляция данных создает барьер, скрывающий состояние и функции объекта; принцип наследования требует открыть доступ и к состоянию, и к функциям объекта для производных объектов. Компромисс между наследованием и инкапсуляцией; наиболее гибким в этом отношении является C++. В нем интерфейс класса может быть разделен на три части: закрытую (private), видимую только для самого класса; защищенную (protected), видимую также и для подклассов; и открытую (public), видимую для всех.

Если иерархия "is а" определяет отношение "обобщение/специализация", то отношение "part of" (часть) вводит иерархию агрегации. Наример, имеются много различных типов объектов в AutoCAD ActiveX интерфейсе. Каждый описанный объект представляет определенную часть AutoCAD. Например, графические объекты типа линий, дуг, текста, и размеров -- объекты; организационные структуры типа уровней, групп, и блоков тоже объекты, даже рисунок и AutoCAD прикладная программа - объекты. Объекты структурированы иерархическим способом в так называемой объектной модели. Агрегация есть во всех языках, использующих структуры или записи, состоящие из разнотипных данных. Но в объектно-ориентированном программировании она обретает новую мощь: агрегация позволяет физически сгруппировать логически связанные структуры, а наследование с легкостью копирует эти общие группы в различные абстракции.

Мы рассмотрели систему с двух точек зрения, как иерархию первого и второго типа. Назовем эти иерархии соответственно структура объектов и структура классов. Объектов в сложной системе обычно гораздо больше, чем классов. Если бы мы не знали структуру классов нашей системы, нам пришлось бы повторять одни и те же сведения для каждого экземпляра класса. С введением структуры классов мы размещаем в ней общие свойства экземпляров. Объектная структура важна, так как она иллюстрирует схему взаимодействия объектов друг с другом , которое осуществляется с помощью механизмов взаимодействия. Структура классов не менее важна: она определяет общность структур и поведения внутри системы . Зачем, например, изучать фотосинтез каждой клетки отдельного листа растения, когда достаточно изучить одну такую клетку, поскольку мы ожидаем, что все остальные ведут себя подобным же образом. И хотя мы рассматриваем каждый объект определенного типа как отдельный, можно предположить, что его поведение будет похоже на поведение других объектов того же типа. Классифицируя объекты по группам родственных абстракций (например, типы клеток растений в противовес клеткам животных), мы четко разделяем общие и уникальные свойства разных объектов, что помогает нам затем справляться со свойственной им сложностью.

имитация интеллектуальный класс программирование

Перспективы дальнейших исследований

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

Литература

Свирневский Н.С. Оценка возможности имитации интеллекта на компьютере, Хмельницький: Вісник ТУП, Технічні науки.- 2004.- №1,Ч.1- с.166-168.

Гради Буч, "Объектно-ориентированный анализ и проектирование с примерами приложений", Москва: Диалектика-Вильямс, 3е изд., 2008 год

Размещено на Allbest.ru

...

Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.