C++ ? язык программирования, который поддерживает множество парадигм: классы, перегруженные функции, шаблоны, модули, процедурное программирование, параллельное программирование и т. д. Несмотря на гибкие и разнообразные средства языка, потребовались существенные усилия для создания метода проектирования, который позволял бы в полной мере использовать множество парадигм в рамках единого приложения. Эта книга последовательно, просто и исчерпывающе описывает среду для применения мультипарадигменного проектирования, предлагает внушительный набор методик проектирования, которые формируют базис аппарата мультипарадигменного проектирования.
Содержание
Предисловие 11
Структура книги 15
Благодарности 16
От издательства 16
1. Введение: потребность в нескольких парадигмах 17
1.1. Инженерия предметной области и несколько парадигм 17
1.2. Проектирование, анализ, семейства, предметные области: определения 19
1.2.1. Анализ 20
1.2.2. Проектирование 21
1.2.3. Архитектура 21
1.2.4. Предметные области 22
1.2.5. Семейства и анализ общности 22
1.2.6. Измерения абстракции 23
1.2.7. Точность абстракции 23
1.2.8. Проектирование и реализация 24
1.3. За пределы объектов 25
1.4. Анализ общности и изменчивости 26
1.5. Семейства программ 26
1.6. Мультипарадигменное проектирование 28
1.6.1. Язык: C++ 28
1.6.2. Сложные семейства 29
1.6.3. Включение паттернов 30
1.7. Мультипарадигменная разработка и язык программирования 31
1.7.1. Прикладные языки в FAST 31
1.7.2. Анализ предметной области и язык C++ 33
1.7.3. Полиморфизм 34
1.8. Анализ общности: иная перспектива 34
1.8.1. Правила и механизмы 35
1.8.2. Изменчивость во времени и в пространстве 35
1.8.3. Динамическое связывание 36
1.9. Резюме 37
2. Анализ общности 39
2.1. Общность: суть абстрагирования 39
2.1.1. Дедуктивная и индуктивная общность 40
2.1.2. Семейства программ 42
2.2. Подготовка анализа: словарь предметной области 43
2.2.1. Словарь предметной области 44
2.2.2. Команда разработчиков словаря 45
2.3. Измерения и категории общности 47
2.3.1. Структура (данных) 50
2.3.2. Имя и поведение 54
2.3.3. Алгоритм 57
2.4. Примеры общности 58
2.4.1. Структура 58
2.4.2. Имя и поведение 59
2.4.3. Алгоритм 61
2.5. Пересмотр результатов 62
2.6. Общность и развитие 63
2.7. Резюме 64
3. Анализ изменчивости.................................................................................................................. 65
3.1. Изменчивость: вкус жизни 65
3.2. Общая основа 66
3.3. Положительная и отрицательная изменчивость 67
3.3.1. Положительная изменчивость 67
3.3.2. Отрицательная изменчивость 68
3.4. Предметная область и диапазон изменчивости 69
3.4.1. Пример с буферами редактирования текста 70
3.4.2. Удачные параметры изменения 71
3.5. Время связывания 71
3.5.1. Время связывания и гибкость 71
3.5.2. Общее объектов и динамического связывания 72
3.5.3. Эффективность и время связывания 72
3.5.4. Варианты связывания 72
3.5.5. Пример 73
3.6. Значения по умолчанию 74
3.7. Таблицы изменчивости 75
3.8. Некоторые особенности изменчивости 76
3.9. Пересмотр результатов 77
3.10. Графы зависимости изменчивости 77
3.11. Резюме 78
4. Анализ прикладной предметной области............................................................................... 79
4.1. Анализ, анализ предметной области и большее 79
4.1.1. Традиционный анализ 80
4.1.2. Семейства систем: анализ предметной области 80
4.1.3. Анализ прикладной области и области решений 85
4.1.4. Действия в анализе предметной области 85
4.2. Подобласти в предметном анализе 87
4.2.1. Предметный анализ и многократное использование 89
4.2.2. Модульная организация подобластей 90
4.2.3. Повторение и иерархия 91
4.3. Структура подобласти 92
4.3.1. Каркас как вариант реализации подобластей 94
4.3.2. Действия в анализе подобластей 95
4.4. Анализ: общая картина 96
4.5. Резюме 98
5. Объектно-ориентированный анализ 99
5.1. О парадигмах и объектах 99
5.1.1. Классы и объекты 99
5.1.2. Принцип подстановки Барбары Лисков 100
5.1.3. Виртуальные функции &nbs