Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Проектирование интерфейса классов



После того, как выработаны основные принципы построения архитектуры системы, остающаяся работа проста, но зачастую довольно скучна и утомительна. Следующий этап будет состоять в реализации трех или четырех семейств классов (таких, как очередь, множество и дерево) в соответствии с выбранной архитектурой, и в последующем их тестировании в нескольких приложениях [Вирфс-Брок считает, что необходимо тестировать среду разработки по крайней мере на трех приложениях, чтобы проверить правильность стратегических и тактических решений [15]].

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

• setHashFunction Устанавливает функцию хеширования для элементов множества.
• clear Очищает множество.
• add Добавляет элемент к множеству.
• remove Удаляет элемент из множества.
• setUnion Объединяет с другим множеством.
• intersection Находит пересечение с другим множеством.
• difference Удаляет элементы, которые содержатся в другом множестве.
• extent Возвращает количество элементов в множестве.
• isEmpty Возвращает 1, если множество пусто.
• isMember Возвращает 1, если данный элемент принадлежит множеству.
• isSubset Возвращает 1, если множество является подмножеством другого множества.
• isProperSubset Возвращает 1, если множество является собственным подмножеством другого множества.


Подобным же образом можно определить протокол класса BinaryTree:

• clear Уничтожает дерево и всех его потомков.
• insert Добавляет новый узел в корень дерева.
• append Добавляет к дереву потомка.
• remove Удаляет потомка из дерева.
• share Структурно делит данное дерево.
• swapChild Переставляет потомка с деревом.
• child Возвращает данного потомка.
• leftChild Возвращает левого потомка.
• rightChild Возвращает правого потомка.
• parent Возвращает родителя дерева.
• setItem Устанавливает элемент, ассоциированный с деревом.
• hasChildren Возвращает 1, если у дерева есть потомки.
• isNull Возвращает 1, если дерево нулевое.
• isShared Возвращает 1, если дерево структурно разделено.
• isRoot Возвращает 1, если дерево имеет корень.
• itemAt Возвращает элемент, ассоциированный с деревом.


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





Дата публикования: 2014-11-04; Прочитано: 199 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...