- •Ф.Ф. Павлов технология программирования
- •Санкт-Петербург
- •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. Технология объектно-ориентированного
Раздел 3 «Перспективные направления в области создания технологий программирования» содержит 3 темы: технология ActiveX, технологии доступа к базам данных, технологии для работы в Internet.
Приведенные примеры реализованы средой программирования Microsoft Visual C++ 2005. В примерах добавляемые программистом строки программы в программный код помечены жирным шрифтом.
Раздел 1. Создание программных приложений
В разделе 1 изучются этапы эволюции программного обеспечения, жизненный цикл и этапы разработки программ, базовый язык С++, объектно- ориентированный подход к проектированию и разработке программ, технология объектно-ориентированного программирования.
Тема 1. Технология программирования.
Основные понятия
1.1. Этапы эволюции технологии программирования
Технологией программирования называется совокупность методов и средств, используемых в процессе разработки программного обеспечения. Как любая технология, технология программирования представляет собой последовательность технологических операций (этапов программирования) с описанием операций (исходные данные и результаты) и условиями их выполнения.
Программирование – это молодая и быстро развивающаяся отрасль науки и техники. Основными этапами развития программирования как науки являются следующие:
- неструктурированное «стихийное программирование»;
- процедурное, модульное программирование;
- объектно-ориентированное программирование;
- компонентное программирование.
До середины 60-ых годов существовала неструктурированная, «стихийная» технология программирования. Несовершенство такой технологии программирования проявилось в отсутствии четких методов проектирования подпрограмм и появлении большого количества ошибок при сборке программного продукта. Лишь некоторые из языков получили тогда широкое применение (FORTRAN, ALGOL, COBOL).
В результате исследовательских работ 60-70-ых годов XX в. была разработана технология процедурного программирования, внесшая ясность в написание программ, простоту тестирования и отладки, легкость модификации. Процедурное программирование основано на модели построения программы как иерархии процедур, отсюда и название метода. Известные процедурные языки программирования – это PL1, ALGOL-68, Pascal, C, C++.
Процедурное программирование основано на использовании следующих методов (приёмов) программирования.
Метод декомпозиции (нисходящего проектирования) – это разделение программы на подпрограммы простейшей структуры и представление программы в виде иерархии подпрограмм.
Метод модульной организации – это группировка подпрограмм и обрабатываемых ими данных в модули, которые программируются и компилируются отдельно. Преимущества данного метода заключаются в параллельной и независимой работе программистов, удобстве программирования, возможности создания библиотек.
Метод структурного программирования подпрограмм, заключается в следующем:
- разделение подпрограммы на вложенные блоки, что позволяет локализовать переменные и операторы их обработки, структурировать подпрограмму;
- использование операторов ветвления и циклов, осуществляющих передачу управления только сверху - вниз, что приводит к ясности алгоритма, к облегчению программирования и сопровождения программ; операторы безусловной передачи управления использовать не рекомендуется;
- форматирование текста подпрограммы, т.е. использование отступов для отображения вложенности блоков, применение читаемых идентификаторов и использование комментариев, что приводит к повышению читабельности программ и к облегчению их сопровождения.
При проектировании и реализации информационных систем в экономике и управлении проявились недостатки технологии процедурного программирования:
- программы не всегда объективно отражают объекты реального мира, и поэтому не могут повторно использоваться;
- обнаружились сложности сопровождения и модификации больших программ.
В 80-ых годах Б. Страуструпом был разработан язык C++, обеспечивший возможность объектно - ориентированного подхода к программированию. Технология объектно-ориентированного программирования основывается на модели построения программы как иерархии классов, представлении программы как совокупности объектов – экземпляров определенных классов.
Объектная технология помогает разрабатывать осмысленные программные единицы, основанные на понятиях прикладной области. Объекты являются программными компонентами, моделирующими элементы реального мира. Объекты могут быть повторно использованы в других проектах. Объектно-ориентированные программы лучше организованы, их легче сопровождать и изменять.
Объектный подход к программированию использован в новых версиях языков программирования Pascal, C++, Modula, Java.
Основные методы объектно-ориентированного программирования это инкапсуляция, наследование, полиморфизм.
Инкапсуляция - это объединение данных и функций для работы с этими данными в абстрактные типы данных - классы. Переменные типа класс называются объектами.
Преимущества инкапсуляции проявляются в следующем:
- Упрощение написания больших программ. Концепция объектно-ориентированного программирования - это разделение программы на отдельные небольшие части - классы, в каждом из которых сгруппированы определенные элементы-данные и элементы-функции для их обработки.
- Управление доступом к элементам класса. Атрибуты доступа private, protected, public объявляют элементы класса соответственно закрытыми, защищенными и открытыми для доступа.
- Возможность изменения содержимого класса (например, добавление новых элементов) без изменения других частей программы, использующих этот класс.
Наследование (inheritance) - это порождение новых абстрактных типов данных (производных классов) на основе существующих абстрактных типов данных (базовых классов), причём производный класс наследует данные и функции базового класса, а также имеет собственные данные и функции.
Преимущества наследования проявляются в следующем:
- исключение дублирования элементов-данных и элементов-функций за счет повторного использования элементов класса в производных классах;
- упрощение программирования, т.к. наследуемые и собственные элементы класса находятся в одной иерархии классов и не разбросаны по всей программе;
- возможность оптимального моделирования объектов реального мира в прикладной области за счет иерархии классов.
Полиморфизм (polymorphism) означает способность объектов классов, связанных наследованием, реагировать различным образом на одно и то же сообщение.
Полиморфизм имеет следующие виды.
Перегрузка операций - это переопределение действий операций применительно к объектам конкретных классов.
Преобразование типов данных при совместном их использовании тоже является одним из методов полиморфизма.
Перегрузка функции - это использование одинакового имени для функций, выполняющих похожие действия, но с разными типами данных и объявленных в одной области действия.
Виртуальная функция - это элемент-функция базового класса в иерархии наследования, переопределенная в производных классах и вызываемая в зависимости от класса объекта, адресуемого через указатель или ссылку на базовый класс.
Параметрический полиморфизм - это механизм использования обобщенного определения функции или класса (шаблона) для автоматической генерации новых функций или классов для различных типов данных.
Несмотря на большие преимущества, опыт использования технологии объектно-ориентированного программирования выявил недостатки при компоновке объектов компиляции, полученных разными компиляторами языка. Отсутствовали стандарты компоновки двоичных результатов компиляции объектов в единое целое даже в пределах одного языка программирования с разными компиляторами. Потребность в разработке технологий, устраняющих указанные недостатки и убыстряющих написание программ, привела к появлению в настоящее время компонентных технологий программирования и CASE-технологий.
При компонентном подходе модель построения программы представляет собой совокупность отдельных двоичных объектов-компонентов - физически отдельно существующих частей программы, взаимодействующих между собой через стандартные двоичные интерфейсы. Объекты-компоненты можно собрать в dll-библиотеки или исполняемые файлы, использовать в любом языке программирования, применять в одном или в разных процессах, на одном или на разных компьютерах.
Технологии программирования, использующие компонентный подход, разработаны на базе технологии COM (Component Object Model – компонентная модель объектов) и на базе технологии создания распределенных объектов CORBA (Common Object Request Broker Architecture – общая архитектура с посредником обработки запросов объектов). Обе технологии основаны на общих принципах.
Объекты (компоненты) COM имеют следующие особенности:
- являются объектами (экземплярами) классов COM, содержат поля и наборы виртуальных функций, называемых интерфейсами, могут иметь несколько интерфейсов, обеспечивающих доступ к его полям и функциям;
- представлены в двоичном виде, в виде динамически компонуемых библиотек (dll);
- не зависимы от языков программирования.
Технология COM – это модель взаимодействия типа «клиент – сервер». Клиент – это программа или объект, использующий другой объект. Клиент подсоединяется к объекту через интерфейс. Сервер – это местоположение объектов COM, подключаемых к приложению-клиенту.
Технология COM фирмы Microsoft явилась основой для разработки компонентных технологий программирования.
Технология CORBA использует принципы, аналогичные технологии COM, т.е. это тоже модель взаимодействия типа «клиент – сервер», только организация взаимодействия производится с помощью специального посредника VisiBroker. Технологию можно применять для разработки распределенного программного обеспечения в разнородной вычислительной среде.