Вы находитесь на странице: 1из 517

Г.

Буч
ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОЕКТИРОВАНИЕ
С ПРИМЕРАМИ ПРИМЕНЕНИЯ

Книга американского специалиста представляет собой первое полное


изложение объектно-ориентированной методологии: анализ, проектирование,
программирование. В книге рассмотрены фундаментальные вопросы объектного
подхода, практические аспекты конструирования программных систем.
Отдельный раздел книги посвящен примерам использования различных
объектно-ориентированных языков программирования в реальных системах. В
книге содержится обширная библиография по предметной области. Книга
рассчитана на профессиональных программистов, руководителей больших
программных проектов и студентов, будущая профессия которых связана с
разработкой сложных программных систем.
ОГЛАВЛЕНИЕ
ПРЕДИСЛОВИЕ РЕДАКТОРА ПЕРЕВОДА 5
ВВЕДЕНИЕ 7
Часть I. КОНЦЕПЦИИ 10
Глава 1. СЛОЖНОСТЬ 10
1.1. СЛОЖНОСТЬ, ПРИСУЩАЯ ПРОГРАММНОМУ ОБЕСПЕЧЕНИЮ 10
1.2. СТРУКТУРА СЛОЖНЫХ СИСТЕМ 16
1.3. ВНЕСЕНИЕ ПОРЯДКА В ХАОС 22
1.4. ПРОЕКТИРОВАНИЕ СЛОЖНЫХ СИСТЕМ 27
Глава 2. ОБЪЕКТНЫЙ ПОДХОД 31
2.1. СТАНОВЛЕНИЕ ОБЪЕКТНОГО ПОДХОДА 31
2.2. КОМПОНЕНТЫ ОБЪЕКТНОГО ПОДХОДА 42
2.3. ПРИМЕНЕНИЯ ОБЪЕКТНОГО ПОДХОДА 73
Глава 3. КЛАССЫ И ОБЪЕКТЫ 77
3.1. ОБЪЕКТ 77
3.2. ОТНОШЕНИЯ МЕЖДУ ОБЪЕКТАМИ 89
3.3. СУЩНОСТЬ «КЛАСС» 93
3.4. ОТНОШЕНИЯ МЕЖДУ КЛАССАМИ 95
3.5. ВЗАИМОСВЯЗЬ КЛАССОВ И ОБЪЕКТОВ 121
3.6. ВОПРОСЫ КАЧЕСТВА ПРИ СОЗДАНИИ КЛАССОВ
И ОБЪЕКТОВ 122
Глава 4. КЛАССИФИКАЦИЯ 129
4.1. ВАЖНОСТЬ ПРАВИЛЬНОЙ КЛАССИФИКАЦИИ 129
4.2. ИДЕНТИФИКАЦИЯ КЛАССОВ И ОБЪЕКТОВ 132
4.3. КЛЮЧЕВЫЕ АБСТРАКЦИИ И МЕХАНИЗМЫ 140
Часть II. МЕТОДОЛОГИЯ 146
Глава 5. СИСТЕМА ОБОЗНАЧЕНИЙ 146
5.1. ЭЛЕМЕНТЫ СИСТЕМЫ ОБОЗНАЧЕНИЙ 146
5.2. ДИАГРАММА КЛАССОВ 149
5.3. ДИАГРАММЫ ПЕРЕХОДА СОСТОЯНИЙ 157
5.4. ДИАГРАММА ОБЪЕКТОВ 158
5.5. ВРЕМЕННАЯ ДИАГРАММА 162
5.6. МОДУЛЬНАЯ ДИАГРАММА 163
5.7. ДИАГРАММЫ ПРОЦЕССОВ 168
5.8. ПРИМЕНЕНИЕ СИСТЕМЫ ОБОЗНАЧЕНИЙ 171
Глава 6. ПРОЦЕСС 173
6.1. ПРОЕКТИРОВАНИЕ КАК ПОСТУПАТЕЛЬНЫЙ ИТЕРАТИВНЫЙ 173
ПРОЦЕСС
6.2. ИДЕНТИФИКАЦИЯ КЛАССОВ И ОБЪЕКТОВ 176
6.3. ИДЕНТИФИКАЦИЯ СЕМАНТИКИ КЛАССОВ И ОБЪЕКТОВ 177
6.4. ИДЕНТИФИКАЦИЯ СВЯЗЕЙ МЕЖДУ КЛАССАМИ И ОБЪЕКТАМИ 178
6.5. РЕАЛИЗАЦИЯ КЛАССОВ И ОБЪЕКТОВ 180
Глава 7. ТРАДИЦИОННЫЕ МЕТОДЫ 182
7.1. ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОЕКТИРОВАНИЕ В 182
ЖИЗНЕННОМ ЦИКЛЕ РАЗРАБОТКИ
7.2. УПРАВЛЕНИЕ ПРОЕКТОМ 190
7.3. ДОСТОИНСТВА И НЕДОСТАТКИ ОБЪЕКТНО- 199
ОРИЕНТИРОВАННОГО ПРОЕКТИРОВАНИЯ
Часть III. ПРИМЕНЕНИЯ 204
Глава 8. SMALLTALK. СИСТЕМА ДОМАШНЕГО ОТОПЛЕНИЯ 204
8.1. АНАЛИЗ 204
8.2. ПРОЕКТИРОВАНИЕ 221
8.3. РЕАЛИЗАЦИЯ 236
8.4. МОДИФИКАЦИЯ 252
Глава 9. OBJECT PASCAL. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО 254
РАЗРАБОТКИ КОНСТРУКЦИЙ ГЕОМЕТРИЧЕСКОЙ ОПТИКИ
9.1. АНАЛИЗ 254
9.2. ПРОЕКТИРОВАНИЕ 278
9.3. РАЗВИТИЕ 301
9.4. МОДИФИКАЦИЯ 331
Глава 10. C++. СИСТЕМА РЕГИСТРАЦИИ ОШИБОК В ПРОГРАММНЫХ 334
СРЕДСТВАХ
10.1. АНАЛИЗ 334
10.2. ПРОЕКТИРОВАНИЕ 349
10.3. РАЗВИТИЕ ПРОЕКТА 362
10.4. МОДИФИКАЦИЯ 369
Глава 11. COMMON LISP OBJECT SYSTEM. СИСТЕМА 371
ДЕШИФРОВАНИЯ
11.1. АНАЛИЗ 373
11.2. ПРОЕКТИРОВАНИЕ 377
11.3. ОБЪЕДИНЕНИЕ В СИСТЕМУ 388
11.4. МОДИФИКАЦИЯ 397
Глава 12. ADA. СИСТЕМА УПРАВЛЕНИЯ ДВИЖЕНИЕМ 400
12.1. АНАЛИЗ 403
12.2. ПРОЕКТИРОВАНИЕ 408
12.3. РАЗВИТИЕ 419
12.4. ИЗМЕНЕНИЯ 423
ЗАКЛЮЧЕНИЕ 426
ПРИЛОЖЕНИЯ 427
П.1. Введение 427
П.2. ЯЗЫК SMALLTALK 428
П.З. ЯЗЫК OBJECT PASCAL 432
П.4. Язык C++ 436
П.5. ЯЗЫК COMMON LISP OBJECT SYSTEM (CLOS) 440
П.6. ЯЗЫК ADA 442
П.7. ДРУГИЕ ЯЗЫКИ OOP 446
ЛИТЕРАТУРА 447
БИБЛИОГРАФИЯ 463
АНГЛО-РУССКИЙ ТОЛКОВЫЙ СЛОВАРЬ ТЕРМИНОВ ПО ОБЪЕКТНО- 508
ОРИЕНТИРОВАННОМУ ПОДХОДУ
ПРЕДМЕТНО-ИМЕННОЙ УКАЗАТЕЛЬ 515

