Организация графического интерфейса задачи

Предлагаемый в главах 2-5 вариант программирования – классический подход последовательной реализации задачи от общего к частному (нисходящее программирование). Машинная обработка задачи производилась с помощью командного интерфейса. В процессе выполнения программы ввод информации из потока обеспечивали операторы (scanf,), предписывающие считывание вводимых данных. Вывод их, а также итоговых (промежуточных) результатов в поток осуществляли операторы printf, fprintf.

Массовое использование графических операционных систем (Windows) привело к необходимости внедрения графических интерфейсов в программирование прикладных задач. Это определило изменение методик организации ввода-вывода информации.

Основа графического интерфейса – окно.

Окно – условное изображение объекта-задачи (часть экрана, выделенная цветом), содержащее элементы взаимодействия с пользователем (кнопки и поля).

Представление объекта в виде окна определяет его как «черный ящик». Отображаемая на экране часть объекта реализует пути общения (интерфейс) с пользователем. Вычислительная часть задачи скрыта за интерфейсом. Окно содержит типовые компоненты:

управления объектом (командные кнопки, меню);

организации контроля и обмена данными (поля).

Разработаем окно реализации простейшей вычислительной задачи (пример 6.5): «Рассчитать площадь прямоугольника s (м2) при известных размерах а (м) и b (м)».

Анализ постановки задачи определяет:

наличие исходных данных – размеров а и b;

получение одного результата – площади s;

Управление выполнением задачи требует как минимум двух команд:

запуск на решение;

прекращение работы задачи.

Следовательно, графический вариант интерфейса формируется совокупностью трех диалоговых полей – подокон (двух ввода, одного вывода) и двух командных кнопок (ОК – расчет, Cancel – выход). Улучшение дружественности пользователю предписывает каждое из диалоговых полей обозначить (расшифровать) добавлением трех поясняющих полей. Один из вариантов графического интерфейса задачи имеет вид:

Диалоговое поле (однострочное, многострочное поле редактирования) – активное подокно реализации ввода-вывода численных значений в форме символьной строки.

Требования задачи определяют выбор конкретной модификации диалогового окна: однострочного или многострочного (список, раскрывающийся список, с вертикальной или горизонтальной прокруткой).

Многострочное поле – активное подокно ввода совокупности данных (элементов массива).

Размер поля выбирается пользователем в соответствии с размерностью массива. Каждый элемент массива располагается в отдельной строке.

В процессе ввода переход на следующую строку осуществляется нажатием клавиши <Enter>.

Отображаемая в поле часть массива изменяется стандартной полосой прокрутки (справа и/или снизу от поля).

Многострочный список – активное подокно вывода массива расчетных данных.

Каждый элемент располагается на отдельной строке.

Отображаемая в списке часть массива изменяется стандартной полосой прокрутки (справа от поля), возникающей, если размер массива больше вертикального размера поля списка.

Поясняющее поле (статический текст, метка) – пассивное подокно расшифровки назначения диалогового поля или командной кнопки соответствующей символьной строкой.

Поясняющие поля(поля комментариев) отличаются от активных полей именами (Text), не выделены цветом и чаще оформляются безрамочно.

Командная кнопка – активный элемент управления задачей.

Характерная особенность диалоговых полей и командных кнопок – отклик на события.

Событие – специфическое внешнее воздействие на конкретный активный компонент.

В качестве типовых событий используют: ввод значения, изменение содержимого поля, указание мышью, одинарное (двойное) нажатие левой клавиши ее, активизация клавишей Tab и т.п.

Реакция – отклик активизированного компонента на событие.

Типовые реакции – контроль вводимых символов, приобретение фокуса (предактивизация, добавление тени), расчет, выход из программы.

Постановка (алгоритм) задачи определяет события, на которые она реагирует в процессе выполнения созданной программы решения (ее реакцию).

Современные языки программирования, в частности С++, располагают обширными библиотеками различных компонентов (объектов) организации интерфейса (окна, кнопки, метки, поля редактирования и т.п.).

Для облегчения использования объекты в библиотеках сформированы в классы.

Класс – объединение по конкретным признакам компонентов, данных и методов их обработки.

