Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
shpory_sistemy_realnogo_vremeni_p.doc
Скачиваний:
64
Добавлен:
06.03.2016
Размер:
1.73 Mб
Скачать

77. Примеры наследования

Примеры суперклассов и подклассов. В банковской системе класс Счет имеет два атрибута: номерСчета и баланс.

Пример полиморфизма и динамического связывания. Рассмотрим теперь создание объектов этих классов, а также пример полимор­физма и динамического связывания.

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

Рис.9.11. Пример абстрактного суперкласса и подклассов

78. Спецификация интерфейса класса

В спецификации интерфейса класса определяется интерфейс скрывающего информацию класса, в том числе его операции. Спецификация должна включать:

– описание информации, скрываемой классом, например инкапсулированную структуру данных (если речь идет о классе абстрагирования данных) или интерфейс устройства;

– критерий, на основании которого был выделен данный класс;

– предположения, сделанные при специфицировании класса: могут разные за­дачи получать одновременный доступ к операциям объекта этого класса или доступ должен быть строго последовательным;

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

– суперкласс (если есть);

– унаследованные операции (если есть);

– операции класса. Для каждой операции необходимо определить:

выполняемую функцию;

предусловие (условие, которое должно выполняться перед вызовом опе­рации);

постусловие (условие, которое должно выполняться после вызова опе­рации);

инвариант (условие, которое должно выполняться всегда);

входные параметры;

выходные параметры;

вызываемые операции других классов.

Спецификацию интерфейса класса можно представить в описательной или табличной форме.

79. Детальное проектирование по

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

80. Проектирование составных задач

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

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

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

Иногда полезно разделить обязанности между задачей и вложенными в нее классами. Управление, упорядочение событий и коммуникации поручаются зада­че, а все структурные детали оставляются на усмотрение скрывающего информа­цию класса.

Рассмотрим ввод/вывод с опросом с точки зрения разбиения на задачи и клас­сы. Задача выделяется при помощи критерия периодической (если устройство одно) или темпоральной (если устройств несколько) группировки. Каждое пас­сивное устройство ввода/вывода инкапсулируется в класс интерфейса устрой­ства. Необходимо определить операции, предоставляемые таким классом, и поме­стить класс внутрь задачи.

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

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

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