stringtranslate.com

Отменить

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

Ожидания от отмены легко понять: она должна иметь предсказуемую функциональность и включать все «отменяемые» команды. [1] Обычно отмена доступна до тех пор, пока пользователь не отменит все выполненные операции. Но есть некоторые действия, которые не сохраняются в списке отмены, и поэтому их нельзя отменить. Например, файл сохранения нельзя отменить, но он ставится в очередь в списке, чтобы показать, что он был выполнен. Другое действие, которое обычно не сохраняется и, следовательно, не может быть отменено, — это прокрутка или выбор . [2]

Противоположностью отмены является повтор . Команда повтора отменяет отмену или переводит буфер в более новое состояние.

Общими компонентами функции отмены являются команды , которые были выполнены пользователем, буфер(ы) истории , в котором хранятся завершенные действия, менеджер отмены/повтора для управления буфером истории и пользовательский интерфейс для взаимодействия с пользователем. [3]

В большинстве приложений Microsoft Windows сочетание клавиш для команды отмены — Ctrl+Z или Alt+Backspace, а сочетание клавиш для повтора — Ctrl+Y или Ctrl + Shift +Z.

В большинстве приложений Apple Macintosh сочетание клавиш для команды отмены — Command -Z, а сочетание клавиш для повтора — Command - Shift -Z.

На всех платформах функции отмены/повтора также доступны через меню «Правка» .

История

Возможность отменить операцию на компьютере была изобретена несколько раз независимо в зависимости от того, как люди использовали компьютеры. [4]

Сообщается, что Система поиска и редактирования файлов , разработанная в 1968 году в Университете Брауна , является первой компьютерной системой, имеющей функцию «отмены». [5] [6]

К 1971 году Уоррен Тейтельман разработал Помощника программиста как часть BBN-LISP с функцией отмены действий. [7]

В 1974 году в текстовом редакторе Xerox PARC Bravo появилась команда «Отменить». [ 8] В исследовательском отчете 1976 года Лэнса А. Миллера и Джона К. Томаса из IBM «Поведенческие проблемы при использовании интерактивных систем» [9] отмечалось, что «это быть весьма полезным, позволяя пользователям «вернуть назад» по крайней мере непосредственно предыдущую команду (путем ввода специальной команды «отменить»)». [10] Программисты исследовательского центра Xerox PARC назначили сочетание клавиш Ctrl-Z для команды отмены, которая стала важной функцией текстовых редакторов и текстовых процессоров в эпоху персональных компьютеров . [11] В 1980 году Ларри Теслер из Xerox PARC начал работать в Apple Computer . Там он и Билл Аткинсон выступали за наличие команды отмены в качестве стандартной функции Apple Lisa . Аткинсон смог убедить отдельных разработчиков прикладного программного обеспечения Lisa включить один уровень отмены и повтора, но ему не удалось лоббировать несколько уровней. [ нужна цитата ] Когда Apple представила преемника Lisa, Macintosh , она оговорила, что все стандартные приложения должны включать команду «Отменить» в качестве первой команды в меню «Правка», [12] которая остается стандартом для macOS и Windows для этот день.

Многоуровневые команды отмены были введены в 1980-х годах и позволяли пользователям отменить ряд действий, а не только самое последнее. [11] EMACS и другие экранные редакторы с разделением времени использовали его до программного обеспечения для персональных компьютеров. CygnusEd был первым текстовым редактором Amiga с неограниченной функцией отмены/повтора. AtariWriter , текстовый редактор, представленный в 1982 году, имел функцию отмены. NewWord, еще одна программа обработки текста, выпущенная NewStar в 1984 году, имела команду восстановления данных. [11] В VisiWord от IBM также была команда восстановления.

Отменить и повторить модели

Модели отмены можно разделить на линейные и нелинейные. Нелинейную модель отмены можно подразделить на модель сценария, модель us&r, триадную модель и выборочную отмену. [1]

Некоторые общие свойства моделей:

Линейная отмена

