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



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

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

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

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

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

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

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

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

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

Выводы:

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

 

Понятие объекта. Состояние, поведение и индивидуальность объекта.

Категории операций над объектами.

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

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

Состояние(state)

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

Состояние объекта характеризуется перечнем (обычно статическим) всех свойств данного объекта и текущими (обычно динамическими) значениями каждого из этих свойств.

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

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

Тот факт, что всякий объект имеет состояние, означает, что всякий объект занимает определенное пространство (физически или в памяти компьютера).

Поведение(behavior)

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

Поведение - это то, как объект действует и реагирует; поведение выражается в терминах состояния объекта и передачи сообщений.

Иными словами, поведение объекта - это его наблюдаемая и проверяемая извне деятельность.

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

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

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

Состояние объекта представляет суммарный результат его поведения.

Операции (Категории операций над объектами).

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

Модификатор (функция управления) - операция, которая изменяет состояние объекта   

Селектор (функция доступа)- операция, считывающая состояние объекта, но не меняющая состояния     

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

Две операции являются универсальными; они обеспечивают инфраструктуру, необходимую для создания и уничтожения экземпляров класса:

Конструктор -Операция создания объекта и/или его инициализации        

Деструктор -Операция, освобождающая состояние объекта и/или разрушающая сам объект

Вспомогательные функции – функции, которые используются для реализации перечисленных операций.

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

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

Идентичность(identity)(индивидуальность)

Идентичность - это такое свойство объекта, которое отличает его от всех других объектов.

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

 


Дата добавления: 2018-06-01; просмотров: 1267; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!