Использование конкретного экземпляра класса предполагает перемещение копии уже существующего с присвоением ему уникального имени, то есть создание нового экземпляра.

Создание и использование новых экземпляров класса (графических компонентов интерфейса) возможно:

напрямую, вручную;

автоматизированно.

Ручной вариант создания нового экземпляра класса требует достаточных знаний правил формирования, структуры библиотек классов и навыков их поэлементного использования. Для начинающего программиста это трудоемкая операция малоэффективна.

Автоматизированный вариант создания нового экземпляра класса существенно упрощает и облегчает использование классов за счет специальных средств интегрированной среды разработки приложений (ИСРП). Интегрированная среда Borland C++ 5.02 позволяет организовать ввод-вывод информации вычислительной задачи в графической форме представления.

Внимание! ИСРП – обязательный компонент машинной обработки, поэтому методики работы с ней рассматриваются в соответствующей литературе.

Разработка оконного интерфейса задачи обеспечивает эффективный диалог пользователя с ней в процессе решения.

Этапы автоматизированного варианта создания окна:

создание шаблона главного окна;

определение типовых компонентов (полей ввода-вывода, управляющих элементов), размещаемых в окне;

размещение компонентов в требуемых точках окна-заготовки, корректировка их расположения и размеров;

идентификация компонентов.

Создание шаблона окна

Общая идея создания графического интерфейса – организация упрощенного диалога пользователя с задачей в процессе ее решения. Основной компонент – графическое окно с заголовком (названием), отражающим суть задачи.

 
 

Размеры окна определяются в зависимости от количества типовых компонентов, предполагаемых для ввода-вывода данных и управления задачей, и фактически задаются на этапе машинной обработки.

Определение типовых компонентов

Конкретная задача (ее алгоритм) определяет количество вводимых переменных.

Достоинство графического интерфейса – автоматическое отображение вводимых переменных на протяжении всего решения задачи.

Так, в задаче вычисления площади прямоугольника, исходные переменные – а, b. Для их ввода необходимы два диалоговых однострочных поля, дополненные двумя поясняющими.

 
 

Выводимые переменные – промежуточные и конечные результаты. Их количество определяется конкретной задачей и желанием пользователя.

В задаче вычисления площади прямоугольника достаточно одной выводимой переменной – искомого значения s. Для вывода необходимо однострочное диалоговое поле, дополненное поясняющим.

 
 

Выполнение задачи помимо выбора полей требует определения событий и управляющих элементов, обеспечивающих ее решение. Основные события – запуск на решение и прекращение работы. Они реализуются командными кнопками – «ОК» и «Cancel».

Размещение компонентов в площади окна

Расположение полей и кнопок обуславливается навыками пользователя и традициями. Например, размещение полей возможно в следующих вариантах:

построчно с предварительным пояснением;

 

построчно с последующим пояснением;

 
 

постолбцово с предварительным (последующим) пояснением;

 

сгруппировано по назначению (входные, выходные, промежуточные данные)

 
 

Размещение управляющих кнопок обусловлено расположением полей и желанием пользователя:

построчно под полями;

 

постолбцово справа от полей;

 
 

Внимание! На этапе программирования задачи пользователя интересуют только количество и имена активных полей. Фактическое создание окна, корректировка его размеров и месторасположения элементов производится на этапе машинного создания оконного интерфейса.

В рассматриваемом примере примем за основу построчное (простейшее) расположение полей в верхней части окна и кнопок под ними. Вариант шаблона представлен на рис. 6.4.

 
 

Рис. 6.4. Шаблон окна задачи о площади прямоугольника

Идентификация компонентов

Созданный шаблон интерфейса позволяет связать его с задачей. Операция выполняется связью обозначений полей ввода-вывода окна с соответствующими именами переменных программы. В результате все диалоговые поля окна получают уникальные имена.

Так в рассматриваемом примере поле 1 (ввод) предназначено для ввода переменной «а» и идентифицируется именем PoleA, поле 2 (ввод) предназначено для ввода переменной «b» и идентифицируется именем PoleВ, поле 3 (вывод) предназначено для вывода переменной «s» и идентифицируется именем PoleS.

Программная реализация задачи с использованием графического интерфейса представлена ниже.