Линейная отмена реализована с помощью стека (структура данных «последним пришел — первым вышел» (LIFO)) в котором хранится история всех выполненных команд. Когда новая команда выполняется, она добавляется на вершину стека. Таким образом, отменить и удалить из истории можно только последнюю выполненную команду. Отмену можно повторять до тех пор, пока история не пуста. [1]

Ограниченная линейная модель

Ограниченная линейная модель является расширением линейной модели отмены. Она удовлетворяет описанному выше свойству стабильного выполнения для линейной отмены, поскольку эта модель не сохраняет это свойство, если команда выполняется, когда список истории включает другие команды. Ограниченная линейная модель очищает список истории перед добавлением новой команды. Но доступны и другие ограничения. Например, размер списка истории может быть ограничен или при достижении определенного размера первая выполненная команда удаляется из списка. [1]

Нелинейная отмена

Основное различие между линейной отменой и нелинейной отменой заключается в возможности пользователя отменять выполненные команды в произвольном порядке. У них есть возможность отменить не самую последнюю команду, а выбрать команду из списка. [3] Для нелинейной модели существуют подклассы, реализующие эту модель.

Модель сценария

Модель сценария обрабатывает действия пользователя как редактирование сценария команд. Список истории выполненных команд интерпретируется «как сценарий, эффект отмены определяется таким же, как если бы отмененное действие вообще не происходило». [1] В результате отмены состояние должно быть таким, как если бы отмененная команда никогда не выполнялась. Недостатком этой модели является то, что пользователю необходимо знать связь между отмененной командой и текущим состоянием, чтобы избежать побочных эффектов. Одним из них может быть, например, дублирование. Другие проблемы заключаются в том, что если «последующие команды переделываются в другом состоянии, в котором они изначально выполнялись в интерфейсах прямого манипулирования, эта реинтерпретация исходного действия пользователя не всегда очевидна или четко определена». [1]

Модель US&R

Особенностью этой модели является возможность пропуска команды. Это означает, что повтор команды можно пропустить. Пропущенная команда помечается как пропущенная, но не удаляется. При выполнении новых команд список истории сохраняется, поэтому порядок выполнения команд можно воспроизвести. Порядок можно описать через дерево истории, которое представляет собой ориентированный граф, «поскольку можно продолжать повторять команды из другой ветки, создавая ссылку в графе». [1] Несмотря на то, что набор команд прост и понятен, сложную структуру с пропуском и связыванием ветвей сложно понять и запомнить, когда пользователь хочет отменить более одного шага. [1]

Триадная модель

Эта нелинейная модель отмены помимо отмены и повтора имеет возможность вращения. Он имеет ту же структуру данных, что и вышеупомянутые модели, со списком истории и отдельным списком повторов, который включает операции повтора. Операция поворота устанавливает перед собой последнюю команду списка повторов. С одной стороны, это означает, что следующую команду, которую нужно повторить, можно выбрать, поместив ее впереди. С другой стороны, вращение можно использовать, «чтобы выбрать место в списке повторов, куда следующая операция отмены поместит команду». [1] Таким образом, список повторов неупорядочен. «Чтобы отменить изолированную команду, пользователь должен отменить несколько шагов, повернуть список повторов, а затем повторить несколько шагов». [1] Для повтора список необходимо вращать до тех пор, пока нужная команда не окажется выше.

Выборочная отмена

Якубек и др. Предположим, что выборочная отмена — это функция, которую может предложить модель, но для выборочной отмены нет четкого определения. [3] Авторы выбрали функции, которые должна иметь модель, поддерживающая выборочную отмену. Должна быть возможность «отменить любое выполненное действие в буфере истории. Действия, независимые от отменяемого действия, следует оставить нетронутыми». [3] Точно так же для любой отмененной команды должно быть возможно повторение. Третья функция выборочной отмены заключается в том, что «ни одна команда не может быть автоматически удалена из буфера истории без прямого запроса пользователя». [3] Для выборочной отмены применяется то, что отмена и возврат выполняются вне любого контекста. Есть три основные проблемы. Во-первых, отмененные команды могут находиться вне исходного контекста. Из-за этого могут возникнуть мертвые ссылки, которые необходимо обрабатывать. Вторая проблема заключается в том, что измененные команды могут быть отменены, поэтому необходимо решить, какое состояние после отмены будет представлено. Третья проблема — отказ от проблем с командами. Выборочная отмена не имеет указателя в списках, поэтому это означает, что ни одна команда не должна быть исключена из стека. [3]