Предметно-именной указатель
Абельсон 44 Даф 106
Абстракция 44, 508 Де Марко 42
— алгоритмическая 32 Действие 41, 45, 512
— ключевая 140, 510 Дейтч 62, 429
Архитектура процессов 232, 513 Декомпозиция 22
Аткинсон 72 — алгоритмическая 22, 25, 508
Бейлин 138 — объектная 22, 511
Берзинс 44 Делегирование 96
Блэк 68 Деструктор 50, 83, 509
Бобров 38, 188 Джеймс 134
Борнинг 66 Джонсон 68, 103
Бриттон 51 Диаграмма
Варда 42 — временная 148, 163, 172
Вегнер 63, 102 — класса 148, 149, 151, 157, 172, 509
Вейс 56, 127 — модульная 148, 163, 165, 172, 511
Видимость 125, 514 — объектов 148, 158, 172
— модуля 163 — процессов 148, 172
Виртуальная функция 104, 107, 514 — перехода состояний 148, 158, 172
Влисайдес 110 Защита информации 50, 55, 510
Гане 42 Зейдевиц 89
Грей 44 Зелковиц 55
Данфорт 60 Иерархия 20, 26, 58, 510
— классов 149 Нейбор 138
Ингалс 50, 66, 89, 122 Нотация 146, 147, 167
Индивидуальность 78, 84, 510 О'Брайен 124, 141
Интерфейс 50, 510 Обособленный 94, 154, 513
Исполнитель 48, 513 Общедоступный 94
Использование 114, 514 — общедоступная процедура 242,
Итератор 67, 510 305, 509
Иордан 26 Общность 93, 126, 509
Канал управления 68, 84, 514 Объект 77, 84
Карделли 102 Категория 132 — активный 89, 508
— классов 151, 163 — блокированный 91, 508
Качество абстракции 122 — воздействующий 508
Класс 93 — метаобъект 121
— абстрактный 230, 277, 286, 453 — параллельный 91, 509
— базовый 99, 508 — пассивный 512
— метакласс 96, 119, 511 — пользователь 44, 509
— суперкласс 98, 514 — транслятор 91, 513
Клементе 56, 127 Объектно-ориентированное
Кокс 60 программирование 512
Константин 26, 123 Объектно-ориентированный анализ
Конструктор 50, 51, 509 42, 137, 512
Коуд 137 Объектный подход 20, 31, 512
Лим 68 Ограничение доступа 50, 509
Линтон 110 Определитель состояния 50, 513
Дисков 50, 54, 60 Пайджет 133
Майерс 26, 123 Параллелизм 68, 509
Мейер 58, 93 Парнас 51, 56, 127
Меллор 42, 136 Переменная объекта 95, 510
Метод 82, 511 Пирбой 42
Механизм 142, 511 Переменная, параметр класса 67, 104,
— абстракции 32, 35 155, 509
Микаллеф 109 Поведение 81, 508
Модификатор 67, 83, 117, HI, 511 Поддержка класса 509
Модуль 36 Подкласс 98, 514
Модульная архитектура 164, 5П Поле 95, 126, 509
Модульность 53, 56, 511 Полиморфизм 67, 102, 513
Мономорфизм 68, 102, 511 — множественный 113
Мощность множества объектов 508 — простой 101
Муре 138 Посредник 89, 91
Наполнение объекта 510 Проектирование 27
Наследование 60, 98, 109, 510 — возвратное 174, 513
— множественное 61, 98, 110 — объектно-ориентированное 26, 42,
— простое 60, 98 512
— структурное 22, 514 — классов 58, 81, 94, 509
Пространство состояний 172, 513 — объектов 58, 512
Протокол 44, 513 Суссман 44
Рабсон 74 Теслер 66
Реализация 51, 510 Тип 33, 39, 62, 514
— внутренняя 51 Типизация 62 514
Робсон 119 Росс 137 — нестрогая 63
Сарсон 42 — строгая 63, 514
Связь Токей 77
— динамическая 66, 513 Томлисон 60
— статическая 66, 513 Уинстон 108
Сейдвиц 44 Устойчивость 73 512
Семантические сети 99, 172 Фрагмент объекта 95, 511
Синхронизация 91, 125, 160, 514 Функция 510
Слот 53, 95, 513 — обобщенная 38, 121, 510
Смешение 112, 511 — элемент 45, 82, 511
Смит 77 Хальберт 124, 141
Снайдер 93 Хатли 42
Сообщение 81, 511 Хендлер 113
Состояние 78, 513 Хоаре 26
Стайн 25 Хорн 108
Старк 44 Шклаер 136
Стефик 188 Шоу 44, 131
Стивене 123 Эббот 138
Страустрап 39, 53, 107, 118, 129, 141 Экземпляр объекта 47, 64, 510
Структура 58, 109, 514

Вам также может понравиться