Использование STL. Часть первая.

Стандартная библиотека С++ и ее достаточно важная часть стандартная библиотека шаблонов призвана выполнять две основные задачи. Прежде всего - это набор стандартных типов данных и функций готовых к употреблению. И в тоже время - это среда разработки для создания и сохранения новых библиотечных компонентов.
Стандартная библиотека С++ в действительности состоит из 10 небольших библиотек:
- Библиотека языковой поддержки, которая содержит типы и функции, непосредственно связанные с работой компилятора С++. В частности сюда входят константы, определяющие диапазоны и уровень точности вычислений.
- Библиотека диагностики, содержит классы исключений и сообщения о ошибках
- Библиотека общего пользования, содержит большой набор средств, которые трудно отнести к какой нибудь специализированной библиотеке.
- Библиотека строк, содержит средства манипулирования текстовыми строками
- Библиотека локализаций - содержит наборы национальных и международных символов и форматов, необходимых для работы с датами, временем и валютой.
- Библиотека контейнеров.
- Библиотека итераторов.
- Библиотека алгоритмов.
- Библиотека чисел - представляет пользователям средства для работы с комплексными числами, специальные числовые массивы и алгоритмы вычислений.
- Библиотека ввода-вывода.
В данном цикле статей все части стандартной библиотеки мы охватить не сможем. Мы будем работать с библиотекой строк, контейнеров, итераторов, алгоритмов и библиотекой ввода-вывода.
В качестве цели мы будем разрабатывать маленькую электронную записную книжку(SmallPIM - Small Personal Information Meneger). В данной статье мы рассмотрим основные вопросы связанные с формулированием требований к проекту, следующая статье мы рассмотрим планирование классов - а написание кода - это будет уже темой следующей статьи.
Объектно-ориентированный анализ проекта
Формулирование требований
- Программа должна объединять в себе возможности адресной книги и календаря контактов. Адресная книга позволит пользователям сохранять и редактировать адреса и номера телефонов, просматривать и выбирать записи по именам, а так же осуществлять простой поиск записи по ключевому слову. Пользователь должен иметь возможность выбирать запись из общего списка и открывать ее для просмотра и редактирования.
- Календарь контактов позволит пользователям записывать и редактировать свединия о деловых контактах и событиях в хронологической последовательности. Нужно позволить просматривать список событий по месяцам, неделям и дням. В любом режиме просмотра пользователь должен иметь возможность выбрать запись и открыть ее для просмотра или редактирования
- Первая версия программы реализует работу через командную строку
- Первая версия программы сохраняет данные в файл в собственном формате.
- Программа должна иметь возможность дальнейшей модернизации:
- заменить интерфейс командной строки на графический или веб;
- добавить дополнительные функции обработки списков данных;
- добавить дополнительные функции по работе со временем.
- Программа будет создаваться в первую очередь с целью демонстрации различных возможностей стандартной библиотеки.
Анализ ситуаций использования
Ситуации ввода данных
- Пользователь хочет ввести новую запись адреса. Программа предлагает ввести ФИО, номер телефона, емайл, адрес. Обязательным является только ввод имени - все остальные данные пользователь вводит по желанию.
- Пользователь хочет изменить запись. Для этого он должен выбрать ее либо из списка, либо найти в поиске, после чего получает возможность изменить данные в любом из полей
- Пользователь хочет удалить запись. Для этого пользователь выбирает запись из списка, либо при помощи функции поиска и дает команду на удаление.
- Пользователь хочет создать контакт. Программа предлагает ввести конечную и начальную даты, а так же описание. Обязателен клонтроль времени - конечная дата не может быть меньше или раной начальной.
- Пользователь хочет изменить контакт. Для этого он выбирает его из списка или при помощи поиска и дает команду для редактирования. Обязателен контроль времени.
- Пользователь хочет удалить контакт. Для этого он выбирает его из списка или при помощи поиска и дает команду на удаление.
Ситуации поиска и отображения записей
- Пользователь хочет найти одну или несколько записей по имени или фамилии. Программа предлагает ввести имя (допускается частичный ввод)и/или фамилию. Если точное соотвествие не обнаружено, программа должна возвратить список записей для выбора пользователем, имена которых начинаются с введеной пользователем комбинации букв. Если несколько записей сосуществуют критерию - все они должны быть выведены.
- Пользователь хочет найти запись содержащую ключевое слово (комбинацию слов). Программа должна возвратить все записи соотвествующие критерию.
- Пользователь хочет просмотреть все контакты, назначенные на определенный день. Программа должна возвратить первые строки описаний всех контактов соответствующих указанной дате.
- Пользователь хочет просмотреть все контакты назначенные на определенную неделю. Программа должна возвратить первые строки описаний всех контактов соответствующих указанной дате.
- Пользователь хочет просмотреть на какие дни месяца у него назначены контакты. Программа должна возвратить календарь, в котором дни с контактами отмечены особым образом.
- Пользователь хочет посмотреть назначенные контакты на следующий день или следующую неделю. Программа должна обеспечить возможность быстрого возвращения подобной информации в хронологическом порядке с выводом первых строк описаний назначенных контактов.
- Пользователь хочет просмотреть все контакты назначенные им на некоторый промежуток времени. Программа должна предоставить возможность пользователю указать временной диапазон в днях, неделях или месяцах для возвращения всех соответствующих записей в хронологической последовательности.
Ситуации возникновения ошибок
- Пользователь ошибочно ввел запись с одинаковым именем и фамилией. Программа должна предупредить пользователя о существовании подобной записи и пердложить подтвердить ввод или отменить его.
- Пользователь пытается ввести контакт с временем начала раньше текущего. Программа должна предупредить его о этом.
- Пользователь пытается ввести контакт с временем окончания раньше времени начала. Программа должна предложить изменить время или отменить ввод.
В следующей статье мы рассмотрим планирование классов, которые будут нужны нам для работы и выделим общие логические компоненты программы.
(с)2009 Константин Малахов. При перепечатке ссылка на ресурс обязательна.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
