Определение иерархической структуры программы

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

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

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

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

Урок 3. Создание структуры рабочего каталога программы

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

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

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

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

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

Выводы:

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

Читайте также:
Альтернативная программа дошкольного образования это

2.1.3.1 Планирование проекта. Создание иерархической структуры работ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Читайте также:
Как создать установочный пакет программы

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Источник: studopedia.net

Основы программирования

Интернет Магазин Продукции Apple в Санкт-Петербурге

Характеристики иерархической структуры программной системы

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

Иерархическая структура не отражает процедурные особенности программной системы, то есть последовательность операций, их повторение, ветвления и т. д. Рассмотрим основные характеристики иерархической структуры, представленной на рис. 4.17.

Рис. 4.17. Иерархическая структура программной системы

Первичными характеристиками являются количество вершин (модулей) и количество ребер (связей между модулями). К ним добавляются две глобальные характеристики — высота и ширина:

  • высота — количество уровней управления;
  • ширина — максимальное из количеств модулей, размещенных на уровнях управления.

В нашем примере высота = 4, ширина = 6.

Локальными характеристиками модулей структуры являются коэффициент объединения по входу и коэффициент разветвления по выходу.

Коэффициент объединения по входу Fan_in(i) — это количество модулей, которые прямо управляют i-м модулем.

В примере для модуля n: Fan_in(n)=4.

Коэффициент разветвления по выходу Fan_out(i) — это количество модулей, которыми прямо управляет i-й модуль.

Читайте также:
В какой программе можно создать подарочный сертификат

В примере для модуля m: Fan_out(m)=3.

Четыре правила простой архитектуры Кента Бека (в порядке приоритета):

  1. ВЫПОЛНЕНИЕ ВСЕХ ТЕСТОВ.
  2. ОТСУТСТВИЕ ДУБЛИРОВАНИЯ КОДА.
  3. ВЫРАЗИТЕЛЬНОСТЬ.
  4. МИНИМУМ КЛАССОВ И МЕТОДОВ.

ЛЕКЦИЯ 3. Паттерны проектирования.

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

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

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

На наивысшем уровне существуют архитектурные шаблоны, они охватывают собой архитектуру всей программной системы.

Фундаментальные паттерны. Шаблон делегирования.

Это способ, которым объект внешне выражает некоторое поведение, но в реальности передаёт ответственность за выполнение этого поведения связанному объекту. Шаблон делегирования является фундаментальной абстракцией, которая поддерживает композицию и агрегацию, примеси (mixins) и аспекты (aspects).

Цель: Возможность изменить поведение конкретного экземпляра объекта вместо создания нового класса путем наследования.

Композиция и агрегирование.

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

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

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

Это означает, что в случае композитного агрегирования объект в любой момент времени может быть частью только одного композита. Например, в оконной системе класс Frame (Рама) принадлежит только одному классу Window (Окно), тогда как при простом агрегировании «часть» может принадлежать одновременно нескольким «целым». Скажем, в модели дома объект Стена может принадлежать нескольким объектам Комната.

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

void SetSpeed( int nSpeed )

Источник: studfile.net

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru