Em computação, desfazer (do inglês undo) é uma comando e função do programa para reverter a última alteração que foi feita a algum objeto. Tais objetos podem ser, por exemplo, um texto, uma formatação de texto, uma imagem, uma multimídia digital, um sistema de arquivos. As alterações podem ser feitas pelo usuário ou pelo programa.

Refazer (do inglês redo) é um comando contrária a desfazer, isto é, para reverter alteração que foi feita por comando desfazer.

Ambas as funções são mais utilizadas nos seguintes tipos de programas:

História

editar

"Questões Comportamentais na Utilização de Sistemas Interativos", um relatório de pesquisa (1976) por Lance A. Miller e John C. Thomas do IBM, notou que "Seria bastante útil para permitir aos usuários retomar, pelo menos, o comando imediatamente anterior (através da emissão 'desfazer', algum comando especial)." [1]

Os programadores no centro de pesquisa Xerox PARC atribuídos a tecla de atalho Ctrl-Z para comando Desfazer, que tornou-se um característico crucial em editores e processadores de texto na época de computador pessoal.[2]

Nos anos 80, os comandos de desfazer multiníveis foram apresentados que permitiram aos usuários reverter umas seqüências de ações, não apenas a mais recente ação.[2]

Interface do usuário

editar

Para ambos os desfazer e refazer comandos existe um conjunto de elementos de interface gráfica como os botões na barra de ferramentas e um grupo dos itens na barra de menu ou menu de contexto. No entanto, ambas os comandos foram usados em alguns programas velhos com interface de texto, por exemplo, editores de texto.

Teclas de atalho

editar

As teclas de atalho para acesso as comandos de desfazer e refazer:

  • No GNOME (Linux), o usuário pode usar as teclas de atalho da aplicação como Ctrl+Z para desfazer.
  • No OpenOffice.org (multiplataforma), o usuário pressiona Ctrl+Z para desfazer e Сtrl+Y para refazer.
  • Na maioria das Apple Macintosh aplicações, o usuário pressiona Command-Z para desfazer e Command-Shift-Z para refazer.
  • Na maioria das Windows aplicações, o usuário pressiona Ctrl+Z ou Alt+Backspace para desfazer e Ctrl+Y or Ctrl+Shift+Z para refazer.

Modelos de Desfazer e Refazer

editar

Os modelos de funções desfazer e refazer podem ser classificados como

  • multinível e único nível
  • linear e não-linear
  • monousuário e multiusuário

Multinível e único nível

editar

O número de ações anteriores que podem ser revertidas varia de acordo com o programa. Por exemplo, o tamanho da pilha de comandos é as dezenas no Photoshop e é três no MS Paint.

Refazer reverte o que foi feito pelo comando desfazer. A forma mais simples de refazer é "flip" em que o uso de desfazer depois anulação refaz uma ação desfeita. Nesse caso, o programa vai para a frente e para trás entre dois estados quando o botão desfazer for pressionado.[3]

Linear e não-linear

editar

Linear desfazer requer que o usuário reverteu a última ação antes de desfazer as anteriores. Com não-linear desfazer, a ação a ser revertido pode ser livremente escolhida na lista histórica de ações.

Monousuário e multiusuário

editar
 Ver artigo principal: Sistema de controle de versão

O modelo monousuário é usado mais comumente quando os programas não suportam as mudanças a partir de múltiplos usuários. Quando vários usuários podem editar o mesmo documento simultaneamente o modelo multiusuário de desfazer é necessário. No model multiusuário global, desfazer reverte a última ação feita no documento independentemente de quem realizou a edição. Nesse caso, o desfazer local só reverte as ações feitas pelo usuário local.

Implementação

editar

Alguns padrões de desenho de software podem ser usados para suportar funções Desfazer e Refazer:

  • Command - suporta lista histórica de comandos executados e multinível Desfazer/Refazer
  • Memento - permite armazenar o estado interno de um objeto em um determinado momento, para que seja possível retorná-lo a este estado.

Ver também

editar
  • Lixeira - um mecanismo para armazenar objetos excluídos
  • Transação - uma sequência de operações num SGDB que podem ser revertidos

Referências

editar
  1. Miller, Lance A.; John C. Thomas Jr. (Dezembro de 1976). «Behavioral Issues in the Use of Interactive Systems» (em inglês). Consultado em 18 de novembro de 2011 
  2. a b Ben Zimmer (15 de Setembro de 2009). «"The Age of Undoing". New York Times» (em inglês). Consultado em 18 de novembro de 2011 
  3. Mancini, Roberta; Alan Dix; Stefano Levialdi (2006). «Reflections on Undo» (PDF) (em inglês). Consultado em 18 de novembro de 2011 

Ligações externas

editar