Читаем Программирование онлайн бесплатно
iostream из стандартной библиотеки С++ (см. главы 10-11). Если же результаты необходимо вывести в графическом виде, можно использовать графическую библиотеку (см. главы 12–15), не изменяя своему стилю программирования.
Многие люди считают использование графического пользовательского интерфейса сущностью современного программирования, а взаимодействие с объектами на экране — его основной целью. Мы с этим не согласны: графический пользовательский интерфейс — это разновидность ввода-вывода, а отделение основной логики приложения от системы ввода-вывода является одним из основных принципов разработки программного обеспечения. При любой возможности мы предпочитаем провести четкую границу между основной логикой программы и той ее частью, которая осуществляет ввод и вывод. Такое отделение позволяет изменять способ взаимодействия с пользователем, переносить программу в другие операционные системы и, что еще боле важно, размышлять о логике программы и способах ее взаимодействия с пользователем независимо друг от друга.
Тем не менее графический пользовательский интерфейс важен и интересен в разных аспектах. В данной главе исследуются как способы интегрирования графических элементов в наши приложения, так и способы защиты основных принципов создания интерфейса от влияния субъективных вкусов.
Зачем мы предусмотрели кнопку Next, которая использовалась для управления графическими примерами в главах 12–15? В этих примерах фигуры рисовались после нажатия клавиши. Очевидно, что это простая форма программирования графического пользовательского интерфейса. Фактически она настолько проста, что некоторые люди могут сказать, что это ненастоящий графический пользовательский интерфейс. Однако посмотрим, как это было сделано, поскольку это приведет нас прямо к тому виду программирования, которое все признали как программирование графического пользовательского интерфейса.
Наш код в главах 12–15 был устроен примерно так:
// создаем объекты и/или манипулируем ими,
// изображаем их в объекте win класса Window
win.wait_for_button();
// создаем объекты и/или манипулируем ими,
// изображаем их в объекте win класса Window
win.wait_for_button();
// создаем объекты и/или манипулируем ими,
// изображаем их в объекте win класса Window
win.wait_for_button();
Каждый раз, достигая вызова функции wait_for_button(), мы могли видеть наши объекты на экране, пока не щелкали на кнопке, чтобы получить результаты работы другой части программы. С точки зрения программной логики этот код ничем не отличается от программы, записывающей строки текста на экране (в окне консоли), останавливающейся и ожидающей ввода данных с клавиатуры. Рассмотрим пример.
// определяем переменные и/или вычисляем значения, вырабатываем
// результаты
cin >> var; // ожидаем ввода




