- •Ф.Ф. Павлов технология программирования
- •Санкт-Петербург
- •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.3. Проектирование файлов интерфейсов классов
Это шаг 3 этапа проектирования. Файл интерфейса класса содержит элементы-данные (поведение объекта класса) и элементы-функции (состояние объекта класса). Объект класса инкапсулирует поведение, если он умеет выполнять некоторые действия (элементы-функции), но подробности, как это делается, остаются скрытыми за фасадом интерфейса. Эта идея была сформулирована специалистом по информатике Дэвидом Парнасом в виде правил, которые называются принципами Парнаса:
Правило 1. Разработчик программы должен предоставлять пользователю информацию, которая нужна для использования приложения, и ничего кроме этого.
Правило 2. Разработчик программы должен знать только требуемое поведение объекта и ничего кроме этого.
Следствие принципа отделения интерфейса от реализации состоит в том, что программист может экспериментировать с различными алгоритмами, не затрагивая остальные классы. На этом шаге дается четкое описание классов, их элементов-данных и прототипов элементов-функций с типами параметров, опуская их реализацию.
Файл интерфейса базового класса
Спроектируем базовый класс Cindex. Поместим структуру tip_index в часть private, т.к. она используется только элементами-функциями данного класса, а элементы-функции - в часть public, т.к. они используются в классах CAkt, CCena.
Спроектируем прототипы элементов-функций класса ind:
- void init_ind(int, CString); - инициализирует элемент индексного массива; принимает номер записи и значение ключа;
- void init_kol(int); - инициализирует кол-во элементов массива;
- int dob_ind(CString); - поиск номера добавляемой записи; принимает значение ключа записи, возвращает номер записи;
- int poisk_ind(CString, int, int&); - поиск номера искомой записи; принимает значение ключа записи, индекс элемента начала поиска; возвращает номер записи и индекс элемента;
- void cor_ind(int, CString); - корректирует элемент индексного массива; принимает индекс элемента и ключ записи.
//Файл заголовков Index.h
#ifndef index_h
#define index_h
#include <string.h>
const int max_mass=1000;
class Cindex //определение базового класса
{
public:
int kol; //общее кличество записей файла
int fact_kol; //количество заполненных записей
private:
struct tip_index
{
CString kluch;
int nomer;
} index[max_mass];
public:
CIndex();
~CIndex();
int razm_zap;
void init_ind(int,CString);
void init_kol(int);
int dob_ind(CString);
int poisk_ind(CString,int,int&);
void cor_ind(int,CString);
};
#endif
Файлы интерфейсов производных классов
Рассмотрим производные классы akt и cena. Элементы-функции Init(), Sozdanie(), Zamena(), Udalenie(), Zapiszap(), ChtenieZap() будут вызываться через объект класса, и ,согласно правилам доступа, должны быть расположены в части public.
А почему выбран атрибут наследования public ? Если выбрать private, то элементы-функции класса ind становятся в классах akt и cena - private. Доступ к ним в этих классах еще есть, но они становятся закрытыми для дальнейшего наследования. А ведь функция sozdanie(), выполняющая обработку двух файлов, должна использовать элементы класса ind. Поэтому, надо public.
//Файл Akt.h
#ifndef akt_h
#define akt_h
#include "Index.h"
class CAkt : public CIndex
{
public:
CString Tabn; //10 байтов
CString Razrjad; //10 байтов
CString VidRab; //5 байтов
CString Objem; //10 байтов
public:
void ZapisZap(int nomer);//запись записи в файл
void ChtenieZap(int nomer);//чтение записи из файла
void Sozdanie();//добавление новой записи
void Init(); //создание индексного массива
void Udalenie(int nomer);//удаление записи
void Zamena(int nomer);//замена записи
CAkt();
virtual ~CAkt();
};
#endif
//Файл Cena.h
#ifndef cena_h
#define cena_h
#include "Index.h"
class CCena : public CIndex
{
public:
CString Vid; //5 байтов
CString Rascenka; //10 байтов
public:
void Udalenie(int nomer);
void Zamena(int nomer);
void Init();
void Sozdanie();
void ChtenieZap(int nomer);
void ZapisZap(int nomer);
CCena();
virtual ~CCena();
};
#endif