ebook img

C++. Энциклопедия пользователя PDF

581 Pages·2001·35.439 MB·Russian
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview C++. Энциклопедия пользователя

Дж.Либерти C++. ЭНЦИКЛОПЕДИЯ ПОЛЬЗОВАТЕЛЯ Книга C++. Энциклопедия пользователя содержит обзор актуальных тем, связанных с языком программирования C++. В книге рассматриваются вопросы объектно-ориентированного анализа и проектирования, универсального языка программирования UML и разработки объектных моделей. Достаточно подробно представлены вопросы реализации приложений, а также стандартная библиотека шаблонов STL. Особое внимание уделено обработке данных, живучести объектов и шифрованию, архитектуре CORBA и модели СОМ. Прилагаемый CD-ROM содержит исходные тексты примеров, рассмотренных в книге. Книга рассчитана на читателей, которые имеют начальные сведения и знания по программированию на языке C++. Оглавление Введение 13 Часть I. Объектно-ориентированное программирование 15 Глава 1.Объектно-ориентированный анализ и проектирование 16 Построение моделей 17 Разработка программ: язык моделирования 17 Разработка программ: процессы 18 Замысел 20 Анализ требований 20 Примеры использования 20 Анализ приложения 27 Анализ систем 27 Планирование выпуска документов 27 Иллюстративный материал 28 Артефакты 28 Проектирование 29 Что такое классы 29 Преобразования 30 Статическая модель 31 Динамическая модель 37 Резюме 39 Глава 2. Проектирование классов в C++ 40 Перевод диаграмм классов в C++ 41 Стандартные классы 41 Шаблонные классы 42 Служебные классы 42 Ассоциации 43 Агрегации 47 Обобщение 49 Перевод диаграмм взаимодействия в C++ 50 Реализация диаграмм совместных работ и диаграмм последовательности 50 действий в C++ Перевод диаграмм состояний в C++ 55 Перевод диаграмм активности в C++ 57 Резюме 59 Глава3.Наследование, полиморфизм и повторное использование 60 программных кодов Преимущества наследования 61 Объектно-ориентированные связанные списки 61 Разработка связанного списка 62 Реализация связанного списка 62 Абстрактные классы 67 Перекрытие чисто виртуальных методов 70 Виртуальные деструкторы 71 Полиморфизм, реализованный путем перегрузки методов класса 71 Управление памятью 74 Проблемы, сопровождающие перегрузку других операторов 77 Оператор присваивания 78 Перегрузка операторов увеличения 80 Виртуальный конструктор копий 83 Множественное наследование 83 Проблемы множественного наследования 84 Множественное наследование и включение 87 Резюме 88 Часть II. Вопросы реализации 89 Глава 4. Управление памятью 90 Управление памятью и указатели 91 Расход памяти 94 Распределение массивов 94 Паразитные, болтающиеся и дикие указатели 95 Указатели const 96 Указатели const и функции-члены const 96 Передача по ссылке 96 Передача указателя const 97 Возврат ссылки на объект, который не находится в области 97 видимости Указатель, указатель, указатель 99 Указатели и исключения 100 Использование автоуказателей 104 Подсчет ссылок 108 Резюме 118 Глава 5. Использование каркасов приложений 119 Microsoft Foundation Classes 120 Приступая к изучению 120 Другие мастера 122 В перспективе 122 Архитектура приложения 122 Многопоточность 122 Кооперативная многопоточность против вытесняющей 123 Проблемы вытесняющей многопоточности 123 Пример для изучения 124 Создание потоков 125 Пример 129 Служебные классы 137 Классы манипулирования строками 137 Классы времени 137 Документы и представления 138 Представления 139 Резюме 147 Глава 6. Контейнерные классы библиотеки STL 148 Определение и реализация шаблонов 149 Определение и реализация шаблонов функций 149 Определение и реализация шаблонов классов 149 Последовательные контейнеры 150 Контейнер-вектор 150 Контейнер-список 163 Контейнер-дека 172 Стеки 173 Очереди 175 Приоритетные очереди 177 Связанные контейнеры 178 Контейнер-запись 178 Множественные записи 187 Контейнер-набор 189 Множественные наборы 189 Вопросы производительности 190 Использование стандартной библиотеки C++ 190 Конструирование типов элементов 191 Резюме 192 Глава 7. Итераторы и алгоритмы STL 193 Классы итераторов 194 Позиция внутри контейнера 194 Типы итераторов контейнеров 194 Базовый класс итераторов 195 Вводные итераторы 196 Выводные итераторы 197 Пересылаемые итераторы 197 Двунаправленные итераторы 197 Итераторы произвольного доступа 197 Итераторные операции 197 Классы стандартных итераторов 199 Объекты-функции 200 Предикаты 201 Арифметические функции 202 Алгоритмы STL 203 Операции немутирующих последовательностей 203 Алгоритмы мутирующих последовательностей 211 Операции сортировки и связности последовательностей 221 Стандартные функции 238 Резюме 243 Глава 8. Исключение конфликтов имен 244 Функции и классы, разрешаемые по именам 245 Создание пространства имен 248 Использование пространства имен 250 Ключевое слово using 252 Объявление using 254 Псевдоним пространства имен 255 Неименованное пространство имен 255 Стандартное пространство имен 256 Резюме 257 Глава 9. Манипулирование типами объектов 258 Оператор typeid() 259 Класс type_info 259 Конструктор для класса type_info 260 Операторы сравнения 260 Функция-член name() 261 Функция-член before() 263 Оператор typeid() в конструкторах и деструкторах 264 Неправильное использование typeid() 264 Динамическое приведение объектов 265 Оператор dynamic_cast() 266 Операторы typeid() и dynamic_cast 269 Другие операторы приведения 270 Оператор static_cast() 270 Оператор reinterpret_cast() 271 Когда использовать операторы dynamic_cast(), static_cast() или 271 reinterpret_cast() Оператор const_cast() 272 Новые приведения против старых 272 Резюме 273 Глава 10. Настройка производительности приложения 274 Функции inline вне определений классов 275 Как избежать раскрытия программного кода реализации в 279 распространяемых header-файлах Анализ стоимости виртуальных функций и виртуальных базовых классов 280 Виртуальные функции 280 Виртуальные базовые классы 283 Компромиссы RTTI 285 Управление памятью для временных объектов 287 Резюме 289 Часть III. Обработка данных 291 Глава 11. Рекурсия и рекурсивные структуры данных 292 Что такое рекурсия 293 Числа Фибоначчи: рекурсивное определение 293 Остановка рекурсии 294 Рекурсивные структуры 294 Обход рекурсивной структуры с помощью рекурсивной функции 296 Цикл и хвостовая рекурсия 299 Хвостовая рекурсия 301 Непрямая рекурсия 302 Рекурсия и стек 302 Отладка рекурсивных функций 303 Резюме 304 Глава 12. Использование методов сортировки 305 Анализ производительности алгоритмов 306 Сравнение среднего, худшего и лучшего случаев 306 Стабильностьсортировки 307 Использование дополнительных способов хранения во время 307 сортировки Пузырьковая сортировка 308 Анализ пузырьковой сортировки 309 Сортировка вставками 309 Анализ сортировки вставками 311 Сортировка выбором 311 Анализ сортировки выбором 313 Быстрая сортировка 313 Анализ быстрой сортировки 315 Сортировка слиянием 315 Анализ сортировки слиянием 318 Сортировка по методу Шелла 318 Анализ сортировки по методу Шелла 320 Пирамидальная сортировка 320 Анализ пирамидальной сортировки 322 Выбор метода сортировки 322 Генерирование тестовых данных 323 Резюме 325 Глава 13. Алгоритмы поиска данных 326 Линейный поиск 327 Анализ линейного поиска 328 Поиск в отсортированном массиве 328 Сопоставление с образцом 330 Грубый алгоритм 331 Представление образца 331 Построение конечных автоматов 332 Алгоритмы поиска на графе 333 Поиск в глубину 334 Поиск в ширину 335 Сравнение поиска в глубину и поиска в ширину 336 Поиск по первому наилучшему совпадению 336 Реализация объектов графов 337 Представление игры Tic-Tac-Toe 340 Применение альфа-бета-отсечений 340 Задача коммивояжера 341 Внешний поиск 342 Индексированный последовательный доступ 342 Двоичные деревья 342 Деревья 2-3-4 343 Резюме 344 Глава 14. Хеширование и синтаксический анализ 345 Сравнение поиска и хеширования 346 Функции хеширования 346 Разрешение конфликтов 347 Линейное повторное хеширование 347 Нелинейное повторное хеширование 347 Коэффициент загрузки(альфа) 348 Связывание в цепочку 349 Адресация областей памяти 349 Синтаксический разбор 358 Синтаксический разбор числовых выражений 359 Синтаксический разбор строковых выражений 360 Контекстно-свободная грамматика и синтаксический анализ 361 Выполнение нисходящего синтаксического разбора для проверки 361 правильности регулярных выражений Резюме 362 Часть IV. Живучесть объектов и шифрование 363 Глава 15. Живучесть объектов 364 Создание хранимых объектов 365 Что такое В-дерево 372 Запись В-дерева на диск 374 Кэширование 375 Определение размера страниц 375 Определение количества страниц, которые могут одновременно 375 находиться в памяти Подкачка данных на жесткий диск 375 Реализация В-дерева 376 Как это работает 401 Прогулка по программному коду 403 Поиск 414 Резюме 416 Глава 16. Реляционные базы данных и живучесть 417 Основные концепции реляционных баз данных 418 Архитектура реляционной базы данных 419 Ограничения и соображения 420 Язык структурированных запросов SQL 420 Нормирование 420 Соединения 421 Живучесть для реляционной базы данных 421 Перемещения с идентификаторами объектов 422 Использование пятен 422 Скрытие деталей 423 Непосредственное сохранение объектов 423 Использование API БД 423 Доступ к источникам данных ODBC 423 Использование MFC 425 Операторы SQL 433 Установка характеристик БД 434 Резюме 434 Глава 17. Реализация живучести объектов с помощью реляционных 435 баз данных Объекты в Oracle 8 436 Типы объектов 436 Ссылки на объекты 437 Коллекции 438 Использование внешних процедур, разработанных на языке C++ 439 Отображение UML-диаграмм на объектно-реляционную базу данных 442 Проектирование базы данных 442 Генерирование классов на C++ 443 Генерирование сервера 445 Пример: Система заказа покупок 448 Описание системы 448 Глава 18. Объектно-ориентированные базы данных 451 Обзор объектно-ориентированных баз данных 452 Стандарт ODMG 453 Приложение на C++ для ведения счетов 453 Живучесть данных 466 Схемы базы данных и средства захвата этой схемы 468 Коллекции 469 Итераторы 471 Отношения 471 Базы данных и транзакции 475 Технические вопросы объектно-ориентированных баз данных 487 Архитектура клиент/сервер 487 Хранение данных и кластеризация объектов 487 Передача данных 488 Блокирование данных 488 Резюме 489 Глава 19. Защита приложений с помощью шифрования 490 Краткая история шифрования 491 Роль Национального бюро стандартов 491 Понятие шифрования 492 Коды 492 Шифры 493 Шифр Vernam 495 Криптография по частному ключу 497 Алгоритмы частного ключа 497 Механизмы шифрования по секретному ключу 498 Использование центров распространения ключей 500 Криптография по общему ключу 500 Метод головоломки Ральфа Меркле 501 Многопользовательские криптографические методы Диффи- 501 Хельмана Метод RSA 502 Использование Pretty Good Privacy 502 Выбор простых чисел в PGP 503 Использование случайных чисел в криптографии 504 Шифрование файлов с помощью PGP 504 Ограничения в криптографии 506 Юридические ограничения на криптографию 507 Криптографические атаки 507 Атака грубой силы 507 Криптоанализ 508 Взлом файла, зашифрованного программой PGP 508 Цифровые подписи 509 Public Key Cryptography Standard(PKCS) 509 Digital Signature Standard(DSS) 509 Неотрицание 510 Коммерческие криптографические продукты 510 Безопасные Web-клиенты 510 Безопасные почтовые клиенты 511 Продукты для защиты рабочего стола 512 Резюме 514 Часть V. Распределенные вычисления 515 Глава 20. CORBA 516 Теория и обоснование 517 Минимальная среда CORBA 518 Каркас объектной технологии 518 IIOP: объектное склеивание 519 Компонентная модель 520 IDL: соглашение связывания 520 Сравнение IDL с определением класса C++ 521 Брокер объектных запросов 522 Время жизни объектов 522 Среды разработки 523 Сравнение сред CORBA 523 Способность ORB к взаимодействию 523 Создание клиента С+ 524 Генерирование заглушки 524 Связь с ORB 525 Вызовы методов 525 Завершенное клиентское приложение C++ 526 Создание сервера C++ 526 Генерирование скелета 527 Реализация методов сервера 527 Подсоединение класса сервера 528 Загрузка BOA в ORB 528 Клиент Java 530 Генерирование заглушки 530 Запуск и программный код вызова метода 530 Стратеги и тестирования 531 Трассировка 531 Службы мониторинга и регистрации 531 Обработка исключений 531 Удаленная отладка 532 Служба имен и способность к взаимодействию 532 Interoperable Object Reference (IOR) 532 Именование контекстов 533 Проблемы взаимодействия 533 Производительность 533 Перерасход памяти со стороны ORB 534 Степень детализации интерфейса 534 Ссылки на передаваемый объект 534 Резюме 534 Глава 21. COM 535 Основы СОМ 536 Архитектура СОМ 537 Интерфейсы 537 Интерфейс IUnknown 541 СОМ-объекты 543 Библиотеки типов 545 Другие СОМ-технологии 546 Использование СОМ-объектов в C++ 549 Использование интерфейсов Raw 550 Использование интеллектуальных указателей 551 Использование библиотек типов 555 Создание СОМ-объектов в C++ 558 Множественное наследование 558 Вложенные классы 560 Использование классов tear off 562 Резюме 563 Дополнительная литература 563 Глава 22. Java и C++ 564 Общие черты C++ и Java 565 Комментарии 565 Типы данных 565 Операторы 567 Операторы управления потоком 568 Различия между C++ и Java 568 Управление памятью 568 Отсутствие указателей 568 Отсутствие препроцессора 568 Отсутствие деструктора 568 Спецификаторы доступа 569 Параметры метода 569 Внешние функции 570 Перечислители 570 Строки 571 Массивы 571 Объектно-ориентированные возможности Java 572 Классы 572 Наследование 576 Множественное наследование 578 Обработка исключений 579 Резюме 579

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.