Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
технология разработки ПО.doc
Скачиваний:
40
Добавлен:
31.03.2015
Размер:
193.54 Кб
Скачать

Основы объектно-ориентированного представления программных систем Принципы объектно-ориентированного представления программных систем

Рассмотрение любой сложной системы требует применения техники декомпозиции, т.е. разбиения на составляющие элементы. Известны две схемы декомпозиции:

- алгоритмическая

- объектно-ориентированная.

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

Объектно-ориентированное представление программных систем основывается на 4-х основных принципах:

- абстрагирование

- инкапсуляция

- модульность

- иерархическая организация

Каждый из этих принципов в отдельности не нов, но их совместное применение рассчитано на проведение объектно-ориентированной декомпозиции.

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

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

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

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

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

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

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

1) Структура из классов

2) Структура из объектов

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

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