Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекций.doc
Скачиваний:
108
Добавлен:
02.05.2014
Размер:
686.08 Кб
Скачать

Лекция 11

ОБЪЕКТНО-ОРИЕНТИРОВАННАЯ

КОНЦЕПЦИЯ ПРОГРАММИРОВАНИЯ

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

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

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

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

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

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

Развитие программной технологии привело к созданию методов объектно-ориентированного анализа, проектирования и программирования [10], которые напрвлены на решение задачи моделирования больших систем. Известны реализации этих подходов на различных вычислительных моделях (объектно-ориентированные Паскаль, Лисп, Пролог и т.п.).

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

Объектно-ориентированный подход оказывает заметное влияние на современную технологию программирования - создаются объектно-ориентированные языки программирования (CLU, SmallTalk, LOOPS, C++), библиотеки классов (Turbo Vision, Object Windows, Think Class Library) и объектно-ориентированные программные среды (Object Vision, HyperCard, SmallTalk/V). Широко применяется принцип событийного программирования: в проектируемой системе определяется набор событий - состояний системы, на которые она реагирует действием. Система состоит из генератора событий, обработчика событий и библиотеки модулей, реализующих реакции системы. Объектно-ориентированный подход в событийном программировании позволяет отделить интерфейсную часть программы от модулей обработки, упрощает отладку и модификацию программы. Событийное программирование позволяет эффективно реализовать интерактивные системы (Windows, System 7 и пр.). Крупнейшие фирмы по производству программного обеспечения используют объектно-ориентированный подход в качестве базового метода разработки.

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

Преимущества объектно-ориентированого подхода:

- объектно-ориентированый подход позволяет создавать хорошо структурированные большие системы;

- объектно-ориентированый подход в полной мере использует выразительные возможности объектно-ориентированых языков программирования;

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

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

- объектно-ориентированый подход является более естественным для человека.