Четкое разделение ролей

Четкое разделение ролей

Интересно сравнить формальные роли тела и предложения Rescuer:

{prer and INV} Bodyr {postr (xr) INV}

{True} Rescuer {INV}

Входное утверждение сильнее для Bodyr - в то время, когда Rescuer не накладывает никаких требований, перед началом выполнение тела программы (предложения do) должно выполняться предусловие и инвариант. Это упрощает работу Bodyr.

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

Эти правила отражают разделение ролей между предложением do и предложением rescue. Задача тела обеспечить выполнение контракта программы, не управляя непосредственно исключениями. Задача rescue - управлять обработкой исключениями, возвращая управление либо телу программы, либо вызывающей программе. Но в обязанности rescue не входит обеспечение контракта.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг:

9.1.1.2. Разделение дескрипторов файлов

Из книги автора

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


11.2.2 Разделение памяти

Из книги автора

11.2.2 Разделение памяти Процессы могут взаимодействовать друг с другом непосредственно путем разделения (совместного использования) участков виртуального адресного пространства и обмена данными через разделяемую память. Системные функции для работы с разделяемой


9.3.5. Разделение кэша

Из книги автора

9.3.5. Разделение кэша Чтобы ваш сервер мог обмениваться запросами с другими squid-серверами, разделяя таким образом содержимое кэша, вы должны настроить соответствующий протокол.Дня этого есть следующие директивы:? icp_port n — номер порта, который будет использоваться для


Разделение файлов с помощью NFS

Из книги автора

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


15.7. Разделение канала

Из книги автора

15.7. Разделение канала Допустим, вам нужно настроить прокси-сервер таким образом, чтобы одна группа компьютеров могла работать с одной скоростью, а другая — с другой. Это может потребоваться, например, для разграничения пользователей, которые используют канал для работы,


Разделение рисунка по слоям

Из книги автора

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


Разделение тел

Из книги автора

Разделение тел При разделении трехмерного тела команду редактирования SOLIDEDIT следует вызывать из падающего меню Modify ? Solid Editing ? Separate либо щелчком на пиктограмме Separate на плавающей панели инструментов Solid Editing. В команде используются ключи Body, Separate.При использовании команды


7.7. Разделение диапазона

Из книги автора

7.7. Разделение диапазона ПроблемаИмеется диапазон элементов, которые требуется каким-либо образом разделить на группы. Например, необходимо переместить в начало диапазона все элементы, которые меньше определенного значения.РешениеДля перемещения элементов


Разделение рисунка по слоям

Из книги автора

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


Разделение тел

Из книги автора

Разделение тел При разделении трехмерного тела команду редактирования SOLIDEDIT следует вызывать из падающего меню Modify ? Solid Editing ? Separate либо щелчком на пиктограмме Separate на плавающей панели инструментов Solid Editing. В команде используются ключи Body, Separate.При использовании команды


Разделение рисунка по слоям

Из книги автора

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


Разделение тел

Из книги автора

Разделение тел При разделении трехмерного тела команду редактирования SOLIDEDIT следует вызывать из падающего меню Modify ? Solid Editing ? Separate либо щелчком на пиктограмме Separate на плавающей панели инструментов Solid Editing. В команде используются ключи Body, Separate.При использовании команды


Разделение и объединение сцен

Из книги автора

Разделение и объединение сцен В этом подразделе речь пойдет о тех же операциях разделения (разбивки) и объединения сцен, о которых было рассказано в гл. 3. Данные действия в окне Фильм имеют некоторые особенности, о которых следует упомянуть.Любую помещенную в проект сцену


Разделение ключа

Из книги автора

Разделение ключа Говорят, что секрет — это уже не секрет, когда его знают двое. Разделение закрытого ключа опровергает такое мнение. Хотя это и не рекомендуемая практика, разделение закрытого ключа в определённых ситуациях бывает необходимо. Например, корпоративные