Научитесь выбирать наиболее подходящие средства программирования  Еще один недостаток традиционного подхода обучения программированию состоит в том, что при ошеломляющем множестве средств и подходов мало внимания уделяется тому, как выбрать наиболее подходящее средство для решения конкретной задачи.
|
Для чего нужна стандартная библиотека C++  Стандарты языка C++ описываются в документе, состоящем из 776 страниц (ISO/IEC 14882, 1998). Примерно половина этого документа посвящена описанию библиотеки функций и классов, которые поставляются вместе со стандартным компилятором языка C++. Поэтому, если вы не знакомы со стандартной библиотекой C++, то половину его возможностей вы не знаете.
|
Что представляет собой стандартная библиотека C++  Стандартная библиотека C++ призвана выполнять две основные задачи. Прежде всего - это набор стандартных типов данных и функций, готовых к употреблению в любом компиляторе, который отвечает требованиям международных стандартов языка C++.
Библиотекой называется набор программных компонентов многоразового использования (классы, функции, макросы и т.д.), который создается для облегчения выполнения стандартных, наиболее общих задач программирования.
|
Части стандартной библиотеки  Стандартная библиотека C++ в действительности состоит из десяти небольших библиотек,
1. Библиотека языковой поддержки, которая содержит типы и функции, непосредственно связанные с работой компилятора языка программирования C++.
|
О наследстве стандартных библиотечных функций, оставшемся от языка С  Если вам приходилось программировать на языке С, то вы, безусловно, знакомы с библиотечными функциями стандартной библиотеки С. Такие функции, как printf, strcpy, atoi и прочие, по-прежнему доступны в языке C++, и позже мы рассмотрим их использование.
|
Какова разница между стандартной библиотекой C++ и стандартной библиотекой шаблонов  Стандартную библиотеку шаблонов еще называют библиотекой STL (Standard Template Library). Под этим термином понимают набор интерфейсов и компонентов, разработанных Александром Степановым (Alexander Stepanov) и другими сотрудниками AT&T Bell Laboratories и Hewlett-Packard Research Laboratories.
|
Принципы, положенные в основу библиотеки STL  Когда в конце 1993 года комитету по стандартизации языка C++ были предложены основные идеи создания библиотеки STL, они были приняты и поддержаны с большим энтузиазмом. Это был тот редкий случай, когда предлагалось простое и универсальное решение для многих назревших проблем.
|
Наш рабочий набор инструментов  По правде говоря, вы можете читать эту книгу, даже не дотрагиваясь до компьютера. Но чтобы процесс обучения был максимально эффективным, желательно, чтобы вы скомпилировали все или хотя бы некоторые примеры, предлагаемые в книге.
|
Особенности компиляции  Даже используя перечисленные выше компиляторы, следует помнить о возможных ошибках, недостатках и некоторой специфичности в работе каждого из них. В том случае, когда особенности работы могут повлиять на процесс компиляции программных кодов, в книге будут даны примечания, которые выглядят следующим образом.
|
Где можно достать стандартную библиотеку Многие компиляторы, перечисленные выше, содержат встроенную стандартную библиотеку.
Особенности компиляции. Версия стандартной библиотеки, встроенная в компилятор Microsoft Visual C++ 6.0 и его ранние версии, содержит ряд известных ошибок, допущенных изготовителями.
|
Знакомство с TinyPIM  Как уже говорилось во введении, мы будем изучать средства стандартной библиотеки C++ по мере создания реальной программы. Сейчас пришло время познакомить вас с нашим проектом.
|
Объектно-ориентированный анализ проекта Чтобы выработать требования к проекту, нужно четко представить себе потребности будущих пользователей вашей программы и то, каким образом программа должна удовлетворять эти потребности. Можно выделить два основных момента в проведении объектно-ориентированного анализа.
|
Анализ ситуаций использования Теперь, после того как мы уяснили для себя, над чем мы будем работать, рассмотрим вкратце некоторые возможные ситуации, на которые наша программа должна уметь адекватно реагировать. Работу следует начать с описания наиболее общих ситуаций использования, уделив особое внимание тому, когда и в каких целях пользователь может обратиться к программе.
|
Ситуации поиска и отображения списка записей  7. Пользователь хочет найти одну или несколько записей по имени. Программа предлагает ввести фамилию (полностью или частично) и, по желанию, имя. Если точное соответствие не обнаружено, программа должна возвратить список записей для выбора пользователем, в которых фамилии начинаются с указанной комбинации букв.
|
Ситуации возникновения ошибок 14. Пользователь ошибочно дважды ввел запись адреса с одинаковыми фамилией и именем. Программа должна предупредить пользователя о существовании подобной записи и предложить подтвердить ввод новой информации или отменить его.
|
Краткий вводный курс в UML  Диаграмма классов, показанная на рис. 1.2, описывает члены каждого класса и отношения между объектами этих классов. Отдельный класс представлен прямоугольником, разделенным на три секции. В верхней секции показано имя класса, в средней - список переменных-членов класса (постоянных переменных), в нижней - функции-члены класса.
|
Функциональное ядро Теперь, когда вы уже знаете немного о языке UML, давайте внимательно проанализируем диаграмму, представленную на рис. 1.2. Функциональное ядро PIM, как и следует из названия, является сердцевиной нашей программы TinyPIM.
|
Блок текстового пользовательского интерфейса Блок текстового пользовательского интерфейса ответствен за налаживание взаимодействия между пользователем и программой. В основе его будут использоваться главным образом средства ввода-вывода стандартной библиотеки C++.
|
Классы редакторов  Чтобы пользователь мог создать или изменить запись в книгах адресов или контактов, используются классы AddressEditor и Appointment Ed it or, которые поддерживают некоторые базовые функции текстовых редакторов. На рис. 1.4 в наиболее общих чертах показана структура классов редакторов.
|
Блок функций сохранения Функции блока сохранения ответственны за сохранение содержимого адресной книги и книги контактов в файлах на жестком диске или в базе данных, а также за возвращение этих данных в оперативную память при запуске программы.
|
Реализация класса Address для работы с текстовыми строками Объекты класса Address используются в программе TinyPIM для сохранения отдельных записей адресной книги. На эти объекты возложено не так-то много функций, это просто вместилища данных. Все переменные-члены класса Address являются текстовыми строками.
|
Строковые литералы  Строки, заключенные в парные кавычки, называются строковыми литералами. Строковый литерал "Hello" имеет тип const char[6] (требуется массив из 6 символов, поскольку один элемент массива отводится нулевому окончанию). Преобразование строк в массивы происходит в C++ автоматически, поэтому возможна следующая строка кода: const char* p = "Hello"; где р определяется как указатель на первую букву Н в слове Hello.
|
Особенности компиляции Некоторые изготовители компиляторов еще не перешли на новые соглашения об именах файлов заголовков. Чтобы избежать ошибок компиляции, вам, возможно, придется добавить к имени расширение .п и удалить первую букву с. Другое решение - создать собственные файлы заголовков и сохранить их под стандартными именами.
|
| Функция strcpy Некоторые изготовители компиляторов еще не перешли на новые соглашения об именах файлов заголовков. Чтобы избежать ошибок компиляции, вам, возможно, придется добавить к имени расширение .п и удалить первую букву с. Другое решение - создать собственные файлы заголовков и сохранить их под стандартными именами.
|