Файл: Разработка программ с графическим интерфейсом на С++ (Особенности объектно-ориентированной парадигмы программирования).pdf
Добавлен: 04.04.2023
Просмотров: 241
Скачиваний: 4
Для дальнейшего изучения и создания некорпоративного приложения была выбрана среда разработки Microsoft Visual Studio 2010 с инструментарием WinForms.
Visual Studio и Windows Forms
В этом разделе будут рассматриваться методы и различные типы интерфейсов, которые Microsoft Visual Studio предоставляет в IDE. Visual Studio может предварительно сгенерировать код, чтобы лучше понять, как пользовательский интерфейс связан с функциональностью программы. Та же функциональность может быть достигнута различными сложными методами и множеством доступных простых методов. Связывание панели меню или инструментов, которые полностью помещены в форму с кодом, очень важно для успешного графического интерфейса.
Большая часть работы с пользовательским интерфейсом включает понимание кода, который объединяет все элементы вместе. VS предварительно генерирует этот код, упрощая работу программиста. После того, как весь дизайн и функциональность будут завершены, автоматически будет создан файл с расширением *.exe для запуска программы внутри и вне VS.
Прикладное программирование в основном состоит из объектов, называемых элементами управления. Эти элементы управления используются пользователями разрабатываемого приложения для взаимодействия с компьютером. Одна из задач разработчика приложения состоит в выборе необходимых объектов, добавления их в приложение и последующей настройки их поведения [4.].
Windows Forms – это средство для работы с окнами, а не полноценный фреймворк для создания приложений, такой как MFC, который предоставляет больше возможностей, чем Windows Forms, для создания автономных приложений на основе документов [4.]. Например, для создания текстового редактора при помощи MFC необходимо выбрать правильные параметры и написать всего несколько строк кода. Приложение будет включать в себя панель состояния, панель инструментов (плавающая), все реализованные пункты меню «Файл», «Редактировать» и «Справка», в том числе список использованных файлов, справку по печати и контекстную справку. Однако вместо создания приложений на основе документов программисты стремятся создавать больше приложений на основе HTML или приложений, которые взаимодействуют с бизнес-объектами или серверами баз данных. Именно для этого используются .NET Framework и Windows Forms.
Это не значит, что Windows Forms нельзя использовать для создания хороших приложений на основе документов. Фактически, поскольку Windows Forms – это всего лишь небольшая часть из более чем 2000 классов, представленных в .NET Framework, вполне вероятно, что, если что-то не представлено в Windows Forms, оно предоставляется где-то еще в .NET Framework. Например, сама Windows Forms не предоставляет никакой поддержки сериализации, но остальная часть библиотеки классов .NET Framework предоставляет несколько способов сериализации объектов [1.].
В этом главное отличие MFC от Windows Forms. MFC задумывался как замена базового Win32 API, но это не помешало росту Win32 API. Фактически, поскольку MFC рос за эти годы, функциональность базовой ОС увеличилась как минимум в десять раз. Windows Forms, с другой стороны, предназначен для замены только оконной части Win32 [4.]. Конечно, Framework никогда не заменит весь Win32 API, но так как большинство новых функциональных возможностей, добавленных в Windows в обозримом будущем, будут добавлены в Framework, это выход. Таким образом, хотя Windows Forms не может делать все, что делает MFC, он предоставляет впечатляющий набор функций, которые могут упростить жизнь разработчикам приложений на стороне клиента, включая вещи, которые MFC вообще не делает.
В приложении Windows Forms используются две широкие категории объектов: формы и элементы управления. Объекты, используемые в приложении Windows Forms, хранятся в библиотеках, также называемых сборками. Как и обычные библиотеки, эти сборки имеют расширение .dll (что означает динамически подключаемую библиотеку). Чтобы использовать один из этих объектов, нужно знать имя сборки, в которой он хранится. Затем необходимо добавить ссылку на эту сборку в создаваемом приложении.
Типичное приложение Windows Forms имеет как минимум одну форму. Форма – это просто окно, которое является единицей пользовательского интерфейса, которая обнаруживаются у Microsoft начиная с Windows 1.0 [6.]. Единственная форма в приложении Windows Forms обычно является основной формой, что означает, что она является либо родительской, либо владельцем любой другой формы, которая может отображаться в течение жизненного цикла приложения. Здесь отображается главное меню, а также панель инструментов, панель состояния и т.д. Когда основная форма исчезает, приложение закрывается.
Основной формой приложения может быть простое окно с сообщением, диалоговое окно, окно SDI, окно MDI или что-то более сложное, например, в таких приложениях, как Visual Studio .NET, с несколькими дочерними окнами, окнами инструментов и плавающими панелями инструментов.
После того как создана очередная форма приложения, ее нужно подготовить к отображению на экране. Об этом позаботится класс Application, спроектированный для запуска приложения, обработки его сообщений, а также остановки приложения. Класс Application предоставляет перегруженный метод Run(), который можно использовать для запуска программы. Одна из версий этого метода принимает форму в качестве аргумента. Эта форма должна быть первой или основной формой приложения; она будет отображаться при запуске приложения.
Visual Studio имеет большой выбор опций для создания графического интерфейса. Как показано на рисунке 1, в зависимости от выбранного языка, существуют типы различных проектов, которые можно выбрать, такие как приложение MFC, консольное приложение Windows и приложение Windows Forms. Каждое из этих различных типов приложений может использоваться для общего интерфейса. Тем не менее, у каждого из них есть свои собственные специальные атрибуты, независимо от того, отличаются ли они от кода, который генерируют, или от типа методов, которые они использовали для создания реальной формы.
Если выбрано приложение Windows Forms, то на экране появится пустая форма для приложения Windows, которая послужит основой для графического интерфейса, как показано на рисунке 2. Все типы графического интерфейса пользователя состоят из основных инструментов формы: кнопки, текстовые поля, метки, флажки и т.д. [3.] Более интуитивно понятные элементы управления, которые составляют основу GUI, непосредственным образом соотносится с функциональностью приложения [8.]. В то же время большое количество элементов управления может снизить уровень удобства пользователя в реальном графическом интерфейсе.
Ключевая функция, которую Visual Studio реализует в своей IDE, – это метод перетаскивания. Этот метод позволяет пользователю выбрать любой инструмент, который должен быть частью окончательного графического интерфейса пользователя, и перетащить его в форму окна. С помощью этого метода предварительно генерируется код, который работает параллельно с инструментами. Это устраняет сложную и трудоемкую задачу сопоставления кода с каждым инструментом [9.]. Поскольку в графическом интерфейсе может быть огромное количество различных и похожих элементов управления, при использовании Visual Studio используется простое соглашение об именах. Каждый инструмент, помещенный в форму, имеет окно настроек, которое расшифровывает то, как называется инструмент и что происходит при нажатии на этот инструмент, а также многие другие параметры макета. Это позволяет пользователю организовать GUI более эффективно, чем иметь инструменты, которые невозможно декодировать в коде [1.,4.]. Код за графическим интерфейсом очень важен, так как он сообщает приложению о функциональности программы. Как уже указывалось ранее, код предварительно генерируется в формате, понятном даже начинающему программисту. Двойной щелчок на любом инструменте в графическом интерфейсе приведет к сгенерированному коду, который вызовет функцию. На рисунке 3 приведена такая функция – она обрабатывает нажатие кнопки button1.
Рисунок 1 – Различные типы приложений при создании проекта
Рисунок 2 – Пустая форма, генерируемая при создании проекта
Рисунок 3 – Сгенерированная функция обработки нажатия кнопки
Этот раздел кода обрабатывает важную часть интерфейса; он напрямую соединяет пользовательский интерфейс с функциональностью программы. Эта функция обрабатывает то, что происходит, когда что-то нажимается в форме. В данном конкретном случае (рисунок 3) показана функция, на которую будет ссылаться после нажатия первой добавленной на форму кнопки. Все дальнейшие действия, которые пользователь хочет осуществить после нажатия кнопки, будут помещены в эту функцию. Visual Studio поддерживает возможность создания различных диалоговых окон из формы или другого диалогового окна, возможность производить вычисления и создавать различные формы, сохраняя при этом действительную производительность графического интерфейса.
Творческие способности поддерживаются в Visual Studio на самом высоком уровне. При создании сложного графического интерфейса простота является ключевым понятием при рассмотрении дизайна. Вместо того, чтобы иметь несколько кнопок и методов непосредственно в форме графического интерфейса, лучше создать панель меню, чтобы иметь несколько параметров и меньше беспорядка. На рисунке 4 показано, как это можно реализовать. Для каждого пункта меню существует пункт меню, который переходит в раскрывающуюся вкладку. Эти опции меню доступны в интерфейсе, и к каждой из них привязан идентификатор. Чтобы получить интерактивную часть с опциями, обработчик событий должен быть связан с определенным классом. Затем на этот обработчик можно ссылаться всякий раз, когда он будет вызван при запуске программы. Этот тип интерфейса широко используется в мире GUI [6.].
Рисунок 4 – Вид панели меню
Visual Studio – это IDE с весьма отличительной особенностью: она не только предварительно генерирует функции, которые соответствуют щелчкам мыши по элементам в интерфейсе, но также генерирует переменные, необходимые для программы. Структура программы организована таким образом, что ссылки на переменные в форме осуществляются путем указания на форму и получения доступа к переменным. Чтобы сделать это, пользователь должен будет ссылаться на указатель на форму в форме. Этот процесс кажется сложным, но он просто выполняется с помощью оператора this, за которым следует знак ->. Это действие позволяет получить доступ к таким элементам формы, как объекты и переменные. На рисунке 5 показано, как код ссылается на переменные в форме.
Помимо привлекательной графики пользовательский интерфейс должен иметь определенное предназначение. Так, например, обработка текста, считанного из текстовых полей, может осуществляться в соответствии с выбранным флажком (при их наличии). На рисунке 6 показаны несколько различных окончательных форм графического интерфейса, которые были созданы в Visual Studio.
Рисунок 5 – Отображение ссылок на переменные в коде формы
Логика всего интерфейса идет рука об руку с тем, что появляется на нем. Операторы if и while можно использовать для улучшения общей производительности. Например, может быть несколько операторов if, которые будут отключать текстовые поля в зависимости от переключателей или циклов while, которые могут работать, предоставляя пользователю время на цикл. Если приложение включает в себя выпадающие меню, они могут напрямую соотноситься с кодом и повышать удобство для пользователя, сводя к минимуму количество действий, которые пользователь должен выполнить, чтобы повысить удобство использования. Функциональность приложения диктует пользовательский интерфейс, и как только это будет принято, интерактивность должна быть улучшена [7.].
Рисунок 6 – Различные GUI, созданные в Visual Studio
Разработка программы с графическим интерфейсом на C++
В этом разделе выполняется программная реализация приложения на языке программирования C++. Для написания используется IDE Microsoft Visual Studio 2010 с интерфейсом программирования приложений Windows Forms. Для построения графиков используется элемент управления Microsoft Chart для Microsoft.NET Framework 4.0 [10.].
Разрабатываемое приложение должно позволять по нажатию кнопки на графическом интерфейсе программы произвести поиск всех слов в заданном пользователем тексте, которые содержат только три согласных буквы. Текст, написанный на русском языке, задается пользователем с помощью графического интерфейса. Все найденные слова выводятся пользователю также с помощью графического интерфейса программы. Знание основ объектно-ориентированного программирования позволяет произвести поиск слов в тексте, используя собственный класс.
Реализация программного средства начинается с создания формы Form1 и добавления на нее двух элементов richTextBox1 и richTextBox2 (текстовые поля для ввода текста и вывода найденных слов соответственно), трех элементов label1, label2, label3 (метки для подписи текстовых полей и текста задания), а также элемента button1 (кнопка, по нажатию которой осуществляется выполнение задания). Настройка и внешний вид элементов формы осуществляется при помощи мыши. Вид формы приведен на рисунке 7.