Г.Буч ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОЕКТИРОВАНИЕ С ПРИМЕРАМИ ПРИМЕНЕНИЯ Книга американского специалиста представляет собой ...
13 downloads
216 Views
27MB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
Г.Буч ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОЕКТИРОВАНИЕ С ПРИМЕРАМИ ПРИМЕНЕНИЯ Книга американского специалиста представляет собой первое полное изложение объектно-ориентированной методологии: анализ, проектирование, программирование. В книге рассмотрены фундаментальные вопросы объектного подхода, практические аспекты конструирования программных систем. Отдельный раздел книги посвящен примерам использования различных объектно-ориентированных языков программирования в реальных системах. В книге содержится обширная библиография по предметной области. Книга рассчитана на профессиональных программистов, руководителей больших программных проектов и студентов, будущая профессия которых связана с разработкой сложных программных систем. ОГЛАВЛЕНИЕ ПРЕДИСЛОВИЕ РЕДАКТОРА ПЕРЕВОДА 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. ДИАГРАММЫ ПЕРЕХОДА СОСТОЯНИЙ 5.4. ДИАГРАММА ОБЪЕКТОВ 5.5. ВРЕМЕННАЯ ДИАГРАММА 5.6. МОДУЛЬНАЯ ДИАГРАММА 5.7. ДИАГРАММЫ ПРОЦЕССОВ 5.8. ПРИМЕНЕНИЕ СИСТЕМЫ ОБОЗНАЧЕНИЙ Глава 6. ПРОЦЕСС 6.1. ПРОЕКТИРОВАНИЕ КАК ПОСТУПАТЕЛЬНЫЙ ИТЕРАТИВНЫЙ ПРОЦЕСС 6.2. ИДЕНТИФИКАЦИЯ КЛАССОВ И ОБЪЕКТОВ 6.3. ИДЕНТИФИКАЦИЯ СЕМАНТИКИ КЛАССОВ И ОБЪЕКТОВ 6.4. ИДЕНТИФИКАЦИЯ СВЯЗЕЙ МЕЖДУ КЛАССАМИ И ОБЪЕКТАМИ 6.5. РЕАЛИЗАЦИЯ КЛАССОВ И ОБЪЕКТОВ Глава 7. ТРАДИЦИОННЫЕ МЕТОДЫ 7.1. ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОЕКТИРОВАНИЕ В ЖИЗНЕННОМ ЦИКЛЕ РАЗРАБОТКИ 7.2. УПРАВЛЕНИЕ ПРОЕКТОМ 7.3. ДОСТОИНСТВА И НЕДОСТАТКИ ОБЪЕКТНООРИЕНТИРОВАННОГО ПРОЕКТИРОВАНИЯ Часть III. ПРИМЕНЕНИЯ Глава 8. SMALLTALK. СИСТЕМА ДОМАШНЕГО ОТОПЛЕНИЯ 8.1. АНАЛИЗ 8.2. ПРОЕКТИРОВАНИЕ 8.3. РЕАЛИЗАЦИЯ 8.4. МОДИФИКАЦИЯ Глава 9. OBJECT PASCAL. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ КОНСТРУКЦИЙ ГЕОМЕТРИЧЕСКОЙ ОПТИКИ 9.1. АНАЛИЗ 9.2. ПРОЕКТИРОВАНИЕ 9.3. РАЗВИТИЕ 9.4. МОДИФИКАЦИЯ Глава 10. C++. СИСТЕМА РЕГИСТРАЦИИ ОШИБОК В ПРОГРАММНЫХ СРЕДСТВАХ 10.1. АНАЛИЗ 10.2. ПРОЕКТИРОВАНИЕ 10.3. РАЗВИТИЕ ПРОЕКТА 10.4. МОДИФИКАЦИЯ Глава 11. COMMON LISP OBJECT SYSTEM. СИСТЕМА ДЕШИФРОВАНИЯ 11.1. АНАЛИЗ 11.2. ПРОЕКТИРОВАНИЕ 11.3. ОБЪЕДИНЕНИЕ В СИСТЕМУ 11.4. МОДИФИКАЦИЯ
157 158 162 163 168 171 173 173 176 177 178 180 182 182 190 199 204 204 204 221 236 252 254 254 278 301 331 334 334 349 362 369 371 373 377 388 397
Глава 12. ADA. СИСТЕМА УПРАВЛЕНИЯ ДВИЖЕНИЕМ 12.1. АНАЛИЗ 12.2. ПРОЕКТИРОВАНИЕ 12.3. РАЗВИТИЕ 12.4. ИЗМЕНЕНИЯ ЗАКЛЮЧЕНИЕ ПРИЛОЖЕНИЯ П.1. Введение П.2. ЯЗЫК SMALLTALK П.З. ЯЗЫК OBJECT PASCAL П.4. Язык C++ П.5. ЯЗЫК COMMON LISP OBJECT SYSTEM (CLOS) П.6. ЯЗЫК ADA П.7. ДРУГИЕ ЯЗЫКИ OOP ЛИТЕРАТУРА БИБЛИОГРАФИЯ АНГЛО-РУССКИЙ ТОЛКОВЫЙ СЛОВАРЬ ТЕРМИНОВ ПО ОБЪЕКТНООРИЕНТИРОВАННОМУ ПОДХОДУ ПРЕДМЕТНО-ИМЕННОЙ УКАЗАТЕЛЬ
400 403 408 419 423 426 427 427 428 432 436 440 442 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 Ингалс 50, 66, 89, 122 Индивидуальность 78, 84, 510 Интерфейс 50, 510 Исполнитель 48, 513 Использование 114, 514 Итератор 67, 510 Иордан 26 Канал управления 68, 84, 514 Карделли 102 Категория 132 — классов 151, 163 Качество абстракции 122 Класс 93 — абстрактный 230, 277, 286, 453 — базовый 99, 508 — метакласс 96, 119, 511 — суперкласс 98, 514 Клементе 56, 127 Кокс 60 Константин 26, 123 Конструктор 50, 51, 509 Коуд 137 Лим 68 Линтон 110 Дисков 50, 54, 60 Майерс 26, 123 Мейер 58, 93 Меллор 42, 136 Метод 82, 511 Механизм 142, 511 — абстракции 32, 35 Микаллеф 109 Модификатор 67, 83, 117, HI, 511 Модуль 36 Модульная архитектура 164, 5П Модульность 53, 56, 511 Мономорфизм 68, 102, 511 Мощность множества объектов 508 Муре 138 Наполнение объекта 510 Наследование 60, 98, 109, 510 — множественное 61, 98, 110 — простое 60, 98
Нейбор 138 Нотация 146, 147, 167 О'Брайен 124, 141 Обособленный 94, 154, 513 Общедоступный 94 — общедоступная процедура 242, 305, 509 Общность 93, 126, 509 Объект 77, 84 — активный 89, 508 — блокированный 91, 508 — воздействующий 508 — метаобъект 121 — параллельный 91, 509 — пассивный 512 — пользователь 44, 509 — транслятор 91, 513 Объектно-ориентированное программирование 512 Объектно-ориентированный анализ 42, 137, 512 Объектный подход 20, 31, 512 Ограничение доступа 50, 509 Определитель состояния 50, 513 Пайджет 133 Параллелизм 68, 509 Парнас 51, 56, 127 Переменная объекта 95, 510 Пирбой 42 Переменная, параметр класса 67, 104, 155, 509 Поведение 81, 508 Поддержка класса 509 Подкласс 98, 514 Поле 95, 126, 509 Полиморфизм 67, 102, 513 — множественный 113 — простой 101 Посредник 89, 91 Проектирование 27 — возвратное 174, 513 — объектно-ориентированное 26, 42, 512
— структурное 22, 514 Пространство состояний 172, 513 Протокол 44, 513 Рабсон 74 Реализация 51, 510 — внутренняя 51 Робсон 119 Росс 137 Сарсон 42 Связь — динамическая 66, 513 — статическая 66, 513 Сейдвиц 44 Семантические сети 99, 172 Синхронизация 91, 125, 160, 514 Слот 53, 95, 513 Смешение 112, 511 Смит 77 Снайдер 93 Сообщение 81, 511 Состояние 78, 513 Стайн 25 Старк 44 Стефик 188 Стивене 123 Страустрап 39, 53, 107, 118, 129, 141 Структура 58, 109, 514
— классов 58, 81, 94, 509 — объектов 58, 512 Суссман 44 Теслер 66 Тип 33, 39, 62, 514 Типизация 62 514 — нестрогая 63 — строгая 63, 514 Токей 77 Томлисон 60 Уинстон 108 Устойчивость 73 512 Фрагмент объекта 95, 511 Функция 510 — обобщенная 38, 121, 510 — элемент 45, 82, 511 Хальберт 124, 141 Хатли 42 Хендлер 113 Хоаре 26 Хорн 108 Шклаер 136 Шоу 44, 131 Эббот 138 Экземпляр объекта 47, 64, 510