Студопедия

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника



Наследование и отложенные классы




Читайте также:
  1. VI.3.2) Наследование по закону.
  2. VI.3.3.) Наследование по завещанию.
  3. Базовые классы VCL
  4. Базовые классы VCL. Характеристика. Примеры.
  5. Библиотека визуальных компонентов VCL и ее базовые классы
  6. Вопрос.Наследование по завещанию.
  7. Вопрос.Наследование по закону.
  8. Деление пожаров на классы позволяет быстро оценить обстановку и правильно выбрать средства и метод тушения.
  9. і Классы обслуживания
  10. Классы ! открытое общество

Класс STATE описывает не частное состояние, а общее понятие состояния. Процедура execute - одна и та же для всех состояний, но другие подпрограммы зависят от состояния.

Наследование и отложенные классы идеально позволяют справиться с этими ситуациями. На уровне описания класса STATE мы знаем атрибуты и процедуру execute во всех деталях. Мы знаем также о существовании программ уровня 1 ( display и др.) и их спецификации, но не их реализации. Эти программы должны быть отложенными, класс STATE, описывающий множество вариантов, а не полностью уточненную абстракцию, сам является отложенным классом. В результате имеем:

indexing

description: "Состояния приложений, управляемых панелями"

deferred class

STATE

feature -- Access

choice: INTEGER

-- Пользовательский выбор следующего шага

input: ANSWER

-- Пользовательские ответы на вопросы в данном состоянии

feature -- Status report

correct: BOOLEAN is

-- Является ли input корректным ответом?

deferred

end

feature -- Basic operations

display is

-- Отображает панель, связанную с текущим состоянием

deferred

end

execute is

-- Выполняет действия, связанные с текущим состоянием,

-- и устанавливает choice - пользовательский выбор

local

ok: BOOLEAN

do

from ok := False until ok loop

display; read; ok := correct

if not ok then message end

end

process

ensure

ok

end

message is

-- Вывод сообщения об ошибке, соответствующей input

require

not correct

deferred

end

read is

-- Получить ответы пользователя input и choice

deferred

end

process is

-- Обработка input

require

correct

deferred

end

end

Для описания специфических состояний следует ввести потомков класса STATE, задающих отложенную реализацию компонент.


Рис. 2.7.Иерархия классов State

Пример мог бы выглядеть следующим образом:

class ENQUIRY_ON_FLIGHTS inherit

STATE

feature

display is

do

...Специфическая процедура вывода на экран...

end

...И аналогично для read, correct, message и process ...

end

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



Класс STATE является типичным представителем поведенческих классов ( behavior classes, см. лекцию 14 курса "Основы объектно-ориентированного программирования") - отложенных классов, задающих общее поведение большого числа возможных объектов, реализующих то, что полностью известно на общем уровне ( execute ) в терминах, зависящих от каждого варианта. Наследование и отложенный механизм задают основу представления такого поведения повторно используемых компонентов.


Дата добавления: 2014-12-03; просмотров: 16; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2020 год. (0.009 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты