ebook img

Программирование на C++. Классика CS PDF

479 Pages·2005·12.393 MB·Russian
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Программирование на C++. Классика CS

С++ Advanced Programming and ldioms Styles James О. Coplien " тт Addison-Wesley Дж. Коплиен ПРОГРАММИРОВАНИЕ НА ++ �пп11:р· Москва· Санкт-ПетербурНги·ж ниАН овгородВ·о ронеж Новосибирск Ростов-на-ДонЕук атеринбурСга мара • • • Киев • Харьков • Минск 2005 ББК 32.973-018.1 УДК 681.3.06 К65 КоплиенДж. - - с.: К65 ПISрBоNг р5а-4м6м9-и0р0о1в8а9-нХи е на С++. Классика CS. СПб.: Питер, 2005. 479 ил. Этак ниган аписандлая программистуожве,в ладеющияхз ыком и желающихп однять своюк валификацинюан овыйу ровенДьа.в аяп редставлеон ситеи лие идиоматкие зяык,ак нига С++ знакомичти тателся т емин етривиальнызмниа ниямик,о торыоеп ытныеп рограммисты получаюнта личномо пытеО.н а показываечтт,о можнои спользовиа тдьл яр азработки С++ простыахб стракцдиайн ны,хи дляп олноценнроейал изациаиб страктнтыихп овда нных, ил яд С++ объектно-орие�пиропвраонгнроагмом ироварнаизял ичных стКирлоемйе.т огов, н ейи сслдеуются идиомы,н е поддерживаемынеа прямуюн а базовоумр овне напримефру нкциональнио е фреймовопер ограммировантиаек,ж реаа сширеннмыеет одуыб оркмиу сор.а С++, ББК 32.973-018.1 УДК 681.3.06 Праван аи зданипео nученпыо с огnашенисю A ddisoп-WeLsolпegym aп. Всеп раваз ащищеныН.и какачяа стьд аннойк нигние можетб ьггвьо спроизведве нкаа койб ы тон и быnо формеб езп исьменноргаоз решенвиnяа деnьцаеввт орскпирха в. Информацияс,о держащаявс яд аннойк нигеп,о nучениаз и сrочникорва,с сматриваеимзыдха теnьсrвкоамк надежныеТ.е м не менееи.м еяв видув озможные чеnовечиеnсикт иеех ническоишеи бкии,з датеnьсrнвео можетг арантировать абсоnютнуюи птооnчнноотсут ьп риводимых сив неед енниейсо еттв етсrвеннзоас ти возможныоеш ибкис,в язаннсы еи споnьзованкинеимг и. © Ьу пo aed (ангn.) ©Перевонда р усскияйз ык Издатеnьскдиойм« Питер», 1992 АТ&Т Вell Telephone LaЬoratoгies, l c rpoг t ©Изданинеа р усскоямз ыкео,ф ормnение Издатеnьскдиойм« Питер», ISBN 0201548550 ЗАО 2005 ISBN 5-469-00189-Х ЗАО 2005 Краткое содержание Предисловие 12 Глава 1. Введение 19 Глава 2. Абстракция и абстрактные типы данных . 25 Глава 3. Конкретные типы данных 52 Глава 4. Наследование . .. . 97 . . Глава 5. Объектно-ориентированное программирование . 126 Глава 6. Объектно-ориентированное проектирование .. . 203 Глава 7. Многократное использование программ и объекты 247 Глава 8. Прототипы . . . . .. . . .. . . . . . . . . 277 Глава 9. Эмуляция символических языков на С++ ... 303 Глава 10. Динамическое множественное наследование 349 Глава 11. Системные аспекты 355 Приложение А.С в среде С++ 381 Приложение Б. Программа Shapes . 403 Приложение В.С сылочные возвращаемые значения операторов 414 Приложение Г. Поразрядное копирование .. . . .... ... 416 . Приложение д. Иерархия геометрических фигур в символической идиоме 418 Приложение Блочно-структурное программирование на С++ 451 Приложение Е. Список терминов 467 Алфавитный уЖк.а затель . . .. .. 472 Содержание Предисловие 12 Изучение языка программирования 12 О книге . . . . . 13 Структура книги . . . 14 Благодарности . . . . 17 От издателя перевода 18 Гпава 1. Введение . . . 19 1.1 . С++ как развивающийся язык . . 19 1.2. Решение проблемы сложности при помощи идиом 20 1.3. Объекты для 90-х . . . 22 1.4. Проектирование и язык . . . . . . . . . . . . . . 23 Литература . . . . . . . . . . . . 24 . . . . . . . . . . Гпава 2. Абстракция и абстрактные типы данных . 25 2.1. Классы . . . . . . . 26 . . . . 2.2. Объектная инверсия . . . . . 29 2.3. Конструкторы и деструкторы 31 2.4. Подставляемые функции . 36 . 2.5. Инициализация статических переменных 38 2.6. Статические функции классов . . . . . 39 . 2. 7. Область видимости и константность . . . 40 2.8. Порядок инициализации глобальных объектов, констант и статических членов классов . . . . . . . . . . . . 41 . . . . 2.9. Обеспечение константности функций классов . 42 Логическая и физическая константность . 43 2.10. Указатели на функции классов . . . . . . 45 2.11. Правила организации программного кода 49 Упражнения . . . . . . . . . . . . . . 50 Литература . . . . . . . . . . 51 . . . . Гпава Конкретные типы данных . 52 3.1. Орт3од. оксальная каноническая форма класса 53 3.2. Видимость и управление доступом . . . 60 . . 3.3. Перегрузка -переопределение семантики операторов и функций 62 Пример перегрузки оператора индексирования . . . . . . 64 Перегрузка операторов в классах и глобальная перегрузка 66 3.4. Преобразование типа . 67 . . . . 3.5. Подсчет ссылок . . . . . . . . 71 Идиома класса-манипулятора 72 Экономное решение . . . 75 . . Содержание 3 Подсчет указателей . . . . . . . . . . . . . . . . . . 78 Реализация подсчета ссылок в существующих классах 81 Классы конвертов и синглетные письма . . . . . . 83 3.6. Операторы пеw и delete . . . . . . . . . . . . . . . 84 3.7. Отделение инициализации от создания экземпляра . 91 Упражнения . . . . . . . 94 Литература . . . . . . . 96 Глава 4. Наследование . 4. 1. Простое наследование . . . 99 79 Настройка операций класса Complex для семантики класса lmagiпary . . 102 Использование кода базового класса в производном классе . . . . . . . 102 Изменение функций производного класса для повышения эффективности 103 4.2. Видимость и управление доступом . . . . . . . . . . . . . 105 Вертикальное управление доступом при наследовании 106 Горизонтальное управление доступом при наследовании 110 Создание экземпляров путем наследования и управления доступом . 115 4.3. Конструкторы и деструкторы . . . . . . . . . . . . . . . . . . . . . . 116 Порядок выполнения конструкторов и деструкторов . . . . . . . . . 116 Передача параметров конструкторам базовых классов и внутренних объектов 117 4.4. Преобразование указателей на классы 119 4.5. Селектор типа 121 Упражнения . . . . . . . . . . 124 . . . . . . Литература . . . . . . . . . . . . . . . . 125 Глава 5. Объектно-ориентированное программирование . 126 5.1. Идентификация типов на стадии выполнения и виртуальные функции 128 5.2. Взаимодействие деструкторов и виртуальные деструкторы 135 5.3. Виртуальные функции и видимость . . . . . . . . . . . . . 136 5.4. Чисто виртуальные функции и абстрактные базовые классы 139 5.5. Классы конвертов и писем . . . . . . . . . . . . . . 141 Классы конвертов и делегированный полиморфизм 142 Имитация виртуальных конструкторов 148 Другой подход к виртуальным конструкторам 155 . Делегирование и классы конвертов . 166 Итераторы и курсоры . . . . . . . . . . . . 170 . 5.6. Функторы . . . . . . . . . . . . . . . . . . . . 171 Функциональное и аппликативное программирование 175 5.7. Множественное наследование . . . . . . . . . 183 Пример абстракции окна . . . . . . . . . . . 184 Неоднозначность при вызове функций класса 187 Неоднозначность в данных . . . . . . . . . . 188 Виртуальные базовые классы . . . . . . . . . 188 Предотвращение лишних вызовов функций виртуальных базовых классов 189 Виртуальные функции . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 Преобразование указателей на объекты при множественном наследовании 192 5.8. Каноническая форма наследования 193 Упражнения . . . . . . . . . . . . . . . . . . . . . . 197 Пример итератора очереди . . . . . . . . . . . . . . 198 Простые классы счетов для банковского приложения . 200 Литература . . . . . . . . . . . . . . . . . . . . . . 202 8 Содержание Глава 6. Объектно-ориентированное проектирование • • 2 03 6. Типы и классы . . . . . . . . . . . . 204 . . . . . . 6.2. Основные операции объектно-ориентированного проектирования 209 1. 6.3. Объектно-ориентированный и доменный анализ . 212 Причины увеличения объема проектирования 212 Способы расширения абстракций . . . 213 Балансировка архитектуры . . . . . . . . . . . 214 Результаты хорошей балансировки архитектуры 215 6.4. Отношения между объектами и классами 215 Отношения cclS-A• . . 215 Отношения ccHAS-A» . 217 . . Отношения «USES-A» . . 220 Отношения ccCREATES-A» 220 Контекстное изучение отношений между объектами и классами 220 Графическое представление отношений между объектами и классами 221 6.5. Субтипы, наследование и перенаправление . . . . . . . 224 . . . . Наследование ради наследования -ошибка потери субтипов . 224 Случайное наследование -омонимы в мире типов . . . . 228 Потребность в функциях классов с «истинной» семантикой 239 Наследование и независимость классов 241 6.6. Практические рекомендации . 244 Упражнения . . . . . . . . . . . . 245 . . . . . . Литература . . . . . . . . . . . . . . . . 246 . Глава 7. Многократное испопьэование программ и объекты . . 247 7.1. Об ограниченности аналогий . . . . . . 249 . . . . . . . ; 7 .2. Многократное использование архитектуры . . . . . . 251 . 7.3. Четыре механизма многократного использования кода 253 7.4. Параметризованные типы, или шаблоны . . . . . . . 256 . 7.5. Закрытое наследование и многократное использование 264 7.6. Многократное использование памяти . . . . . . . . 267 . 7.7. Многократное использование интерфейса . . . . . . . 268 7.8. Многократное использование, наследование и перенаправление 270 7.9. Архитектурные альтернативы для многократного использования исходных текстов . . . . . . . . . . . . . . . . . . 271 . . . . . . 7.10. Общие рекомендации относительно многократного использования кода . 274 Упражнения . . . . 275 . . Литература . . . . . . . . 276 Глава 8. Прототипы . . 277 • . 8. 1. Пример с прототипами класса Employee 280 8.2. Прототипы и обобщенные конструкторы 285 8.3. Автономные обобщенные конструкторы 287 8.4. Абстрактные базовые прототипы . 289 8.5. Идиома фреймовых прототипов . . . . 292 8.6. Условные обозначения . . . . . . . . . 294 8.7. Прототипы и администрирование программ 296 Упражнения . . . . . . . . . . . 297 . Простой анализатор с прототипом 298 Фреймовые прототипы 300 Литература . . . . . . . . . . . . 302 Содержание 9 Глава 9. Эмуляция символических языков на С++ 303 • • • • • • • • • • • 9. 1. Инкрементное программирование на С++ . . . . . . . . . . . . 305 . . Инкрементный подход и объектно-ориентированное проектирование 305 Сокращение затрат на компиляцию . . . . . 305 . Сокращение затрат на компоновку и загрузку 306 Ускоренные итерации . . . . . 306 . 9.2. Символическая каноническая форма . 307 Класс Тор . . . . . . . . . . . .. 309 . Класс Thing . . . . . . . . . . . 310 . . Символическая каноническая форма для классов приложений 311 9.3. Пример обобщенного класса коллекции . . . . . 318 9.4. Код и идиомы по,одержки инкрементной загрузки 323 Загрузка виртуальных функций . . . . . . . . 324 . Обновление структуры класса и функция cutover 327 Инкрементная загрузка и автономные обобщенные конструкторы 332 9.5. Уборка мусора . . . . . . . . . . . . . . . . 333 . . . . . . . Пример иерархии геометрических фигур с уборкой мусора 336 9.6. Инкапсуляция примитивных типов . . . . 342 9.7. Мультиметоды в символической идиоме . 343 Упражнения . . . . . . . . . . . 347 . . . . . . Литература . . . . . . . . . . . . . . . 348 Глава 1 Динамическое множественное наследование . • 349 1О.1. ПриОм. ер оконной системы с выбором технологии . 350 10.2. Предостережение . . . . . . . . . . 3 53 Глава 11. Системные аспекты . . 355 • • . 11 .1. Статическая системная структура . 356 Транзакционные диаграммы 357 Модули . . . 359 Подсистемы 361 Каркасы 362 Библиотеки . 364 11.2. Динамическая системная структура . 365 Планирование . . . . . . . . . . 365 . Контексты . . . . . . . . . . . . . 371 Взаимодействие между пространствами имен . 372 Обработка исключений 375 Зомби . . . . . . . . . . . 379 Литература . . . . . 379 . . . . . . . Приложение А. С в среде С++ • . • 381 А.1. Вызовы функций . . 381 А.2. Параметры функций . . . . . 382 . А.3. Прототипы функций . . . . . . 382 А.4. Передача параметров по ссылке . 384 А.5. Переменное количество параметров 385 . А.6. Указатели на функции . . . . . . 386 А. 7. Модификатор coпst . . . . . . . . . 388 Пример 1. Использование модификатора const вместо директивы #define 388 Пример 2. Модификатор const и указатели . . . . . . . . . . 388 Пример 3. Объявление функций с константными аргументами . . . . . . . 389 1 О Содержание А.В. Взаимодействие с кодом С . . . 390 А.8.1. Архитектурные аспекты . 390 А.8.2. Языковая компоновка . . 394 А.8.3. Вызов функций С++ 396 ИЗ А.8.4. Совместное использование заголовочных файлов в С и С++ . 396 с А.8.5. Импорт форматов данных С в С++ 400 А.8.6. Импорт форматов данных С++ в С 400 Упражнения . . . . . . . . . . . . . . 402 Литература . . . . . . . . . . . 402 . . . Приложение Программа Shapes 403 Приложение &. Ссылочные возвращаемые значения операторов 414 Приложение ВГ.. Поразрядное копирование 416 Приложение Д. Иерархия геометрических фигур в символической идиоме 418 Приложение Е. Блочно-структурное программирование на . . 451 Е.1. Концепция блочно-структурного программирования . . . . . С.+ +. . . . . . 451 Е.2. Основные строительные блоки структурного программирования на С++ . 452 Е.3. Альтернативное решение с глубоким вложением областей видимости 456 Е.4. Проблемы реализации . . . . . 460 Упражнения . . . . . . . . . . . . . 460 Код блочно-структурной видеоигры 461 Литература . . . . . . . . . . . . . 466 Приложение Список терминов 467 Алфавитный Жук.а затель 472

See more

The list of books you might like

book image

The Spanish Love Deception

Elena Armas
·2021
·6.45 MB

book image

The Sweetest Oblivion (Made Book 1)

Danielle Lori
·360 Pages
·2018
·1.72 MB

book image

Mind Management, Not Time Management

David Kadavy
·2020
·0.58 MB

book image

GB 1796-1: Tyre valves -Part 1:Clamp-in valves

Standardization Administration of China (SAC)
·2008
·0.81 MB

book image

MANUAL OF GRAPHIC TECHNIQUES 3 (ic anon uploaded)

Tom Porter, Sue Goodman
·130 Pages
·1983
·263.779 MB

book image

Office Ergonomics

Kroemer, Karl H.E.
·269 Pages
·2014
·3.493 MB

book image

Regulation and Genetics: Bacterial DNA Viruses

Dietmar Rabussay, E. Peter Geiduschek (auth.), Heinz Fraenkel-Conrat, Robert R. Wagner (eds.)
·363 Pages
·1977
·7.736 MB

book image

C anton (©bsterber

24 Pages
·2010
·42.97 MB

book image

Model Theory, Algebra, and Geometry

Deirdre Haskell, Anand Pillay, Charles Steinhorn
·229 Pages
·2000
·3.019 MB

book image

Missouri Senate Journals Compilation 2006

Missouri General Assembly, Senate
·2006
·4.2 MB

book image

Ojo por ojo

Ameneh Bahrami
·2013
·0.926 MB

book image

BarcodeX ActiveX control reference

24 Pages
·2008
·0.41 MB

book image

Cahiers du GRM, 8

Jessica Borotto
·19 Pages
·2016
·0.31 MB

book image

Del electrón al chip

Huertas, Gloria; Huertas, Luisa
·144 Pages
·2015
·3.495 MB

book image

Immaginari postdemocratici. Nuovi media, cybercultura e forme di potere

Alberto Abruzzese , Vincenzo Susca
·132 Pages
·13.598 MB