Jump to content

Отменить

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

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

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

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

В большинстве графических приложений для большинства основных операционных систем (таких как Microsoft Windows , Linux и BSD ) сочетание клавиш для команды отмены — Ctrl+Z или Alt+Backspace, а сочетание клавиш для повтора — Ctrl+Y или Ctrl. + Шифт +З. В большинстве приложений macOS сочетание клавиш для команды отмены — 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]

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

  • свойство стабильного выполнения: состояние представлено в виде упорядоченного списка команд. Это означает, что команда «всегда отменяется в том состоянии, которое было достигнуто после первоначального выполнения». [3]
  • ослабленное стабильное выполнение: это означает, что при выполнении отмены все команды, которые зависят от отмененной команды, отменяются в зависимости от этой команды.
  • Свойство стабильного результата: это свойство имеет то же значение, что и свойство стабильного выполнения, за исключением списка. Упорядоченный список команд включает в себя то, что они выполнялись вместо только команд.
  • коммутативный: это означает, что состояние, достигнутое после отмены и повтора двух разных команд, одинаково, когда они выполняются в обратном порядке.
  • минималистическое свойство отмены: оно описывает, что «операция отмены команды C отменяет только команду C и все команды младше C, которые зависят от C». [3]

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

[ редактировать ]

Линейная отмена реализована с помощью стека (структура данных «последним пришел — первым вышел» (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]
  • частичная контрольная точка : это наиболее используемая стратегия. Измененное состояние приложения сохраняется, и при отмене часть состояния возвращается к прямому значению.
  • обратная функция: обратная функция не требует сохранения информации о состоянии. «Например, перемещение можно обратить вспять, переместив объект назад на относительную величину». [1] Для выборочной отмены недостаточно информации для сохранения состояния.

См. также

[ редактировать ]
  1. ^ Jump up to: а б с д и ж г час я дж к л м н Берлаге, Томас (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. ^ Jump up to: а б с д и ж г час Якубец, Карел; поляк, Марек; Некаски, Мартин; Голубова, Ирена (2014). «Операции отмены/повтора в сложных средах» . Труды по информатике . 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. ^ Барнет, Белинда (01 января 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 in 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. ^ Jump up to: а б с Бен Циммер (15 сентября 2009 г.). «Эпоха уничтожения» . Нью-Йорк Таймс . Архивировано из оригинала 17 июня 2013 г. Проверено 2 июня 2013 г.
  12. ^ Apple Computer, Inc. (1984). «Пользовательский интерфейс». Внутри Macintosh, том I.
  13. ^ Роберта Манчини, Алан Дикс и Стефано Левиальди. 2006. «Размышления об отмене»
  14. ^ Jump up to: а б с Эрих Гамма; Ричард Хелм; Ральф Джонсон; Джон Влиссидес (1995). Шаблоны проектирования . Ридинг, Массачусетс: Аддисон-Уэсли. ISBN  0201633612 . ОСЛК   31171684 .
[ редактировать ]
  • Эпоха отмены - статья о лингвистической истории отмены в журнале The New York Times.
  • Каскадное управление отменой действий - документ, посвященный тому, что такое каскадная отмена и как она может быть представлена ​​пользователям.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: ac7d7b28f6e34a6febca5d00cff92db7__1721993340
URL1:https://arc.ask3.ru/arc/aa/ac/b7/ac7d7b28f6e34a6febca5d00cff92db7.html
Заголовок, (Title) документа по адресу, URL1:
Undo - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)