Объектно-ориентированное проектирование с примерами


Требования к библиотеке базовых классов - часть 2


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

Таким образом, первым результатом нашего анализа будет разделение всех абстракций на две категории:
 

• Структуры Содержит все структурные абстракции.
• Инструменты Содержит все алгоритмические абстракции.

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

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

Проведя анализ, мы выделим следующие типы структур:
 

• Набор Множество различных элементов (в том числе дубликатов).
• Множество Набор неповторяющихся элементов.
• Коллекция Индексируемое множество элементов.
• Список Последовательность элементов, имеющая начало; структурное разделение допускается.
• Стек Последовательность элементов; элементы могут удаляться и добавляться только с одного конца.
• Очередь Последовательность элементов, к которой можно добавлять элементы с одного конца, а удалять - с другого.
• Дека Последовательность элементов, к которой можно добавлять и из которой можно удалять элементы с обоих концов.
• Кольцо Последовательность элементов, к которой можно добавлять и из которой можно удалять элементы, находящиеся на вершине круговой структуры.
• Строка Индексируемая последовательность элементов, в которой возможны операции с подстроками.
• Ассоциативный массив Словарь пар "элемент/значение".
• Дерево Набор (имеющий начало - корень дерева) вершин и ребер, которые не могут образовывать циклы и пересекаться; структурное разделение допускается.
• Граф Множество вершин и ребер (без выделенного начального элемента), которое может содержать циклы и пересечения; структурное разделение допускается.
<


Начало  Назад  Вперед