Прямая выборочная отмена

Прямая выборочная отмена — это расширение ограниченной линейной отмены с использованием дерева истории. Операция создает копию выбранной команды, выполняет ее и добавляет в список истории. Там определены две нелинейные операции: выборочная отмена и выборочный повтор, поэтому они более симметричны. [1]

Многопользовательское приложение

Когда несколько пользователей могут редактировать один и тот же документ одновременно, требуется многопользовательская отмена. Глобальная многопользовательская отмена отменяет последнее действие, выполненное с документом, независимо от того, кто выполнил редактирование. Локальная многопользовательская отмена отменяет только действия, выполненные локальным пользователем, что требует нелинейной реализации отмены.

Если команду «Отменить» можно использовать для возврата к нескольким изменениям, команда «Повторить» перемещается вперед по истории действий. Внесение нового редактирования обычно очищает список повторов. Если используется ветвящаяся модель повторного выполнения, новое редактирование разветвляет историю действий.

Количество предыдущих действий, которые можно отменить, зависит от программы, версии и возможностей оборудования или программного обеспечения. Например, размер стека отмены/повтора по умолчанию в Adobe Photoshop равен 20, но пользователь может изменить его. Другой пример: ранее [ когда? ] версии Microsoft Paint позволяли отменить только до трех изменений; версия, представленная в Windows 7, увеличила этот предел до 50.

Упрощенные функции отмены с одним редактированием иногда устраняют «повтор», рассматривая саму команду отмены как действие, которое можно отменить. Это известно как модель отмены переворота, поскольку пользователь может переключаться между двумя состояниями программы с помощью команды отмены. [13] Это была стандартная модель до широкого распространения многоуровневой отмены операций в начале 1990-х годов.

Отменить реализацию

Отмена может быть реализована с помощью различных шаблонов. Наиболее распространенными шаблонами являются шаблон команды и шаблон сувенира .

Шаблон команды

Шаблон команды — это шаблон проектирования программного обеспечения , который инкапсулирует информацию об операции в объекты команд. Это означает, что каждое действие сохраняется в объекте. Класс абстрактной команды реализует абстрактную операцию выполнения, поэтому каждый объект команды имеет операцию выполнения. Для отмены также должна быть невыполненная операция, отменяющая эффект выполненной команды, которые сохраняются в списке истории. Отмена и возврат реализованы таким образом, что список прогоняется вперед и назад при вызове команды выполнения или отмены выполнения. [14]

При одиночной отмене сохраняется только выполненная команда. В отличие от многоуровневой отмены, где сохраняется не только список истории с командами, но и количество уровней отмены, можно определить по максимальной длине списка. [14]

Сувенирный узор

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

В шаблоне Memento механизм отмены называется смотрителем. Он несет ответственность за сохранность сувениров, но никогда не меняет их содержание. Для отмены действия смотритель запрашивает память об отправителе, а затем применяет отмену. [14]

Большая часть механизма отмены может быть реализована независимо от конкретных приложений или классов команд. Сюда входит «управление списком истории, прокруткой истории, пунктами меню для отмены и повтора, а также обновлением пунктов меню в зависимости от названия следующей доступной команды». [1]

Каждый класс команд имеет метод do, который вызывается при выполнении команды. Метод undo реализует операцию, обратную методу do. Для реализации обратного существует несколько различных стратегий.

Смотрите также

