ФГБОУВПО
“Воронежский государственный технический университет”
Ю.В. Минаева
ТЕХНОЛОГИИ РАЗРАБОТКИ ПРИЛОЖЕНИЙ В СРЕДАХ
DELPHI И C++ BUILDER
Утверждено Редакционно-издательским советом университета в качестве учебного пособия
Воронеж 2011
УДК 681.3
Минаева Ю.В. Технологии разработки приложений в средах Delphi и C++ Builder: учеб. пособие / Ю.В. Минаева. Воронеж: ФГБОУВПО “Воронежский государственный технический университет”, 2011. 88 с.
В учебном пособии рассматриваются основы разработки приложений с использованием объектно-ориентированного подхода в средах Delphi и C++ Builder.
Издание соответствует требованиям Государственного образовательного стандарта высшего профессионального образования по направлению 230100.62 «Информатика и вычислительная техника», профилю «Системы автоматизированного проектирования», направлению 230400.62 «Информационные системы и технологии», профилю «Информационные системы и технологии», дисциплине «Технологии программирования».
Предназначено для студентов очной формы обучения.
Учебное пособие подготовлено в электронном виде в текстовом редакторе MS Word 1997-2003 и содержится в файле Технологии программирования.doc
Табл. 3. Ил. 29. Библиогр.: 5 назв.
Научный редактор д-р техн. наук, проф. Я.Е. Львович
Рецензенты: кафедра вычислительной техники Воронежской государственной лесотехнической академии (зав. кафедрой д-р техн. наук, проф.
В.К. Зольников);
канд. техн. наук, доц. Д.Э. Короткевич
Минаева Ю.В., 2011
Оформление. ФГБОУВПО «Воронежский государственный технический университет», 2011
Сложность современного программного обеспечения требует от разработчиков владения наиболее перспективными технологиями его создания.
Одной из таких технологий на настоящий момент является объектно-ориентированное программирование (ООП). Применение ООП позволяет разрабатывать программное обеспечение повышенной сложности за счет улучшения его технологичности (лучших механизмов разделения данных, увеличения повторяемости кодов, использования стандартизованных интерфейсов пользователя и т.д.).
В настоящее время большую популярность завоевали визуальные среды программирования Delphi и C++ Builder, обобщающие опыт ООП и включающие средства для эффективной разработки приложений. Сложность программирования в таких средах существенно снижается за счет наличия специальных библиотек объектов, «спрятавших» многие элементы техники программирования.
В теоретической части пособия рассматриваются общие вопросы ООП, особенности реализации объектов в языках Object Pascal и C++, приводятся краткие сведения об основных приемах работы в визуальных средах программирования.
Практическую часть пособия составляют методические указания к четырем лабораторным работам, посвященным использованию компонентов для работы с текстом, графикой, базами данных.
ООП появилось в результате длительной эволюции технологии разработки программных продуктов. В основу эволюции легло стремление ускорить процесс создания надежных программных средств. Объектные модели различных версий универсальных языков программирования имеют свои особенности, но в их основе лежат единые концепции.
В теории программирования ООП определяется как технология создания сложного программного обеспечения, которая основана на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного типа.
Взаимодействие программных объектов в такой системе осуществляется путем передачи сообщений (рис. 1).
Основное достоинство ООП - сокращение количества межмодульных вызовов и уменьшение объемов информации, передаваемой между модулями, по сравнению с модульным программированием. Это достигается за счет более полной локализации данных и интегрирования их с подпрограммами обработки, что позволяет вести практически независимую разработку отдельных частей (объектов) программы.
Кроме этого, объектный подход предлагает новые технологические средства разработки, такие как наследование, полиморфизм, композиция, наполнение, позволяющие конструировать сложные объекты из более простых.
В результате существенно увеличивается показатель повторного использования кодов, появляется возможность создания библиотек объектов для различных применений, и разработчикам предоставляются дополнительные возможности создания систем повышенной сложности.
Основной недостаток ООП - некоторое снижение быстродействия за счет более сложной организации программной системы.
В основу ООП положены следующие принципы: абстрагирование, ограничение доступа, модульность, иерархичность, типизация.
Рассмотрим, что представляет собой каждый принцип.
Абстрагирование - процесс выделения наиболее существенных свойств объекта, которые отличают его от других и четко определяют особенности объекта с точки зрения дальнейшего рассмотрения и анализа. Современный уровень абстракции предполагает объединение всех характеристик абстракции (как касающихся состояния анализируемого объекта, так и определяющих его поведение) в единую программную единицу некий абстрактный тип (класс).
Ограничение доступа - сокрытие отдельных элементов реализации объекта, не затрагивающих существенных характеристик его как целого.
Необходимость ограничения доступа предполагает разграничение двух частей в описании объекта:
интерфейс - совокупность основных характеристик состояния объекта и его поведения, доступные для других объектов;
реализация - внутренняя организация объекта и механизмы реализации его поведения, невидимые для внешних объектов.
Ограничение доступа в ООП позволяет разработчику:
выполнять конструирование системы поэтапно, не отвлекаясь на особенности реализации используемых объектов;
легко модифицировать реализацию отдельных объектов, не затрагивая при этом другие.
Сочетание объединения свойств предмета и механизмов реализации его поведения в единый объект и ограничения доступа к реализации этих свойств получило название инкапсуляции.
Модульность - принцип разработки программной системы, предполагающий реализацию ее в виде отдельных частей (модулей). При выполнении декомпозиции системы на модули желательно объединять логически связанные части, по возможности обеспечивая сокращение количества внешних связей между модулями. Принцип унаследован от модульного программирования, следование ему упрощает проектирование и отладку программы.
Принцип иерархичности предполагает использование системы упорядоченных объектов (иерархий) при разработке программных систем.
В ООП используются два вида иерархии:
иерархия «целое/часть» - показывает, что некоторые объекты являются составными частями других (например, функция – модуль – программа);
иерархия «общее/частное» - показывает, что одни объекты являются частными случаями других, т. е. сложные объекты строятся на базе более простых путем добавления к ним новых характеристик и, возможно, уточнения имеющихся.
Наследование - такое соотношение между объектами, когда один из них использует структурную или функциональную часть одно или нескольких других (т. е. иерархия «общее/частное»).
Объект-потомок, унаследовав какое-либо свойство или механизм поведения, может изменить его в соответствии со своими потребностями. В результате будут существовать свойства и механизмы, которые для разных объектов называются одинаково, а исполняются по-разному. Этот принцип называется полиморфизмом.
Типизация - ограничение, накладываемое на свойства объектов и препятствующее взаимозаменяемости объектов различных типов (или сильно ограничивающее возможность такой замены).
Использование принципа типизации обеспечивает:
раннее обнаружение ошибок, связанных с недопустимыми операциями над программными объектами (ошибки обнаруживаются на этапе компиляции программы при проверке допустимости выполнения данной операции над программным объектом);
упрощение документирования;
возможность генерации более эффективного кода.
Язык программирования считается объектно-ориентированным, если в нем реализованы принципы абстрагирования, ограничения доступа, модульности и иерархичности.
Несмотря на то, что принципиально ООП возможно на многих языках программирования, желательно для создания объектно-ориентированных программ использовать объектно-ориентированные языки, включающие специальные средства, например, Object Pascal (начиная с версии 5.5) и C++.
Особое место занимают объектные модели Delphi и C++Builder. Эти модели обобщают опыт ООП и включают некоторые новые средства, обеспечивающие эффективное создание более сложных систем. На базе этих моделей созданы визуальные среды для разработки приложений Windows. Сложность программирования удалось существенно снизить за счет создания специальных библиотек объектов, «спрятавших» многие элементы техники программирования.
Классы
Для представления объектов используется специальный определяемый программистом тип данных - класс.
Класс - это структурный (составной) тип данных, который включает описание полей данных, а также процедур и функций, работающих с этими полями, - методов.
Реализация объединения данных с определенными видами их обработки делает классы пригодными для описания состояния и поведения моделей реальных объектов.
Совокупность полей определяется множеством состояний объекта с точки зрения решаемой задачи, а совокупность методов - множеством механизмов поведения объекта.
Каждая переменная типа класса включает набор полей, объявленных в классе. Совокупность значений, содержащихся в этих полях, моделирует конкретное состояние объекта предметной области. Изменение этих значений в процессе работы отражает изменение состояния моделируемого объекта.
Воздействие на объект выполняется посредством изменения его полей или вызова его методов. Доступ к полям и методам объекта осуществляется с указанием имени объекта (при этом используются составные имена):
<имя объекта>.<имя поля>
или
<имя объекта>.<имя метода>.
Большинство версий объектно-ориентированных языков позволяет ограничить доступ к некоторым полям и методам объекта, обеспечивающим функционирование объекта. При наличии таких возможностей специальными средствами выделяют интерфейс и реализацию класса. Описание класса без учета синтаксиса конкретного языка выглядит следующим образом:
Класс <имя класса>
интерфейс
<объявление полей и методов класса,
к которым возможно обращение извне>
реализация
<объявление полей и методов класса,
к которым невозможно обращение извне>
Конец описания
Такое объединение полей и методов в одном объекте является реализацией принципа инкапсуляции.
Наличие интерфейса обеспечивает уменьшение возможности несанкционированного изменения значений полей объекта. При этом сокрытие особенностей реализации упрощает внесение изменений в реализацию класса, как в процессе отладки, так и при модификации программы.
Как и любая переменная программы, объект (переменная типа класса) должен быть размещен в памяти (создан) и удален из памяти (уничтожен). Причем создание и уничтожение объектов выполняется статически или динамически.
Статическое создание объектов выполняется в процессе компиляции программы, а статическое уничтожение - при завершении программы: объект удаляется из памяти вместе с программой.
Динамическое создание и уничтожение объектов выполняется в процессе работы программы специальными командами.
Операция создания и инициализация полей объекта получила название конструирования объекта, а операция уничтожения объекта – деструкции объекта. Соответствующие методы, если они определены в классе, получили название конструкторов и деструкторов.
В ООП существует возможность конструирования новых более сложных классов из уже имеющихся посредством добавления полей и определения новых методов (принцип иерархичности). При этом исходный класс, на базе которого выполняется конструирование, часто называется родителем, а производный - потомком. Специальный механизм наследования обеспечивает классу-потомку возможность использования полей и методов одного или нескольких родительских классов.
Если непосредственный родитель единственный, то наследование называется простым, а если таких классов несколько - то множественным.
При этом класс родитель (или классы родители) и класс потомок образуют иерархию.
Наследование свойств в иерархии существенно упрощает работу программиста. В настоящее время созданы библиотеки наиболее часто встречающихся классов, которые можно использовать вновь и вновь, строя на их основе классы для решения различных задач.