Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КЛ_ТехнолПрогр2010_090103.doc
Скачиваний:
22
Добавлен:
27.04.2019
Размер:
1.35 Mб
Скачать

Раздел 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. Технологию можно применять для разработки распределенного программного обеспечения в разнородной вычислительной среде.