Рекомендации

  1. ^ abcdefghijklmn Берлаге, Томас (1 сентября 1994 г.). «Механизм выборочной отмены для графических пользовательских интерфейсов на основе командных объектов». Транзакции ACM при взаимодействии компьютера и человека . 1 (3): 269–294. дои : 10.1145/196699.196721. ISSN  1073-0516. S2CID  11848679.
  2. ^ Майерс, Брэд А.; Косби, Дэвид С. (13 апреля 1996 г.). «Многоразовые иерархические командные объекты». Материалы конференции SIGCHI «Человеческий фактор в общих основаниях компьютерных систем» — CHI '96 . АКМ. стр. 260–267. дои : 10.1145/238386.238526. ISBN 0897917774. S2CID  17033810.
  3. ^ abcdefgh Якубек, Карел; Полак, Марек; Нечасский, Мартин; Голубова, Ирена (2014). «Операции отмены/повтора в сложных средах». Procedia Информатика . 32 : 561–570. дои : 10.1016/j.procs.2014.05.461 . ISSN  1877-0509.
  4. ^ Моран, Чуктрополис Веллинг (1 января 2013 г.). Интерактивное время (доктор философии). Ла-Хойя: Калифорнийский университет, Сан-Диего. ISBN 9781303194450. Архивировано из оригинала 28 апреля 2021 г. Проверено 7 июля 2016 г.
  5. ^ Барнет, Белинда (1 декабря 2014 г.). Машины памяти: эволюция гипертекста. Гимн Пресс. п. 108. ИСБН 9781783083442. Но самой популярной разработкой для начинающих пользователей FRESS была не возможность поддержки нескольких дисплеев и пользователей; это была функция «отмены действий», которой Ван Дам гордится больше всего (van Dam 2011). Компания FRESS стала пионером в использовании одноуровневой отмены операций как для обработки текста, так и для гипертекста. Каждое изменение файла сохранялось в теневой версии структуры данных, что позволяло выполнять как «автосохранение», так и отмену действий. Сотрудники и студенты Брауна сразу поняли важность и полезность этой функции (ван Дам, 1999).
  6. ^ Барнет, Белинда (1 января 2010 г.). «Создание пользовательского интерфейса документа: система редактирования гипертекста (HES) и система поиска и редактирования файлов (FRESS)». Ежеквартальный журнал цифровых гуманитарных наук . 4 (1). Архивировано из оригинала 1 мая 2021 г. Проверено 27 мая 2016 г.
  7. ^ Тейтельман, Уоррен (1 января 1972 г.). «Автоматическое программирование: Помощник программиста». Материалы осенней совместной компьютерной конференции, состоявшейся 5–7 декабря 1972 г., Часть II — AFIPS '72 (Осень, часть II) . Нью-Йорк, штат Нью-Йорк, США: ACM. стр. 917–921. дои : 10.1145/1480083.1480119. S2CID  1276566.
  8. ^ «Руководство Bravo в руководстве для непрограммистов Alto, стр. 52» (PDF) . Архивировано (PDF) из оригинала 5 мая 2015 г. Проверено 29 марта 2014 г.
  9. ^ Миллер, Лэнс А.; Томас, Джон К. (1 сентября 1977 г.). «Поведенческие проблемы при использовании интерактивных систем». Международный журнал человеко-машинных исследований . 9 (5): 509–536. дои : 10.1016/S0020-7373(77)80002-3. ISSN  0020-7373.
  10. ^ Миллер, Лэнс А.; Джон К. Томас младший (декабрь 1976 г.). «Поведенческие проблемы при использовании интерактивных систем». Архивировано из оригинала (PDF) 27 мая 2012 года . Проверено 21 мая 2011 г.
  11. ^ abc Бен Циммер (15 сентября 2009 г.). «Эпоха уничтожения». Газета "Нью-Йорк Таймс . Архивировано из оригинала 17 июня 2013 г. Проверено 2 июня 2013 г.
  12. ^ Apple Computer, Inc. (1984). "Пользовательский интерфейс". Внутри Macintosh, том I.
  13. ^ Роберта Манчини, Алан Дикс и Стефано Левиальди. 2006. «Размышления об отмене»
  14. ^ abc Шаблоны проектирования: элементы объектно-ориентированного программного обеспечения многократного использования . Гамма, Эрих. Ридинг, Массачусетс: Аддисон-Уэсли. 1995. ISBN 0201633612. ОСЛК  31171684.{{cite book}}: CS1 maint: others (link)

Внешние ссылки