Лекция 1. Интегрированная среда разработки
Visual Studio .NET и основные понятия
1.1. Технология визуального, событийного программирования.
1.2. Пример создания простейшего проекта.
1.3. Структура и файлы шаблона С++ CLR – Приложения Windows Forms.
1.4. Окна панелей VS при создании Приложений Windows Forms.
1.5. Настройка параметров интегрированной среды разработки.
1.6. Примеры создания проектов
1.1. Технология визуального, событийного программирования
В состав среды проектирования программного обеспечения Microsoft Visual Studio.NET (VS) встроены средства, помогающие автоматизировать разработку программных приложений. Данная среда позволяет быстро создавать приложения, используя существующие шаблоны. При этом программисту достаточно ответить на ряд вопросов, касающихся того, какое приложение требуется создать, и исходные тексты шаблона приложения вместе с файлами соответствующих заготовок будут готовы к использованию.
По сравнению с предыдущими поколениями языков программирования язык программирования высокого уровня C++ – это мощная, профессиональная система программирования, которая вместе с VS позволяет быстро и эффективно создавать различные типы приложения для Microsoft Windows (MS Windows). Поскольку система VS является «визуальной», программист может создавать видимую часть приложения MS Windows, не написав ни строчки программного кода. Эта видимая часть является основой интерфейса пользователя «программа – пользователь», с помощью которого осуществляется взаимодействие пользователя с программой. Разработка как программного кода, так и программного интерфейса осуществляется на принципах объектно-ориентированного подхода, реализованного в VS применительно к приложениям, выполняемым под управлением MS Windows с помощью Интегрированной Среды Разработки(IntegratedDevelopmentEnvironment–IDE).
IDE – это программный комплекс, объединяющий в себе ряд средств, которые предназначены для использования в процессе разработки программного обеспечения. Как правило, IDE включает в себя редактор программного кода, компилятор и (или) интерпретатор программного кода, отладчик, средства для упрощения разработки пользовательского интерфейса и др.
Для таких Windows-приложений характерным является существование на экране в любой момент времени множества объектов: форм, окон, кнопок, меню, текстовых и диалоговых окон, линеек прокрутки и т.п. Пользователь имеет определенную (в зависимости от алгоритма решаемой задачи) свободу выбора в части использования этих объектов. Он может сделать щелчок (нажатие и затем отпускание) кнопкой мыши, перетащить объект, ввести данные в окно и т.п. Причем в большинстве случаев не предполагается заранее установленная последовательность действий. Как правило, программист, создавая программу, не должен ограничивать действия пользователя готовым программным обеспечением. Он должен разрабатывать программу, которая адекватно реагирует на любое действие пользователя, даже неправильное (в хорошей программе непредусмотренных действий не должно быть).
Поэтому для каждого объекта на экране предусмотрен ряд возможных событий. Одни из них производятся пользователем: щелчок или двойной щелчок по кнопке мыши, перетаскивание объекта, нажатие клавиши клавиатуры, ввод текста в окно и т.п. Некоторые события происходят в результате совершения других событий: например, окно открывается или закрывается, элемент управления становится активным (доступным) или теряет активность.
Каждое событие проявляется в определенных действиях (откликах, реакции, поведении) программы. Эти действия можно разделить на две группы.
Первая является следствием свойств объекта. Эти свойства могут быть установлены программистом из некоторого стандартного перечня свойств, заданного системой программирования и самой системой MS Windows. Примером таких действий является свертывание окна после щелчка по кнопке Свернуть. Изменить поведение объекта в подобных случаях программист не может. Однако во многих случаях имеется определенная возможность вариации отклика объекта на событие (текст, шрифт, цвет, размер, место на экране и др.) путем задания определенных свойств.
Вторая группа действий (отклика) на события полностью определяется разработчиком программного кода. Это обеспечивается возможностью задания событийной процедуры C++ для обработки каждого возможного для объекта события. Первоначально каждая такая процедура является пустой, и, следовательно, когда происходит событие, ничего не случается. Теоретически можно создать процедуру для любого события, но на практике программист заполняет кодом процедуры только для тех событий, которые в данной программе представляют интерес для данного приложения.
Таким образом, C++ предоставляет пользователю объектно-ориентированную среду программирования, основанную на событиях. Упрощенно говоря, процесс разработки программы в этой среде сводится к выбору набора объектов и их свойств, заданию событий и процедур их обработки, которые в совокупности обеспечивают решение поставленной задачи.
Основными терминами визуального событийного программирования, являются объект, свойство, класс, событие, процедура (метод), которые в любой среде визуальной разработки приложений имеют одинаковый смысл. Объект (Object) – это некая отдельная сущность, отличающаяся от других сущностей особыми свойствами, поведением, взаимодействием с другими объектами приложения. При объектно-ориентированном подходе в программировании любое приложение представляет собой набор взаимосвязанных объектов, реализующих необходимые функциональные требования, предъявленные к приложению. Объект всегда конкретен и реально существует на форме (в качестве элементов управления) или в приложении (в виде блоков программ).
Основной единицей в объектно-ориентированном программировании является программный объект, который объединяет в себе как описывающие его данные (свойства), так и средства обработки этих данных (методы). То есть, программные объекты обладают свойствами, могут использовать методы и реагировать на события.
Основными объектами визуального программирования являются форма и элементы управления. Форма (Form)–это объект, представляющий собой окно (основа интерфейса пользователя), на котором размещаются элементы управления, например, Кнопка (Button); Метка (Label); Текстовое Поле (TextBox); Флажок (CheckBox); Список (ListBox); Раскрывающийся Список
(ComboBox); Переключатель (RadioButton) и др. Среда визуального программирования позволяет увидеть объекты на экране на этапе проектирования приложения, дает возможность настроить объекты, изменяя их расположение, размеры и другие свойства. Форма является контейнером объектов, в то же время форма также является объектом. При размещении объекта на форме основные параметры объекта сохраняются в исполняемом программном коде. При этом объектами также являются программные блоки или фрагменты программного кода, из которых «собирается» проектируемое приложение (рисунок 1.1-1).
Рисунок 1.1-1. Панель элементов управления и заготовка формы Таким образом, любой объект характеризуется такими основными понятиями, как:
состояние – каждый объект всегда находится в определенном состоянии, которое определяется набором свойств объекта; свойство – признак, некоторое отдельное качество объекта.
Свойство объекта (Properties) – это значение или характеристика, заданная и хранимая объектом. В то же время совокупность свойств объекта определяет его состояние. Например, Текст (Text)или Цвет (BackColor) формы, способ Выравнивания текста (Alignment)или Цвет символов (ForeColor) текстового поля – это свойства. В программном коде обращение к объекту происходит по имениобъекта. Свойства объектов можно задавать в окне Свойства (Properties) VS и менять свойства объектов в программном коде.
В программном коде существуют определенные правила (определенный формат) для установки свойства – имя объекта и название свойства согласно правилам точечной нотации, разделяются точкой или стрелкой (для объектов ссылочного типа). Класс (Class) –это центральное понятие объектно-ориентированного программирования. Разработчик проектов в среде визуального программирования VS может использовать стандартные классы из системной библиотеки FCL (Framework Class Library, библиотеки классов платформы .NET) и создавать собственные классы. Причем класс может выполнять две различные роли:
во-первых, Класс – это модуль – архитектурная единица построения проекта по модульному принципу. Справиться со сложностью большого проекта можно только путем деления его на модули, – сравнительно небольшие единицы, допускающие независимую разработку и последующее объединение в большую программную систему. во-вторых, Класс – это тип данных. Тип данных – это семантическая единица, описывающая свойства и поведение множества объектов, являющихся экземплярами класса. Пока будем просто считать, что класс - это совокупность объектов, обладающих общими свойствами и поведением. Например, Button1 на Form1 со всеми своими конкретными свойствами и действием является объектом класса Button.
Класс характеризуется такими основополагающими понятиями объектно-ориентированного программирования, как:
наследование–объект класса обладает всеми свойствами, методами и событиями класса; инкапсуляция – сокрытие сложного механизма действия объекта; полиморфизм –объекты разных классов могут использовать одноименные методы, работающие по-разному для разных объектов.
Коллекция объектов – это набор объектов, объединенных общим именем, причем не обязательно это объекты одного класса. Примером коллекций могут служить встроенные в C++ коллекции, в числе которых:
Forms (Формы) – множество загруженных форм приложения; Controls (Элементы управления) –множество всех элементов управления в форме.
Пространство имен – это иерархическая библиотека классов, организованная под уникальными именами такими, например, как System::Windowsили System::Math – через операцию разрешения (доступа) к области видимости) :: записываются имена вложенных пространств имен, библиотек, и их методов. Имена всех глобальных переменных и функций находятся в единой (глобальной) области видимости. Глобальные имена разных программистов, работающих над одним проектом, могут оказаться одинаковыми, и также могут совпасть с именами стандартной библиотеки (такими простыми, как copy, sort, find, set). Чтобы избежать конфликтов глобальных имен при компоновке проекта, используется понятие пространства имен. Пространство имен - это некая именованная область файла - является средством ограничения области видимости, это область, в пределах которой идентификатор должен быть уникальным. То есть, каждое имя становится уникальным в своем пространстве имен. Пространство имен позволяет не только ограничить доступ к именам извне, но и сгруппировать имена по некому критерию. Программист может сам определять пространство имен и задать ему имя. Можно создать неименованное пространство имен, т.е. не присваивая ему имени. Для каждого файла автоматически создается пространство, элементы которого видны только из данного файла и компилятор дает ему имя, совпадающее с именем файла. Пространство имен в документации по VS называется также библиотеками классов. Каждый проект в VS также содержит корневое пространство имен. Событие – это средство взаимодействия объектов друг с другом. Событие может создаваться пользователем или возникать в результате воздействия других программных объектов. Объекты могут генерировать события и выполнять действия в ответ на заданные события. Примеры событий – Load (Загрузка) формы, Click (Щелчок) мышью по объекту, DblClick (Двойной щелчок) мышью. В качестве реакции на события вызывается событийная процедура, которая может изменять свойства объекта, вызывать его методы и т.д. В языке С++, как и во многих других языках программирования, предназначенных для написания приложений для MS Windows, используется событийно-управляемая модель программирования. Фактически это означает, что ни одно приложение не может функционировать само по себе, не взаимодействуя с другими приложениями и с операционной системой. Для примера возьмем самый простой случай, когда команда задана нажатием клавиши на клавиатуре. Она не может непосредственно воздействовать ни на одно из приложений, и MS Windows в данном случае выступает в роли посредника. Восприняв событие, связанное с нажатием клавиши, операционная система (ОС) решает, куда передать обработку этого события. Затем сообщение о нажатии клавиши посылается приложению. Приложение обрабатывает его, анализируя ввод с клавиатуры, и отображает сообщение, например, в активном текстовом поле.
Приложения, созданные с помощью C++, работают по тому же принципу, при этом выполняя как бы внутреннюю работу. Например, когда в приложении происходит щелчок мышью по кнопке, возникает событие – C++ перехватывает соответствующее сообщение MS Windows и вызывает событие Clickобъекта Button. Обратите внимание, что в программах, управляемых событиями, нет сплошного программного кода, который выполняется от начала до конца. Это значит, что после запуска программы у пользователя нет и четкого представления о конкретном пути выполнения алгоритма. То есть, можно в любое время щелкнуть по какой-либо кнопке в приложении или выполнить, например, ввод текста в поле, а можно при желании и прекратить обработку. Поэтому приложение вынуждено ждать, пока одно из этих событий не наступит, и только потом выполняет заданный программный код. Таким образом, для начала выполнения программного кода всегда необходимо событие – это одно из важнейших правил создания приложений в среде MS Windows. Откликом на события является вызов соответствующей событийной процедуры, которая была ранее создана программистом. Смысл такой процедуры – выполнение запрограммированных действий: изменение свойств объекта, вызов методов (функций), выполнение вычислений по заданному алгоритму с выводом результата в определенные места приложения и т.п., например, если пользователь нажимает кнопку, то в качестве отклика выполняется некоторая последовательность действий, которая определена в событийной процедуре в соответствии с заданным алгоритмом.
Кроме событийных процедур пользователь может создать общие процедуры обработки в соответствии с поставленной задачей (процедуры-методы пользователя) с определенной функциональностью. Событийная процедура – это законченный программный код функции С++, который реализует отдельный алгоритм. Для каждого события можно запрограммировать отклик, т. е. реакцию объекта на произошедшее событие, в результате будет выполнена некоторая последовательность действий – событийная процедура. В событийной процедуре может участвовать несколько объектов.
Таким образом, каждый раз, когда вы создаете программный код, который должен выполняться в ответ на событие, вы создаете событийную процедуру, которая вызывается автоматически при возникновении соответствующего события (например, нажатие кнопки). Общая процедура (процедура разработчика программного кода) – это также законченный программный код функции С++, который реализует отдельную функциональность алгоритма решаемой задачи. Однако, вызов такой функции происходит по имени этой функции из других функций, в том числе из событийной процедуры, а не как результат какого-либо события. Метод – это процедура, которая реализует действия, возможные с соответствующими объектам. В результате этих действий в объекте что-либо меняется.
C++ предоставляет пользователю большое количество встроенных функций, готовых к использованию. Эти функции являются неотъемлемой частью библиотеки классов, то есть методов классов Microsoft .NET Framework.
Средства процедурного программирования (процедуры-функции) – неотъемлемая часть любого языка программирования, которая является одной из основных частей парадигмы современного программирования. Но лишь при появлении языков, поддерживающих объектно-ориентированное программирование, были введены особые типы встроенных процедур, названные методами.
Методы «работают» как процедуры, но принадлежат конкретным объектам, так же, как и свойства. В программном коде обратиться к методу можно так же, как и к свойству – с использованием точечной нотации.
Обратите внимание, что любой программный код, написанный на языке C++ состоит из множества процедур (функций), т.е. весь программный код находится как бы внутри множества процедур–функций и событийных процедур. Проект – это разрабатываемое приложение – набор файлов, в которых хранится информация обо всех компонентах, используемых в данном приложении. Поскольку VC++ с одной стороны – это система объектно-ориентированного визуального событийного программирования, так как позволяет программировать алгоритмы на этом языке, а с другой стороны, эта система является средой проектирования, то результатом процессов программирования и проектирования является проект, который объединяет в себе программный код множества процедур и графический интерфейс. Поэтому, чтобы записать на диск или считать с диска какую – либо «программу», необходимо записывать или считывать проект, в котором находится весь программный код проекта. Решение – это разрабатываемое приложение, файлы которого содержат информацию об одном или нескольких проектах. Файл решения используется для управления несколькими взаимосвязанными проектами и имеет расширение .sln. Этапы разработки проекта WindowsForms – можно разделить на несколько основных шагов:
создание графического интерфейса проекта (интерфейса пользователя), который должен обеспечить взаимодействие проекта с пользователем, который решает задачу с помощью, созданного программного проекта – ввод/вывод данных и управление последовательностью вычислений; установка значений свойств объектов графического интерфейса; создание, редактирование и отладка программного кода проекта; сохранение проекта для дальнейшего использования.
|