Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ГОСЫ / ГОСБилеты.odt
Скачиваний:
139
Добавлен:
05.06.2015
Размер:
1.54 Mб
Скачать

2. Интерфейс. Пользовательский интерфейс. Классификация пользовательских интерфейсов.

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

Пользовательский интерфейс состоит из множества составляющих, таких как:

  • набор задач пользователя, которые он решает при помощи системы

  • используемая системой метафора (например, рабочий стол в MS Windows и т.п.)

  • элементы управления системой

  • навигация между блоками системы

  • визуальный (и не только) дизайн экранов программы.

Структура и классификация пользовательских интерфейсов

В дизайне ПИ можно условно выделить декоративную и активную составляющие. К первой относятся элементы, отвечающие за эстетическую привлекательность программного изделия. Активные элементы подразделяются на операционные и информационные образы моделей вычислений и управляющие средства ПИ, посредством которых пользователь управляет программой.

В настоящее время оформилось два принципиально различных подхода к организации ПИ. Первый подход состоит в предоставлении пользователю командного языка, в котором запуск программ оформлен в виде отдельных команд. Этот подход известен как интерфейс командной строки (Command Line Interface - CLI).

Альтернативный подход состоит в символическом изображении доступных действий в виде картинок – икон (icons) на экране и предоставлении пользователю возможности выбирать действия при помощи мыши или другого координатного устройства ввода. Этот подход известен как графический пользовательский интерфейс (Graphical User Interface - GUI). Один из подклассов GUI (двухмерный) принято обозначать аббревиатурой WIMP (Windows-Icons-Menus-Pointing device), что отражает задействованные интерактивные сущности - окна, пиктограммы, меню и позиционирующее устройство (обычно мышь).

Аргументы в пользу CLI

Удачно спроектированные командные языки обеспечивают: высокую скорость обработки, эффективность и экономию использования ресурсов системы. Важными преимуществом хороших командных языков по сравнению с GUI является их алгоритмическая полнота: в GUI пользователь ограничен теми возможностями, для которых разработчик программы нарисовал иконки или сочинил пункты в меню. Командные же языки могут использоваться для решения любых алгоритмизуемых задач, в том числе и таких, о которых разработчики языка никогда и не задумывались.

Аргументы в пользу GUI

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

Недостатки WIMP-интерфейсов

Помимо обозначенных достоинств, WIMP-интерфейсы принесли с собой и большие проблемы. Во-первых, чем более сложным является приложение, тем труднее осваивать интерфейс, причем эти трудности возрастают нелинейно. Взятые в отдельности интерфейсные особенности и инструменты могут быть вполне простыми, но, будучи в большом количестве интегрированы в одно приложение, они образуют новое качество сложности. Многие современные настольные приложения столь объемны, что пользователь, погрузившись однажды в их функциональность, начинает даже отказываться от новейших версий, продолжая использовать то малое подмножество возможностей, которое удалось изучить.

Во-вторых, пользователи проводят слишком много времени, манипулируя интерфейсом, а не работая с самим приложением.

В-третьих, WIMP GUI вместе с их 2D- интерфейсными элементами проектировались для работы с двухмерными же приложениями - такими, как обработка текстов, компоновка документов и электронные таблицы. Если же приложение является по своей сути трехмерным, то работа с ним с помощью 2D элементов управления становится не слишком естественной. Нынешние WIMP-интерфейсы для 3D-приложений обычно состоят из управляющих панелей с 2D-кнопками и слайдеров, окружающих 3D-мир, которые используются для управления 3D-курсором, для манипуляций с точкой зрения наблюдателя и для редактирования объектов. Понятно, что 3D-приложения, как правило, имеют много большую визуальную сложность, чем двухмерные, что еще более усиливает связанные с WIMP-интерфейсами проблемы.

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

Еще одно ограничение WIMP-интерфейсов в том, что они предназначены для одинокого пользователя настольной системы, который управляет объектами, не обладающими автономным поведением, реагирующими в основном на манипуляции с мышью. Соответственно имеется один, не разделяемый во времени полудуплексный канал взаимодействия; система откликается на каждое дискретное событие ввода, и эти события могут быть легко распознаны - они состоят из простых нажатий на клавиши и выбора с помощью мыши. Самый сложный ввод - последовательность позиций мыши, которая может представлять, например, путь закрашивающей кисти.

Сегодня развиваются такие новые классы интерфейсов, как SILK (речевой), биометрический (мимический) и семантический (общественный).

Начал получать распространение и новый вид пользовательского интерфейса – тактильный. Тактильные устройства, в отличие от других интерактивных устройств, способны как "чувствовать", так и передавать информацию. Эти устройства имеют общую особенность: они снабжены средством силовой обратной связи - таким, как PHANToM, которое получает информацию о положении и жесте, а возвращает величину приложенной в точке силы. Таким образом, пользователь может ощущать форму жесткого объекта, в том числе через несколько слоев различного сопротивления при надавливании на внешнюю поверхность (что полезно, например, в хирургических симуляторах).

3. Написать программу на языке С++, реализующую телефонный справочник. В справочнике содержится следующая информация о каждом абоненте: имя и телефон. Реализовать вывод всей информации из справочника, поиск телефона по имени, поиск имени по телефону.

#include <iostream.h>

#include <conio.h>

#include <string.h>

#include <stdio.h>

void main()

{

struct Teleph

{

char FIO[20];

char Nomer[20];

} spisok [10];

int N,i,K;

char Str[20];

do

{

cout<<"\n 1. Cteate spravochnik";

cout<<"\n 2. Print spravochnik";

cout<<"\n 3. Find po FIO";

cout<<"\n 4. Find po Telephone";

cout<<"\n 5. Exit";

cout<<"\n Vvedite N ==";

cin>>N;

if(N==1)

{

cout<<"\n Vvedite kolichestvo ==";

cin>>K;

for (i=1;i<=K;i++)

{

cout<<"\n Vvedite FIO ==";

cin>>spisok[i].FIO;

cout<<"\n Vvedite Telephone ==";

cin>>spisok[i].Nomer;

}

}

if(N==2)

{

cout<<"\n Print...";

for(i=1;i<=K;i++)

{

cout<<"\n FIO = "<<spisok[i].FIO;

cout<<" Telephone = "<<spisok[i].Nomer;

}

}

if(N==3)

{

cout<<"\n Vvedite FIO == ";

cin>>Str;

for(i=1;i<=K;i++)

if (strcmp(spisok[i].FIO,Str)==0)

cout<<"\n Telephone = > "<<spisok[i].Nomer;

cout<<"\n";

}

if(N==4)

{

cout<<"\n Vvedite TELEPHONE == ";

cin>>Str;

for(i=1;i<=K;i++)

if(strcmp(spisok[i].Nomer,Str)==0)

cout<<"\n FIO => "<<spisok[i].FIO;

cout<<"\n";

}

} while (N!=5);

}

Соседние файлы в папке ГОСЫ