Упорядочивание и ОО-разработка
Упорядочивание и ОО-разработка
Риск преждевременного упорядочивания заслуживает более глубокого рассмотрения, поскольку даже ОО-проектировщики не имеют к нему иммунитета. Подход списка покупок - это один из наименее понятных компонентов метода. Довольно часто можно встретить ОО-проекты, попавшие в старую ловушку, что немедленно отражается на их качестве. В частности, это может быть результатом неправильного использования идеи разбора случаев - case технологии, с которой мы встретимся при изучении ОО-методологии.
Проблема в том, что порядок операций, кажущийся очевидным свойством системы и ничему не обязывающий на ранних этапах проектирования, приводит к ужасным последствиям, если после всех уточнений его придется изменить. Альтернативный метод - подход списка покупок - кажется с первого взгляда менее естественным, но значительно более гибок, поскольку использует логические, а не временные ограничения. Он основан на концепции утверждений, разрабатываемой позже в этой книге (см. лекцию 11). Продемонстрируем теперь основные идеи на не программистском примере.
Рассмотрим проблему покупки дома, сведя ее к трем операциям: нахождение подходящего дома, получение ссуды, подписание контракта. Используя метод, основанный на упорядочивании, опишем наш проект, как простую последовательность шагов:
[H]
найти_дом
получить_ссуду
подписать_контракт
В подходе списка покупок при ОО-разработке мы бы на данном этапе отказались бы придавать так много значения порядку операций. Но, конечно, ограничения между операциями существуют, - нельзя подписать контракт, если у вас нет подходящего дома и нет денег на его покупку. Мы можем выразить эти ограничения в логической форме:
[H1]
найти_дом
ensure
дом_найден
получить_ссуду
ensure
ссуда_получена
подписать_контракт
require
дом_найден and ссуда_получена
Нотация будет введена только в лекции 11, но и здесь все должно быть достаточно ясно. Предложение require задает предусловие, логическое свойство, требуемое операцией перед ее выполнением; ensure - задает постусловие, свойство, выполняемое после завершения операции. Тем самым нам удалось описать результат двух операций, и то, что последняя операция требует для своего выполнения достижения результата этих операций.
Почему логическая форма H1, устанавливающая ограничения, лучше, чем временная форма H? Ответ ясен: H1 выражает минимум требований, избегая чрезмерной спецификации, характерной для H. В самом деле, почему не получить ранее ссуду, а потом уже думать о покупке дома, располагая определенными деньгами, это тактика может быть вполне оправдана для покупателя, у которого главная проблема - финансовая. Насколько возможно, следует поддерживать оба возможных порядка действий, соблюдая логические ограничения.
Подход, основанный не на порядке операций, а на логических ограничениях, более уравновешенный. Каждая операция просто устанавливает, что ей необходимо и что она гарантирует, -все это в терминах абстрактных свойств.
Эти замечания важны, в частности, и для объектных проектировщиков, кто все еще может находиться в плену функциональных идей, и будет пытаться применить раннюю идентификацию системы, используя сценарии (case технологию) как основу анализа. Это несовместимо с ОО-принципами и часто приводит в чистом виде к функциональной декомпозиции сверху вниз, даже если члены команды уверены, что они используют ОО-метод.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Упорядочивание окон
Упорядочивание окон Windows позволяет упорядочить на экране открытые окна. Для этого предназначены команды контекстного меню Панели задач. Нужно установить указатель мыши на свободный участок Панели задач, щелкнуть правой кнопкой и в появившемся контекстном меню
Разработка макета
Разработка макета При разработке макета необходимо ответить на вопрос: «Как вы доведете до совершенства то, что наметили во время предыдущего этапа?»Именно здесь ваш каркас начинает обрастать контентом. Создавая макет, вы ищете слова, которые привлекут внимание
Разработка формы
Разработка формы Создайте новый проект Delphi. Первым делом разработаем интерфейс программы. Изменим некоторые свойства главной формы. Прежде всего, присвойте соответствующее значение свойству Caption (заголовок формы) — например, Работа с файлами. Поскольку окно нашей
Разработка формы
Разработка формы Создайте новый проект Delphi. Разместите на форме компонент Image категории Additional, который будет служить для отображения рисунка. Для того чтобы при любых размерах окна рисунок всегда заполнял всю форму, следует изменить значение свойства Align на alClient.Для
Разработка формы
Разработка формы Создадим новый проект Delphi. Интерфейс программы сделаем похожим на интерфейс стандартного блокнота. Разместите на форме компонент Memo (многострочное текстовое поле) категории Standard. Для того чтобы при любых размерах окна этот компонент заполнял всю форму,
Разработка формы
Разработка формы Создадим новый проект Delphi. Мелькающее окно у нас будет необычным: оно будет без заголовка и не прямоугольным, а эллиптической формы. Измените свойства формы согласно табл. 8.1.Таблица 8.1. Свойства формы игры "Успей щелкнуть" Свойство Значение
Разработка формы
Разработка формы Создайте новый проект Delphi и измените свойства формы согласно табл. 10.1.Таблица 10.1. Свойства формы программы входа в систему Свойство Значение Пояснение Caption Очистить заголовок Align alCustom Запрет на перемещение окна ВorderStyle bsNone Убираем границу и
Разработка формы
Разработка формы Создайте новый проект Delphi и присвойте свойству Caption формы значение Memory Info.Для вывода различной информации о памяти мы будем использовать компонент Label категории Standard. Разместите на форме один над другим семь таких компонентов, присвоив свойству Left
Разработка формы
Разработка формы Создайте новый проект Delphi. Присвойте свойству Caption формы значение Настройка ОС Windows. Разместите на форме компонент GroupBox категории Standard и присвойте его свойству Caption значение Опции. На компоненте GroupBox разместите один над другим три компонента CheckBox
Разработка формы
Разработка формы Создайте новый проект Delphi. Присвойте свойству Caption формы значение Tester, а свойству BorderStyle — bsNone. У верхнего края формы разместите компонент Label категории Standard, присвоив его свойству Caption значение Первый вопрос:.Ниже разместите компонент Memo категории Standard, с
Разработка формы
Разработка формы Создайте новый проект Delphi. Для того чтобы выполнять периодические действия, нам понадобится компонент Timer категории System. Программа будет выполнять каждую минуту случайно выбранную шутку. Для того чтобы таймер срабатывал каждую минуту, необходимо
Разработка формы
Разработка формы Создайте новый проект Delphi. Присвойте свойству Caption формы заголовок Remote Mouse. Разместите на форме компонент Label категории Standard и присвойте его свойству Caption значение Port. Справа от этой метки разместите компонент Edit категории Standard. Назовите его port (свойство
Урок 2.5. Упорядочивание и поиск файлов
Урок 2.5. Упорядочивание и поиск файлов Общие сведения о поиске и индексировании Количество файлов на современных жестких дисках может составлять десятки и сотни тысяч. Если вы забыли, где именно находится файл, то его поиск может оказаться довольно непростой задачей. В
Упорядочивание объектов в Проводнике
Упорядочивание объектов в Проводнике При любом способе отображения информации в Проводнике видны заголовки столбцов, с помощью которых можно выполнить сортировку, группировку и фильтрацию содержимого окна. Большинство обычных папок содержит заголовки Имя, Дата
Практическая работа 13. Упорядочивание и поиск файлов в Windows Vista
Практическая работа 13. Упорядочивание и поиск файлов в Windows Vista Задание 1. Изучить различные способы упорядочивания объектов.Последовательность выполнения1. Последовательно откройте в Проводнике Windows Vista папки С:Пользователи ? Общие ? Изображения ? Образцы изображений.2.
Поиск и упорядочивание в библиотеке
Поиск и упорядочивание в библиотеке В правой верхней части окна библиотеки можно встретить уже знакомую по ранее рассмотренным приложениям строку поиска. С ее помощью вы можете быстро находить нужные композиции, набрав только первые буквы названия песни, альбома,