- •Технология программирования
- •Режим доступа к электронному аналогу печатного издания: http://www.Libdb.Sssu.Ru
- •Оглавление
- •Введение
- •1. Основные понятия объектно-ориентированного подхода
- •1.1. Объектно-ориентированная разработка программ
- •1.2. Объектно-ориентированные языки программирования
- •1.3. Сквозной пример
- •Контрольные вопросы
- •2. Первая фаза жизненного цикла – анализ требований и предварительное проектирование системы. Объектно-ориентированное моделирование
- •2.1. Объектная модель системы
- •2.1.1. Объекты и классы
- •2.1.2. Атрибуты объектов
- •2.1.3. Операции и методы
- •2.1.4. Зависимости между классами (объектами)
- •2.1.5. Атрибуты зависимостей
- •Зарегистрирован
- •2.1.6. Имена ролей, квалификаторы
- •2.1.7. Агрегация
- •2.1.8. Обобщение и наследование
- •2.1.9. Абстрактные классы
- •2.1.10. Множественное наследование
- •2.1.11. Связь объектов с базой данных
- •2.2. Построение объектной модели
- •2.2.1. Определение классов
- •2.2.2. Подготовка словаря данных
- •2.2.3. Определение зависимостей
- •2.2.4. Уточнение атрибутов
- •2.2.5. Организация системы классов с использованием наследования
- •2.2.6. Дальнейшее исследование и усовершенствование модели
- •2.3. Пример объектной модели
- •2.3.1. Определение объектов и классов
- •2.3.2. Подготовка словаря данных
- •2.3.3. Определение зависимостей
- •2.3.4. Уточнение атрибутов
- •2.3.5. Организация системы классов с использованием наследования
- •2.3.6. Дальнейшее усовершенствование модели
- •2.4. Выделение подсистем
- •2.4.1. Понятие подсистемы
- •2.4.2. Интерфейсы и окружения
- •2.5. Динамическая модель системы или подсистемы
- •2.5.1. События, состояния объектов и диаграммы состояний
- •2.5.2. Условия
- •2.5.3. Активности и действия
- •2.5.4. Одновременные события. Синхронизация
- •2.5.5. Вложенные диаграммы состояний
- •2.5.6. Динамическая модель банковской сети
- •2.6. Функциональная модель подсистемы
- •2.6.1. Диаграммы потоков данных
- •2.6.2. Описание операций
- •2.6.3. Ограничения
- •2.6.4. Функциональная модель банковской сети
- •2.7. Заключительные замечания к разделу
- •Контрольные вопросы
- •3. Вторая фаза жизненного цикла – конструирование системы
- •3.1. Разработка архитектуры системы
- •3.1.1. Разбиение системы на модули
- •3.1.2. Выявление асинхронного параллелизма
- •3.1.3. Распределение модулей и подсистем по процессорам и задачам
- •3.1.4. Управление хранилищами данных
- •3.1.5. Управление глобальными ресурсами
- •3.1.7. Пограничные ситуации
- •3.1.8. Обзор архитектур прикладных систем
- •3.2. Архитектура системы управления банковской сетью
- •3.3. Разработка объектов
- •3.3.1. Совместное рассмотрение трёх моделей
- •3.3.2. Разработка алгоритмов, реализующих полученные операции
- •3.3.3. Оптимизация разработки
- •3.3.4. Реализация управления
- •3.3.5. Уточнение наследования классов
- •3.3.6. Разработка зависимостей
- •Контрольные вопросы
- •4. Сравнительный анализ объектно-ориентированных методологий разработки программных систем
- •4.1. Методология omt
- •4.2. Методология sa/sd
- •4.3. Методология jsd
- •4.4. Методология osa
- •Аналитические возможности сравниваемых методологий объектно-ориентированного анализа
- •Возможности сравниваемых методов объектно-ориентированного анализа, используемые на этапе разработки системы
- •5. Третья фаза жизненного цикла – реализация объектно-ориентированного проекта
- •5.1. Объектно-ориентированный стиль программирования
- •5.2. Объектно-ориентированные системы программирования
- •5.3.1. Реализация классов
- •5.3.2. Порождение объектов
- •5.3.3. Вызов операций
- •5.3.4. Использование наследования
- •5.3.5. Реализация зависимостей
- •5.4. Другие объектно-ориентированные системы программирования
- •5.4.1. Реализация классов
- •5.4.2. Порождение объектов
- •5.4.3. Вызов операций
- •5.4.4. Реализация наследования
- •5.4.5. Реализация зависимостей
- •5.5. Не объектно-ориентированные системы программирования
- •5.5.1. Преобразование классов в структуры данных
- •5.5.2. Передача параметров методам
- •5.5.3. Размещение объектов в памяти
- •5.5.4. Реализация наследования
- •5.5.5. Выбор методов для операций
- •5.5.6. Реализация зависимостей
- •5.5.7. Объектно-ориентированное программирование на Фортране
- •5.5.8. Чем неудобны не объектно-ориентированные системы программирования
- •Контрольные вопросы
- •Библиографический список
- •Учебное издание
2.3.3. Определение зависимостей
Следуя рекомендациям п. 2.2.3, выделяем явные и неявные глагольные обороты из предварительной постановки задачи и рассматриваем их как имена возможных зависимостей. Из постановки задачи о банковской сети (см. п.1.3) можно извлечь следующие обороты:
Глагольные обороты (явные и неявные): Банковская сеть включает кассиров и ATM'ы Консорциум распределяет результаты проводок по ATM Банк владеет компьютером банка Компьютер банка поддерживает счета Банк владеет кассовыми терминалами Кассовый терминал взаимодействует с компьютером банка Кассир вводит проводку над счётом ATM'ы взаимодействуют с центральным компьютером во время проводки Центральный компьютер взаимодействует с компьютером банка ATM принимает карточку ATM общается с пользователем ATM выдаёт наличные деньги ATM печатает квитанции Система регулирует коллективный доступ Банк предоставляет программное обеспечение Консорциум состоит из банков Консорциум владеет центральным компьютером Система обеспечивает протоколирование Система обеспечивает безопасность Клиенты имеют карточки Карточка обеспечивает доступ к счёту В банке служат кассиры
Затем исключаем ненужные или неправильные зависимости, используя критерии, сформулированные в п. 2.2.3:
зависимости между исключёнными классами: исключаются следу-ющие зависимости: Банковская сеть включает кассиров и ATM'ы (класс банковская сеть исключён), ATM печатает квитанции (класс квитанция исключён), ATM выдаёт наличные деньги (класс деньги исключён), Система обеспечивает протоколирование проводок (класс служба ведения записей исключён), Система обеспечивает безопасность ведения счетов (класс служба безопасности исключён), Банки предоставляют программное обеспечение (класс программное обеспечение исключён);
нерелевантные зависимости и зависимости, связанные с реализацией: зависимость «Система регулирует коллективный доступ» исключается как связанная с реализацией;
действия описываются такими зависимостями, как «ATM принимает карточку» и «ATM общается с пользователем»; мы исключаем эти зависимости;
тренарные зависимости: зависимость «Кассир вводит проводку над счётом» раскладывается на две бинарные зависимости «Кассир вводит проводку» и «Проводка относится к счёту». Зависимость «ATM'ы взаимодействуют с центральным компьютером во время проводки» раскладывается на «ATM'ы взаимодействуют с центральным компьютером» и «Проводка начинается с ATM»;
производные зависимости: зависимость «Консорциум распределяет ATM'ы» является следствием зависимостей «Консорциум владеет центральным компьютером» и «ATM'ы взаимодействуют с центральным компьютером».
Удалив избыточные зависимости, получим следующий список зависимостей:
Банк владеет компьютером банка Компьютер банка поддерживает счета Банк владеет кассовыми терминалами Кассовый терминал взаимодействует с компьютером банка Кассир вводит проводку Проводка относится к счёту ATM'ы взаимодействуют с центральным компьютером Проводка начинается с ATM Центральный компьютер взаимодействует с компьютером банка Консорциум состоит из банков Консорциум владеет центральным компьютером Клиенты имеют карточки Карточка обеспечивает доступ к счёту В банке служат кассиры
Уточним семантику оставшихся зависимостей следующим образом:
переименуем неверно названные зависимости, чтобы смысл их стал более понятен; так, зависимость Компьютер банка поддерживает счета удобнее заменить зависимостью Банк держит счета;
имена ролей можно не использовать, так как они ясны из имён классов, участвующих в зависимости, как, например, для зависимости ATM'ы взаимодействуют с центральным компьютером;
неучтённые зависимости: Проводка начинается с кассового терминала, Клиенты имеют счета, Проводка регистрируется карточкой следует добавить в модель.
После уточнения зависимостей можно составить исходную версию объектной диаграммы. Для рассматриваемой задачи она будет иметь вид, представленный на рисунке 2.37.
Рис. 2.37. Первая версия объектной диаграммы для банковской сети