- •Ф.Ф. Павлов технология программирования
- •Санкт-Петербург
- •090103 – Организация и технология защиты информации
- •Содержание
- •Раздел 1 Создание программных приложений………………..…..7
- •Тема 1. Технология программирования. Основные понятия........7
- •Тема 3. Объектно-ориентированный подход
- •Тема 4 Объектно-ориентированное проектирование
- •Раздел 3 «Перспективные направления в области создания технологий программирования» содержит 3 темы: технология ActiveX, технологии доступа к базам данных, технологии для работы в Internet.
- •Раздел 1. Создание программных приложений
- •Тема 1. Технология программирования.
- •1.1. Этапы эволюции технологии программирования
- •1.2. Жизненный цикл и этапы разработки программ
- •1.3. Постановка задачи и спецификация программы
- •1.4. Проектирование и реализация программы
- •2.1 Структура программы
- •2.2 Структура функции
- •2.3. Типы данных
- •2.4. Средства управления экраном и клавиатурой
- •2.5 Средства управления файлами
- •Тема 3. Объектно-ориентированный подход
- •3.1. Сущность объектно-ориентированного подхода
- •3.2. Инкапсуляция
- •3.3. Наследование
- •3.4. Полиморфизм
- •Тема 4. Объектно-ориентированное проектирование
- •4.1. Постановка задачи и определение спецификаций
- •4.2. Проектирование структуры программы
- •4.3. Проектирование файлов интерфейсов классов
- •4.4. Проектирование файлов реализации классов
- •Раздел 2. Особенности программирования в Windows
- •5.1. Система окон разработки и система меню
- •5.2. Библиотека классов mfc
- •5.3. Сообщения – реакция на события
- •Тема 6. Создание Windows-приложений
- •6.1. Консольные приложения
- •6.4. Диалоговые приложения
- •Тема 7. Ввод-вывод информации
- •7.1. Управление клавиатурой
- •7.2. Управление курсором
- •7.3. Управление мышью
- •Тема 8. Программирование интерфейса приложений
- •8.1. Система меню
- •8.2. Система диалоговых окон и элементов управления
- •Тема 9. Программирование файловой обработки
- •9.1. Файловая обработка объектов класса mfc
- •9.2. Файловая обработка объектов классов пользователя
- •9.3. Файловая обработка с классом cFile
- •Тема 10. Технология программирования в Widows
- •10.1. Проектирование структуры программы,
- •10.2. Создание классов предметной области
- •10.3. Создание диалоговых окон
- •10.4. Создание диалоговых окон базы справочных
- •10.5. Создание ведомости результатов
- •Раздел III. Прогрессивные технологии
- •Тема 11. Технология ActiveX
- •11.1. Концепция технологии ActiveX
- •11.2. Создание приложения-контейнера
- •11.3. Создание приложения-сервера
- •Тема 12. Поддержка баз данных
- •12.1. Технологии доступа к данным
- •12.2. Создание приложения с базой данных
- •Тема 13. Программирование для Internet
- •13.1. Технологии для работы в Internet
- •13.2. Приложение в стиле браузера
- •13.3. Приложение с протоколом http в WinInet
- •13.4. Приложение с протоколом ftp в WinInet
- •Раздел 1 «Создание программных приложений»:
- •Раздел 2 «Особенности программирования в Windows»:
- •Раздел 3 «Прогрессивные технологии программирования»:
- •Извлечение из рабочей программы дисциплины
- •Утверждаю
- •Рабочая программа
- •Технология программирования
- •Санкт-Петербург
- •4. Содержание разделов и тем дисциплины
- •Раздел 1. Создание программных приложений
- •Тема 1. Технология программирования. Основные
- •Тема 4. Технология объектно-ориентированного
4.2. Проектирование структуры программы
Составление начальной иерархии и структуры классов
Это шаг 1 этапа проектирования.
Б. Страуструп ввел термин компонента в качестве единицы проектирования: «Обычно разрабатывается сразу множество взаимосвязанных классов. Такое множество часто называют библиотекой классов или компонентой».
Все классы можно условно разделить на две группы: классы предметной (прикладной) области и системные классы (классы этапа реализации). Классы предметной (прикладной) области непосредственно отражают понятия из прикладной области, т.е. понятия, которые использует пользователь для описания задач.
Системные классы – это понятия, которые применяют программисты для описания этапа реализации программы.
Разработка компоненты включает следующие этапы:
- проектирование структуры компоненты, включающее проектирование структурной схемы программы, представляющей собой иерархию классов компоненты, и интерфейсов классов;
- реализация (программирование) компоненты.
Этап проектирования структуры компоненты представляет собой итерационный процесс и включает следующие подэтапы:
- выбор классов компоненты: в качестве имен классов взять названия планово-учетных документов.
- определение состава классов: в качестве элементов-данных взять реквизиты документа, в качестве элементов-функций - набор операций (задач) по обработке документа.
- составление начальной иерархии классов: выявить взаимозависимость документов и спроектировать структурную схему компоненты, используя наследование и полиморфизм.
Рассмотрим предметную область программы. Выберем в качестве имен классов входящие в условие задачи наименования документов. В нашем случае - это «Акты», «Справочник расценок», «Ведомость», и ,следовательно, классы - это akt, cena, ved. Класс ved является производным классов akt и cena. Начальная модель построения программы представляет собой иерархию трех классов (рис.4.2).
CAkt CCena
\ /
CVed
Рис. 4.2. Начальная модель построения программы
Определим для каждого класса совокупность элементов-данных и элементов-функций для их обработки.
Во-первых, каждый класс содержит реквизиты документа:
- класс CAkt – CString Tabn, CString Razrjad, CString VidRab, CString Objem;
- класс CCena – CString Vid, CString Rascenka;
- класс CVed - CString Tabn, CString Razrjad, CString Vid, CString Objem.
Во-вторых, по условию задачи требуется хранить исходные документы (Акты и Расценки) в базе данных с индексной организацией. Следовательно, необходимо иметь в классах akt и cena структуры индексных массивов (struct tip_index) и элементы-функции для их обработки: init_ind (инициализация элемента), init_kol (инициализация количества элементов), dob_ind (добавление элемента), poisk_ind (поиск элемента), cor_ind (корректировка элемента. Необходимы функции открытия файлов данных и создания индексных массивов init().
В-третьих, необходимо выполнять с помощью подменю следующие операции над исходными документами ("Акт", "Расценка"): создание, просмотр, поиск, замена, удаление. Итак, для классов akt и cena необходимы функции sozdanie - для ввода нового документа в базу данных, функции zapis_zap(int) и chtenie_zap(int) для записи и чтения документов из базы данных, функции Zamena (int), Udalenie(int).
Реорганизация иерархии и структуры классов
Это шаг 2 этапа проектирования. При реорганизации иерархии и структуры классов применяют четыре процедуры:
- обобщение (декомпозиция классов);
- расщепление (локализация классов);
- слияние (объединение классов);
- использование библиотек классов.
Обобщение (декомпозиция классов) – это выявление в группе классов общих элементов и вынесение их в общий базовый класс. Признаками необходимости обобщения являются:
- общая схема использования;
- сходство между наборами операций;
- сходство реализации.
Расщепление (локализация классов) – это разделение класса на несколько классов. Расщепление применяется в следующих случаях:
- имеющийся сложный класс имеет смысл разделить на несколько простых классов и тем самым обеспечить поэтапную разработку;
- класс содержит ряд несвязанных между собой функций или набор независимых друг от друга данных.
Слияние (объединение классов) – это объединение нескольких небольших, но тесно взаимодействующих классов в один. Таким образом, взаимодействие будет скрыто в реализации нового класса.
Использование библиотек классов – это интегрирование классов в новый проект из существующего проекта. Чем больше готовых библиотечных классов будет использовано в программе, тем меньше кода придется писать при реализации программы.
Анализ структуры классов akt и cena позволяет выделить их общую часть, относящуюся к индексному массиву, в новый базовый класс ind. Класс ved, являясь производным от классов akt и cena, наследует элементы-данные этих классов. Поэтому, удалим их из класса ved.
Реорганизованная иерархия классов - на рис. 4.3.
CIndex
/ \
CAkt CCena
\ /
CVed
Рис. 4.3. Реорганизованная иерархия классов
Класс ved необходим только для создания выходной ведомости и не имеет никаких других функций. Поэтому, можно упростить структурную схему программы, упразднив класс ved, а выходная ведомость может быть реализована функцией диалогового окна вывода ведомости. Тогда выбранная иерархия классов может быть представлена на рис. 4.4.
CIndex
/ \
CAkt CCena
Рис. 4.4. Окончательная иерархия классов