Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Tekhnologia_Programmirovania_-_ekzamen.doc
Скачиваний:
0
Добавлен:
25.12.2019
Размер:
1.29 Mб
Скачать

3. Виды иерархий в программных системах.

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

Иерархия - это упорядочение абстракций, расположение их по уровням.

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

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

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

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

Примеры иерархии: агрегация. Если иерархия "is а" определяет отношение "обобщение/ специализация", то отношение "part of" (часть) вводит иерархию агрегации.

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

Время жизни агрегируемого и агрегирующего объектов (пример, колесо и автомобиль) могут не совпадать.

Выводы:

Виды иерархии в программных системах - упорядоченная по принципу старшинства система абстракций, связанных оп­ределенными отношениями. Иерархия: классов и объектов. 1) в иерархии классов м.б. несколько отношений: отношение на­следования - такое отношение классов, при котором один класс использует структуру и функциональную часть одного или нескольких других классов; отношение использования. 2) Иерархия объектов строится на отношении агрегатирования - т.е. отношении объектов, при кот. один объект содержит в своем составе др. объект (его часть), возможно другого класса. Интерфейс - абстрактный класс, который содержит только объ­явления методов и не содержит полей. Абстракции поведения - модель внешних свойств объекта; абстрактная функция - метод класса, для которого задана сигнатура, но не задана реализация

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]