अनडू (पूर्ववत): Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 2: Line 2:
अनडू इंटरेक्शन तकनीक है जिसे कई कंप्यूटर प्रोग्राम में स्थापित किया जाता है। यह प्रपत्र में किए गए अंतिम परिवर्तन को मिटा देता है, और  इसे पुरानी स्थिति में पुनः लाता है। कुछ और उन्नत प्रोग्रामों में, जैसे कि [[ग्राफिक्स सॉफ्टवेयर]], अनडू करें संपादित की जा रही फ़ाइल पर की गई अंतिम कमांड को नहीं लेता है। अनडू करने की संभावना के साथ, उपयोगकर्ता त्रुटि के डर के बिना अन्वेषण और कार्य कर सकते हैं, क्योंकि उन्हें सरलता से अनडू किया जा सकता है।
अनडू इंटरेक्शन तकनीक है जिसे कई कंप्यूटर प्रोग्राम में स्थापित किया जाता है। यह प्रपत्र में किए गए अंतिम परिवर्तन को मिटा देता है, और  इसे पुरानी स्थिति में पुनः लाता है। कुछ और उन्नत प्रोग्रामों में, जैसे कि [[ग्राफिक्स सॉफ्टवेयर]], अनडू करें संपादित की जा रही फ़ाइल पर की गई अंतिम कमांड को नहीं लेता है। अनडू करने की संभावना के साथ, उपयोगकर्ता त्रुटि के डर के बिना अन्वेषण और कार्य कर सकते हैं, क्योंकि उन्हें सरलता से अनडू किया जा सकता है।


अनडू करने की अपेक्षाओं को समझना सरल है: पूर्वानुमेय कार्यक्षमता के लिए, और सभी अनडू आदेशों को सम्मलित करने के लिए <ref name=":0">{{Cite journal|last=Berlage|first=Thomas|date=1994-09-01|title=कमांड ऑब्जेक्ट्स के आधार पर ग्राफिकल यूजर इंटरफेस के लिए एक चयनात्मक पूर्ववत तंत्र|journal=ACM Transactions on Computer-Human Interaction|volume=1|issue=3|pages=269–294|doi=10.1145/196699.196721|s2cid=11848679|issn=1073-0516}}</ref> सामान्यतः अनडू तब तक उपलब्ध होता है जब तक कि उपयोगकर्ता सभी निष्पादित कार्यों को अनडू नहीं कर देता है। लेकिन कुछ क्रियाएं ऐसी हैं जो अनडू सूची में संग्रहीत नहीं होती हैं, और इस प्रकार उन्हें अनडू नहीं किया जा सकता है। उदाहरण के लिए, फ़ाइल को सहेजना अनडू नहीं है, लेकिन सूची में कतारबद्ध है, यह दिखाने के लिए कि इसे निष्पादित किया गया था। स्क्रॉलिंग या चयन क्रिया जो सामान्यतः संग्रहीत नहीं होती है, और इस प्रकार अनडू नहीं होती है।<ref>{{Cite book|last1=Myers|first1=Brad A.|last2=Kosbie|first2=David S.|date=1996-04-13|title=पुन: प्रयोज्य पदानुक्रमित कमांड ऑब्जेक्ट|publisher=ACM|pages=[https://archive.org/details/commongroundchi900chi9/page/260 260–267]|doi=10.1145/238386.238526|isbn=0897917774|s2cid=17033810|url=https://archive.org/details/commongroundchi900chi9/page/260}}</ref>
अनडू करने की अपेक्षाओं को समझना सरल है: पूर्वानुमेय कार्यक्षमता के लिए, और सभी अनडू कमांडों को सम्मलित करने के लिए <ref name=":0">{{Cite journal|last=Berlage|first=Thomas|date=1994-09-01|title=कमांड ऑब्जेक्ट्स के आधार पर ग्राफिकल यूजर इंटरफेस के लिए एक चयनात्मक पूर्ववत तंत्र|journal=ACM Transactions on Computer-Human Interaction|volume=1|issue=3|pages=269–294|doi=10.1145/196699.196721|s2cid=11848679|issn=1073-0516}}</ref> सामान्यतः अनडू तब तक उपलब्ध होता है जब तक कि उपयोगकर्ता सभी निष्पादित कार्यों को अनडू नहीं कर देता है। लेकिन कुछ क्रियाएं ऐसी हैं जो अनडू सूची में संग्रहीत नहीं होती हैं, और इस प्रकार उन्हें अनडू नहीं किया जा सकता है। उदाहरण के लिए, फ़ाइल को सहेजना अनडू नहीं है, लेकिन सूची में कतारबद्ध है, यह दिखाने के लिए कि इसे निष्पादित किया गया था। स्क्रॉलिंग या चयन क्रिया जो सामान्यतः संग्रहीत नहीं होती है, और इस प्रकार अनडू नहीं होती है।<ref>{{Cite book|last1=Myers|first1=Brad A.|last2=Kosbie|first2=David S.|date=1996-04-13|title=पुन: प्रयोज्य पदानुक्रमित कमांड ऑब्जेक्ट|publisher=ACM|pages=[https://archive.org/details/commongroundchi900chi9/page/260 260–267]|doi=10.1145/238386.238526|isbn=0897917774|s2cid=17033810|url=https://archive.org/details/commongroundchi900chi9/page/260}}</ref>
अनडू का विपरीत रिडू होता है। रीडो कमांड अनडू के विपरीत होता है ये बफर को अग्रिम स्थिति में आगे बढ़ाता है।
अनडू का विपरीत रिडू होता है। रीडो कमांड अनडू के विपरीत होता है ये बफर को अग्रिम स्थिति में आगे बढ़ाता है।


Line 15: Line 15:
[[ ब्राउन विश्वविद्यालय ]] में 1968 में प्रारम्भ हुई [[ फ़ाइल पुनर्प्राप्ति और संपादन प्रणाली |फ़ाइल पुनर्प्राप्ति और संपादन प्रणाली]] के बारे में कहा जाता है कि यह पहली कंप्यूटर-आधारित प्रणाली है, जिसमें अनडू फीचर है।<ref>{{Cite book|url=https://books.google.com/books?id=N1qWBQAAQBAJ|title=Memory Machines: The Evolution of Hypertext|last=Barnet|first=Belinda|date=2014-12-01|quote=But the most popular development for novice users in FRESS was not its capacity to accommodate multiple displays and users; it was the 'undo' feature – the feature of which van Dam is most proud (van Dam 2011). FRESS pioneered a single-level undo for both word processing and hypertext. Every edit to a file was saved in a shadow version of the data structure, which allowed for both an 'autosave' and an undo. Brown staff and students understood immediately the importance and usefulness of this feature (van Dam 1999).|publisher=Anthem Press|isbn=9781783083442|page=108|language=en}}</ref><ref name="barnet">{{Cite journal|last=Barnet|first=Belinda|date=2010-01-01|title=Crafting the User-Centered Document Interface: The Hypertext Editing System (HES) and the File Retrieval and Editing System (FRESS)|journal=Digital Humanities Quarterly|url=http://www.digitalhumanities.org/dhq/vol/4/1/000081/000081.html|volume=4|issue=1}}</ref>
[[ ब्राउन विश्वविद्यालय ]] में 1968 में प्रारम्भ हुई [[ फ़ाइल पुनर्प्राप्ति और संपादन प्रणाली |फ़ाइल पुनर्प्राप्ति और संपादन प्रणाली]] के बारे में कहा जाता है कि यह पहली कंप्यूटर-आधारित प्रणाली है, जिसमें अनडू फीचर है।<ref>{{Cite book|url=https://books.google.com/books?id=N1qWBQAAQBAJ|title=Memory Machines: The Evolution of Hypertext|last=Barnet|first=Belinda|date=2014-12-01|quote=But the most popular development for novice users in FRESS was not its capacity to accommodate multiple displays and users; it was the 'undo' feature – the feature of which van Dam is most proud (van Dam 2011). FRESS pioneered a single-level undo for both word processing and hypertext. Every edit to a file was saved in a shadow version of the data structure, which allowed for both an 'autosave' and an undo. Brown staff and students understood immediately the importance and usefulness of this feature (van Dam 1999).|publisher=Anthem Press|isbn=9781783083442|page=108|language=en}}</ref><ref name="barnet">{{Cite journal|last=Barnet|first=Belinda|date=2010-01-01|title=Crafting the User-Centered Document Interface: The Hypertext Editing System (HES) and the File Retrieval and Editing System (FRESS)|journal=Digital Humanities Quarterly|url=http://www.digitalhumanities.org/dhq/vol/4/1/000081/000081.html|volume=4|issue=1}}</ref>
[[वारेन टिटेलमैन]] ने 1971 तक अनडू कार्य के साथ बीबीएन-लिस्प के भाग के रूप में प्रोग्रामर सहायक विकसित किया है।<ref>{{Cite journal|last=Teitelman|first=Warren|date=1972-01-01|title=Automated Programmering: The Programmer's Assistant|journal=Proceedings of the December 5–7, 1972, Fall Joint Computer Conference, Part II|series=AFIPS '72 (Fall, part II)|location=New York, NY, USA|publisher=ACM|pages=917–921|doi=10.1145/1480083.1480119|s2cid=1276566}}</ref>
[[वारेन टिटेलमैन]] ने 1971 तक अनडू कार्य के साथ बीबीएन-लिस्प के भाग के रूप में प्रोग्रामर सहायक विकसित किया है।<ref>{{Cite journal|last=Teitelman|first=Warren|date=1972-01-01|title=Automated Programmering: The Programmer's Assistant|journal=Proceedings of the December 5–7, 1972, Fall Joint Computer Conference, Part II|series=AFIPS '72 (Fall, part II)|location=New York, NY, USA|publisher=ACM|pages=917–921|doi=10.1145/1480083.1480119|s2cid=1276566}}</ref>
[[ज़ेरॉक्स PARC]] [[ब्रावो (सॉफ्टवेयर)]] टेक्स्ट एडिटर के पास 1974 में एक अनडू कमांड था।<ref>{{cite web|title=Bravo Manual in Alto Non-Programmers Guide, p. 52 |url=http://history-computer.com/Library/AltoUsersHandbook.pdf |access-date=2014-03-29}}</ref> [[आईबीएम]] के लांस ए. मिलर और जॉन सी. थॉमस की 1976 की एक शोध रिपोर्ट, इंटरएक्टिव सिस्टम के उपयोग में व्यवहारिक मुद्दे,<ref>{{Cite journal|last1=Miller|first1=Lance A.|last2=Thomas|first2=John C.|date=1977-09-01|title=इंटरएक्टिव सिस्टम के उपयोग में व्यवहार संबंधी मुद्दे|journal=International Journal of Man-Machine Studies|volume=9|issue=5|pages=509–536|doi=10.1016/S0020-7373(77)80002-3|issn=0020-7373}}</ref> नोट किया गया कि यह उपयोगकर्ताओं को कम से कम तत्काल पूर्ववर्ती आदेश (कुछ विशेष 'अनडू करें' आदेश जारी करके) 'वापस लेने' की अनुमति देने के लिए काफी उपयोगी होगा।<ref>{{cite web | last=Miller | first=Lance A. |author2=John C. Thomas Jr.  | title=इंटरएक्टिव सिस्टम के उपयोग में व्यवहार संबंधी मुद्दे| date=December 1976 | url=http://handle.dtic.mil/100.2/ADA043033 | archive-url=https://web.archive.org/web/20120527163155/http://handle.dtic.mil/100.2/ADA043033 | url-status=dead | archive-date=May 27, 2012 | format=PDF | access-date=2011-05-21}}</ref> PARC (कंपनी) अनुसंधान केंद्र के प्रोग्रामरों ने कीबोर्ड शॉर्टकट Ctrl-Z को अनडू आदेश दिया, जो व्यक्तिगत कंप्यूटर युग में पाठ संपादकों और वर्ड प्रोसेसर की एक महत्वपूर्ण विशेषता बन गई।<ref name="BenZimmer_2009">{{cite web | url=https://www.nytimes.com/2009/09/20/magazine/20FOB-onlanguage-t.html | title=पूर्ववत करने का युग| access-date=2013-06-02 | author=Ben Zimmer | date=2009-09-15 | work=New York Times}</ref> 1980 में, ज़ेरॉक्स PARC के [[लैरी टेस्लर]] ने Apple कंप्यूटर में काम करना प्रारम्भ किया। वहाँ, उन्होंने और [[बिल एटकिंसन]] ने Apple लिसा पर एक मानक स्थिरता के रूप में एक अनडू आदेश की उपस्थिति की वकालत की। एटकिन्सन लिसा के एप्लिकेशन सॉफ़्टवेयर के व्यक्तिगत डेवलपर्स को अनडू और फिर से करने के एकल स्तर को सम्मलित करने में सक्षम था, लेकिन कई स्तरों के लिए पैरवी करने में असफल रहा।{{Citation needed|date=October 2018}} जब Apple ने लिसा के उत्तराधिकारी, [[Macintosh]] को पेश किया, तो यह निर्धारित किया गया कि सभी मानक अनुप्रयोगों में "संपादन" मेनू में पहले आदेश के रूप में "अनडू करें" सम्मलित होना चाहिए,<ref>{{cite book | title=मैकिंटोश के अंदर, खंड I| last=Apple Computer, Inc. | date=1984 | chapter=User Interface}}</ref> जो आज तक [[macOS]] और [[Windows]] पर मानक बना हुआ है।
[[ज़ेरॉक्स PARC|ज़ेरॉक्स पीएआरसी]] [[ब्रावो (सॉफ्टवेयर)]] टेक्स्ट एडिटर के पास 1974 में अनडू कमांड था।<ref>{{cite web|title=Bravo Manual in Alto Non-Programmers Guide, p. 52 |url=http://history-computer.com/Library/AltoUsersHandbook.pdf |access-date=2014-03-29}}</ref> [[आईबीएम]] के लांस ए. मिलर और जॉन सी. थॉमस की 1976 की शोध रिपोर्ट, इंटरएक्टिव सिस्टम के उपयोग में व्यवहारिक विषय,<ref>{{Cite journal|last1=Miller|first1=Lance A.|last2=Thomas|first2=John C.|date=1977-09-01|title=इंटरएक्टिव सिस्टम के उपयोग में व्यवहार संबंधी मुद्दे|journal=International Journal of Man-Machine Studies|volume=9|issue=5|pages=509–536|doi=10.1016/S0020-7373(77)80002-3|issn=0020-7373}}</ref> नोट किया गया कि यह उपयोगकर्ताओं को कम से कम तत्काल अनडू कमांड 'वापस लेने' की अनुमति देने के लिए काफी उपयोगी होगा।<ref>{{cite web | last=Miller | first=Lance A. |author2=John C. Thomas Jr.  | title=इंटरएक्टिव सिस्टम के उपयोग में व्यवहार संबंधी मुद्दे| date=December 1976 | url=http://handle.dtic.mil/100.2/ADA043033 | archive-url=https://web.archive.org/web/20120527163155/http://handle.dtic.mil/100.2/ADA043033 | url-status=dead | archive-date=May 27, 2012 | format=PDF | access-date=2011-05-21}}</ref> पीएआरसी (कंपनी) अनुसंधान केंद्र के प्रोग्रामरों ने कीबोर्ड शॉर्टकट Ctrl-Z को अनडू कमांड दिया, जो व्यक्तिगत कंप्यूटर युग में पाठ संपादकों और वर्ड प्रोसेसर की महत्वपूर्ण विशेषता बन गई है।<ref name="BenZimmer_2009">{{cite web | url=https://www.nytimes.com/2009/09/20/magazine/20FOB-onlanguage-t.html | title=पूर्ववत करने का युग| access-date=2013-06-02 | author=Ben Zimmer | date=2009-09-15 | work=New York Times}</ref> 1980 में, ज़ेरॉक्स पीएआरसी के [[लैरी टेस्लर]] ने एप्पल कंप्यूटर में काम करना प्रारम्भ किया था। वहाँ, उन्होंने और [[बिल एटकिंसन]] ने एप्पल लिसा पर मानक स्थिरता के रूप में अनडू कमांड की उपस्थिति की वकालत की थी। एटकिन्सन लिसा के एप्लिकेशन सॉफ़्टवेयर के व्यक्तिगत डेवलपर्स को अनडू और पुनः करने के एकल स्तर को सम्मलित करने में सक्षम था, लेकिन कई स्तरों के लिए पैरवी करने में असफल हो रहा था।{{Citation needed|date=October 2018}} जब एप्पल ने लिसा के उत्तराधिकारी, [[Macintosh|मैकिनटोश]] को प्रस्तुत किया है, तो यह निर्धारित किया गया कि सभी मानक अनुप्रयोगों में "एडिट" मेनू में पहले कमांड के रूप में "अनडू करें" सम्मलित होना चाहिए,<ref>{{cite book | title=मैकिंटोश के अंदर, खंड I| last=Apple Computer, Inc. | date=1984 | chapter=User Interface}}</ref> जो आज तक [[macOS|मैकओएस]] और [[Windows|विंडोज]] पर मानक बना हुआ है।


बहु-स्तरीय अनडू आदेश 1980 के दशक में पेश किए गए थे, जिससे उपयोगकर्ता न केवल सबसे हालिया बल्कि कई कार्यों को वापस ले सकते थे।<ref name="BenZimmer_2009"/>व्यक्तिगत कंप्यूटर सॉफ़्टवेयर से पहले [[EMACS]] और अन्य टाइमशेयर स्क्रीन संपादकों के पास यह था। [[सिग्नस एड]] पहला अमीगा पाठ संपादक था जिसमें असीमित अनडू / फिर से सुविधा थी। [[AtariWriter]], 1982 में पेश किया गया एक वर्ड-प्रोसेसिंग एप्लिकेशन, अनडू चित्रित किया गया। NewWord, 1984 में NewStar द्वारा जारी किया गया एक अन्य वर्ड-प्रोसेसिंग प्रोग्राम था, जिसमें एक अनरेज़ कमांड था।<ref name="BenZimmer_2009"/>IBM के VisiWord के पास एक अनडिलीट कमांड भी था।
बहु-स्तरीय अनडू कमांड 1980 के दशक में प्रस्तुत किए गए थे, जिससे उपयोगकर्ता न केवल सबसे अग्रिम बल्कि कई कार्यों को वापस ले सकते थे।<ref name="BenZimmer_2009"/>व्यक्तिगत कंप्यूटर सॉफ़्टवेयर से पहले [[EMACS]] और अन्य टाइमशेयर स्क्रीन संपादकों के पास यह था। [[सिग्नस एड]] पहला अमीगा पाठ संपादक था जिसमें असीमित अनडू / पुनः सुविधा थी। [[AtariWriter]], 1982 में प्रस्तुत किया गया एक वर्ड-प्रोसेसिंग एप्लिकेशन, अनडू चित्रित किया गया। NewWord, 1984 में NewStar द्वारा जारी किया गया एक अन्य वर्ड-प्रोसेसिंग प्रोग्राम था, जिसमें एक अनरेज़ कमांड था।<ref name="BenZimmer_2009"/>IBM के VisiWord के पास एक अनडिलीट कमांड भी था।


== मॉडल अनडू करें और फिर से करें ==
== मॉडल अनडू करें और पुनः करें ==
अनडू मॉडल को रैखिक या गैर-रैखिक के रूप में वर्गीकृत किया जा सकता है। गैर-रैखिक अनडू मॉडल को स्क्रिप्ट मॉडल, यूएस के मॉडल, ट्रायडिक मॉडल और चयनात्मक अनडू में उप-वर्गीकृत किया जा सकता है।<ref name=":0" />
अनडू मॉडल को रैखिक या गैर-रैखिक के रूप में वर्गीकृत किया जा सकता है। गैर-रैखिक अनडू मॉडल को स्क्रिप्ट मॉडल, यूएस के मॉडल, ट्रायडिक मॉडल और चयनात्मक अनडू में उप-वर्गीकृत किया जा सकता है।<ref name=":0" />


मॉडल के कुछ सामान्य गुण हैं:
मॉडल के कुछ सामान्य गुण हैं:


* स्थिर निष्पादन संपत्ति: एक राज्य को आदेशों की एक आदेशित सूची के रूप में दर्शाया गया है। इसका मतलब यह है कि मूल निष्पादन के बाद जिस स्थिति में पहुंचा था, उस राज्य में एक आदेश हमेशा अनडू किया जाता है।<ref name=":1" />* कमजोर स्थिर निष्पादन: इसका मतलब यह है कि यदि अनडू निष्पादित किया जाता है तो सभी आदेश जो अनडू आदेश पर निर्भर करते हैं, आदेश पर निर्भर अनडू होते हैं।
* स्थिर निष्पादन संपत्ति: एक राज्य को कमांडों की एक कमांडित सूची के रूप में दर्शाया गया है। इसका मतलब यह है कि मूल निष्पादन के बाद जिस स्थिति में पहुंचा था, उस राज्य में एक कमांड हमेशा अनडू किया जाता है।<ref name=":1" />* कमजोर स्थिर निष्पादन: इसका मतलब यह है कि यदि अनडू निष्पादित किया जाता है तो सभी कमांड जो अनडू कमांड पर निर्भर करते हैं, कमांड पर निर्भर अनडू होते हैं।
* स्थिर परिणाम संपत्ति: सूची को छोड़कर इस संपत्ति का अर्थ स्थिर निष्पादन संपत्ति के समान है। आदेशों की आदेशित सूची में सम्मलित है कि उन्हें केवल आदेशों के बजाय निष्पादित किया गया था।
* स्थिर परिणाम संपत्ति: सूची को छोड़कर इस संपत्ति का अर्थ स्थिर निष्पादन संपत्ति के समान है। कमांडों की कमांडित सूची में सम्मलित है कि उन्हें केवल कमांडों के बजाय निष्पादित किया गया था।
* क्रमविनिमेय: इसका मतलब है कि दो अलग-अलग आदेशों को अनडू और फिर से करने के बाद पहुंची हुई स्थिति समान होती है जब उन्हें विपरीत क्रम में निष्पादित किया जाता है।
* क्रमविनिमेय: इसका मतलब है कि दो अलग-अलग कमांडों को अनडू और पुनः करने के बाद पहुंची हुई स्थिति समान होती है जब उन्हें विपरीत क्रम में निष्पादित किया जाता है।
* न्यूनतर अनडू गुण: यह वर्णन करता है कि कमांड C का अनडू संचालन केवल कमांड C को अनडू करता है और C से छोटे सभी आदेश जो C पर निर्भर हैं।<ref name=":1" />
* न्यूनतर अनडू गुण: यह वर्णन करता है कि कमांड C का अनडू संचालन केवल कमांड C को अनडू करता है और C से छोटे सभी कमांड जो C पर निर्भर हैं।<ref name=":1" />






=== रैखिक अनडू करें ===
=== रैखिक अनडू करें ===
रैखिक अनडू एक स्टैक (डेटा संरचना) (आखिरी में पहले बाहर (एलआईएफओ) डेटा संरचना) के साथ कार्यान्वित किया जाता है जो सभी निष्पादित आदेशों का इतिहास संग्रहीत करता है। जब कोई नया आदेश निष्पादित किया जाता है तो इसे स्टैक के शीर्ष पर जोड़ दिया जाता है। इसलिए, केवल अंतिम निष्पादित कमांड को अनडू किया जा सकता है और इतिहास से हटाया जा सकता है। अनडू तब तक दोहराया जा सकता है जब तक कि इतिहास खाली न हो।<ref name=":0" />
रैखिक अनडू एक स्टैक (डेटा संरचना) (आखिरी में पहले बाहर (एलआईएफओ) डेटा संरचना) के साथ कार्यान्वित किया जाता है जो सभी निष्पादित कमांडों का इतिहास संग्रहीत करता है। जब कोई नया कमांड निष्पादित किया जाता है तो इसे स्टैक के शीर्ष पर जोड़ दिया जाता है। इसलिए, केवल अंतिम निष्पादित कमांड को अनडू किया जा सकता है और इतिहास से हटाया जा सकता है। अनडू तब तक दोहराया जा सकता है जब तक कि इतिहास खाली न हो।<ref name=":0" />






==== प्रतिबंधित रैखिक मॉडल ====
==== प्रतिबंधित रैखिक मॉडल ====
प्रतिबंधित रेखीय मॉडल रेखीय अनडू मॉडल का एक संवर्द्धन है। यह रैखिक अनडू करने के लिए ऊपर वर्णित स्थिर निष्पादन संपत्ति को संतुष्ट करता है, क्योंकि यह मॉडल संपत्ति को नहीं रखता है यदि कोई आदेश किया जाता है जबकि इतिहास सूची में अन्य आदेश सम्मलित होते हैं। नया आदेश जोड़ने से पहले प्रतिबंधित रेखीय मॉडल इतिहास सूची को साफ़ करता है। लेकिन अन्य प्रतिबंध भी उपलब्ध हैं। उदाहरण के लिए, इतिहास सूची का आकार प्रतिबंधित किया जा सकता है या जब एक परिभाषित आकार तक पहुँच जाता है, तो पहले निष्पादित कमांड को सूची से हटा दिया जाता है।<ref name=":0" />
प्रतिबंधित रेखीय मॉडल रेखीय अनडू मॉडल का एक संवर्द्धन है। यह रैखिक अनडू करने के लिए ऊपर वर्णित स्थिर निष्पादन संपत्ति को संतुष्ट करता है, क्योंकि यह मॉडल संपत्ति को नहीं रखता है यदि कोई कमांड किया जाता है जबकि इतिहास सूची में अन्य कमांड सम्मलित होते हैं। नया कमांड जोड़ने से पहले प्रतिबंधित रेखीय मॉडल इतिहास सूची को साफ़ करता है। लेकिन अन्य प्रतिबंध भी उपलब्ध हैं। उदाहरण के लिए, इतिहास सूची का आकार प्रतिबंधित किया जा सकता है या जब एक परिभाषित आकार तक पहुँच जाता है, तो पहले निष्पादित कमांड को सूची से हटा दिया जाता है।<ref name=":0" />




=== गैर रेखीय अनडू ===
=== गैर रेखीय अनडू ===
रैखिक अनडू और गैर-रैखिक अनडू के बीच मुख्य अंतर यह है कि उपयोगकर्ता द्वारा निष्पादित आदेशों को मनमाने क्रम में अनडू करने की संभावना है। उनके पास सबसे हालिया आदेश को अनडू करने का मौका नहीं है बल्कि सूची से एक आदेश का चयन करने का मौका है।<ref name=":1" />गैर रेखीय मॉडल के लिए उपवर्ग हैं जो इस मॉडल को लागू करते हैं।
रैखिक अनडू और गैर-रैखिक अनडू के बीच मुख्य अंतर यह है कि उपयोगकर्ता द्वारा निष्पादित कमांडों को मनमाने क्रम में अनडू करने की संभावना है। उनके पास सबसे अग्रिम कमांड को अनडू करने का मौका नहीं है बल्कि सूची से एक कमांड का चयन करने का मौका है।<ref name=":1" />गैर रेखीय मॉडल के लिए उपवर्ग हैं जो इस मॉडल को लागू करते हैं।


==== स्क्रिप्ट मॉडल ====
==== स्क्रिप्ट मॉडल ====
स्क्रिप्ट मॉडल उपयोगकर्ता क्रियाओं को कमांड की स्क्रिप्ट संपादित करने के रूप में संभालता है। निष्पादित आदेशों की इतिहास सूची को एक स्क्रिप्ट के रूप में व्याख्या की जाती है, एक अनडू प्रभाव को उसी तरह परिभाषित किया जाता है जैसे कि अनडू कार्रवाई पहले कभी नहीं हुई थी।<ref name=":0" />राज्य को अनडू करने के परिणाम के रूप में ऐसा होना चाहिए जैसे कि अनडू आदेश को कभी निष्पादित नहीं किया गया था। इस मॉडल का एक नुकसान यह है कि साइड इफेक्ट से बचने के लिए उपयोगकर्ता को अनडू आदेश और वर्तमान स्थिति के बीच संबंध को जानना होगा। इनमें से एक उदाहरण के लिए दोहराव हो सकता है। अन्य समस्याएँ यह हैं कि यदि बाद के आदेशों को एक अलग स्थिति में फिर से किया जाता है कि वे मूल रूप से प्रत्यक्ष हेरफेर इंटरफेस में निष्पादित किए गए थे, तो मूल उपयोगकर्ता क्रिया की यह पुनर्व्याख्या हमेशा स्पष्ट या अच्छी तरह से परिभाषित नहीं होती है।<ref name=":0" />
स्क्रिप्ट मॉडल उपयोगकर्ता क्रियाओं को कमांड की स्क्रिप्ट संपादित करने के रूप में संभालता है। निष्पादित कमांडों की इतिहास सूची को एक स्क्रिप्ट के रूप में व्याख्या की जाती है, एक अनडू प्रभाव को उसी तरह परिभाषित किया जाता है जैसे कि अनडू कार्रवाई पहले कभी नहीं हुई थी।<ref name=":0" />राज्य को अनडू करने के परिणाम के रूप में ऐसा होना चाहिए जैसे कि अनडू कमांड को कभी निष्पादित नहीं किया गया था। इस मॉडल का एक नुकसान यह है कि साइड इफेक्ट से बचने के लिए उपयोगकर्ता को अनडू कमांड और वर्तमान स्थिति के बीच संबंध को जानना होगा। इनमें से एक उदाहरण के लिए दोहराव हो सकता है। अन्य समस्याएँ यह हैं कि यदि बाद के कमांडों को एक अलग स्थिति में पुनः किया जाता है कि वे मूल रूप से प्रत्यक्ष हेरफेर इंटरफेस में निष्पादित किए गए थे, तो मूल उपयोगकर्ता क्रिया की यह पुनर्व्याख्या हमेशा स्पष्ट या अच्छी तरह से परिभाषित नहीं होती है।<ref name=":0" />




==== यूएस एंड आर मॉडल ====
==== यूएस एंड आर मॉडल ====
इस मॉडल की खास बात यह है कि इसमें एक कमांड को स्किप करने का विकल्प है। इसका मतलब है कि कमांड को फिर से करना छोड़ दिया जा सकता है। स्किप की गई कमांड को स्किप के रूप में चिह्नित किया गया है लेकिन डिलीट नहीं किया गया है। जब नए आदेश निष्पादित किए जाते हैं, तो इतिहास सूची को बरकरार रखा जाता है, इसलिए निष्पादित आदेशों का क्रम उसके साथ पुन: उत्पन्न किया जा सकता है। ऑर्डर को इतिहास के पेड़ के माध्यम से वर्णित किया जा सकता है जो एक निर्देशित ग्राफ है, क्योंकि ग्राफ में एक लिंक बनाने वाली दूसरी शाखा से आदेशों को फिर से जारी रखना संभव है।<ref name=":0" />भले ही आदेशों का सेट सरल और समझने में सरल है, जब उपयोगकर्ता एक से अधिक चरणों को अनडू करना चाहता है, तो लंघन और शाखाओं को जोड़ने वाली जटिल संरचना को समझना और याद रखना कठिन होता है।<ref name=":0" />
इस मॉडल की खास बात यह है कि इसमें एक कमांड को स्किप करने का विकल्प है। इसका मतलब है कि कमांड को पुनः करना छोड़ दिया जा सकता है। स्किप की गई कमांड को स्किप के रूप में चिह्नित किया गया है लेकिन डिलीट नहीं किया गया है। जब नए कमांड निष्पादित किए जाते हैं, तो इतिहास सूची को बरकरार रखा जाता है, इसलिए निष्पादित कमांडों का क्रम उसके साथ पुन: उत्पन्न किया जा सकता है। ऑर्डर को इतिहास के पेड़ के माध्यम से वर्णित किया जा सकता है जो एक निर्देशित ग्राफ है, क्योंकि ग्राफ में एक लिंक बनाने वाली दूसरी शाखा से कमांडों को पुनः जारी रखना संभव है।<ref name=":0" />भले ही कमांडों का सेट सरल और समझने में सरल है, जब उपयोगकर्ता एक से अधिक चरणों को अनडू करना चाहता है, तो लंघन और शाखाओं को जोड़ने वाली जटिल संरचना को समझना और याद रखना कठिन होता है।<ref name=":0" />




==== ट्रायडिक मॉडल ====
==== ट्रायडिक मॉडल ====
इस गैर-रैखिक अनडू मॉडल में घुमाने की संभावना अनडू और फिर से करने के अलावा है। इसकी एक ही डेटा संरचना है जो उपर्युक्त मॉडल के रूप में एक इतिहास सूची और एक अलग रीडो सूची है जिसमें रीडो ऑपरेशन सम्मलित हैं। रोटेट ऑपरेशन उसके सामने रीडो लिस्ट की आखिरी कमांड सेट करता है। एक तरफ इसका मतलब यह है कि अगली कमांड को फिर से करने के लिए इसे सामने रखकर चुना जा सकता है। दूसरी ओर, रोटेशन का उपयोग रीडो सूची में उस स्थान का चयन करने के लिए किया जा सकता है जहां अगला अनडू ऑपरेशन कमांड डालेगा।<ref name=":0" />इसलिए रीडो की सूची अनियंत्रित है। एक पृथक आदेश को अनडू करने के लिए, उपयोगकर्ता को कई चरणों को अनडू करना होगा, फिर से करें सूची को घुमाना होगा और फिर कई चरणों को फिर से करना होगा।<ref name=":0" />फिर से करने के लिए सूची को तब तक घुमाना पड़ता है जब तक वांछित आदेश ऊपर न हो।
इस गैर-रैखिक अनडू मॉडल में घुमाने की संभावना अनडू और पुनः करने के अलावा है। इसकी एक ही डेटा संरचना है जो उपर्युक्त मॉडल के रूप में एक इतिहास सूची और एक अलग रीडो सूची है जिसमें रीडो ऑपरेशन सम्मलित हैं। रोटेट ऑपरेशन उसके सामने रीडो लिस्ट की आखिरी कमांड सेट करता है। एक तरफ इसका मतलब यह है कि अगली कमांड को पुनः करने के लिए इसे सामने रखकर चुना जा सकता है। दूसरी ओर, रोटेशन का उपयोग रीडो सूची में उस स्थान का चयन करने के लिए किया जा सकता है जहां अगला अनडू ऑपरेशन कमांड डालेगा।<ref name=":0" />इसलिए रीडो की सूची अनियंत्रित है। एक पृथक कमांड को अनडू करने के लिए, उपयोगकर्ता को कई चरणों को अनडू करना होगा, पुनः करें सूची को घुमाना होगा और फिर कई चरणों को पुनः करना होगा।<ref name=":0" />पुनः करने के लिए सूची को तब तक घुमाना पड़ता है जब तक वांछित कमांड ऊपर न हो।


=== चयनात्मक अनडू करें ===
=== चयनात्मक अनडू करें ===
जकुबेक एट अल। कहते हैं कि चयनात्मक अनडू एक विशेषता है जो एक मॉडल पेश कर सकता है लेकिन चयनात्मक अनडू के लिए कोई स्पष्ट परिभाषा नहीं है।<ref name=":1" />लेखकों ने उन कार्यों का चयन किया जो एक मॉडल के पास होना चाहिए जब वह चयनात्मक अनडू का समर्थन करता है। इतिहास बफ़र में किसी भी निष्पादित क्रिया को अनडू करना संभव होना चाहिए। अनडू की जा रही कार्रवाई से स्वतंत्र क्रियाओं को अछूता छोड़ देना चाहिए।<ref name=":1" />ठीक वैसे ही किसी भी अनडू आदेश के लिए फिर से करना संभव है। चयनात्मक अनडू के लिए तीसरा कार्य यह है कि प्रत्यक्ष उपयोगकर्ता के अनुरोध के बिना इतिहास बफ़र से कोई भी आदेश स्वचालित रूप से खारिज नहीं किया जा सकता है।<ref name=":1" />चयनात्मक अनडू के लिए लागू होता है कि अनडू और फिर से करना किसी भी संदर्भ के बाहर निष्पादन योग्य है। तीन मुख्य मुद्दे हैं। पहला यह है कि अनडू आदेश मूल संदर्भ से बाहर हो सकते हैं। इसके माध्यम से मृत संदर्भ हो सकते हैं जिन्हें संभालना होगा। दूसरा मुद्दा यह है कि संशोधित आदेशों को अनडू किया जा सकता है और इसलिए इसे हल करना होगा कि अनडू करने के बाद कौन सी स्थिति प्रस्तुत की जाएगी। तीसरा मुद्दा कमांड की समस्याओं को दूर कर रहा है। चयनात्मक अनडू का सूचियों में कोई संकेतक नहीं है, इसलिए इसका मतलब है कि स्टैक से कोई आदेश नहीं छोड़ा जाना चाहिए।<ref name=":1" />
जकुबेक एट अल। कहते हैं कि चयनात्मक अनडू एक विशेषता है जो एक मॉडल प्रस्तुत कर सकता है लेकिन चयनात्मक अनडू के लिए कोई स्पष्ट परिभाषा नहीं है।<ref name=":1" />लेखकों ने उन कार्यों का चयन किया जो एक मॉडल के पास होना चाहिए जब वह चयनात्मक अनडू का समर्थन करता है। इतिहास बफ़र में किसी भी निष्पादित क्रिया को अनडू करना संभव होना चाहिए। अनडू की जा रही कार्रवाई से स्वतंत्र क्रियाओं को अछूता छोड़ देना चाहिए।<ref name=":1" />ठीक वैसे ही किसी भी अनडू कमांड के लिए पुनः करना संभव है। चयनात्मक अनडू के लिए तीसरा कार्य यह है कि प्रत्यक्ष उपयोगकर्ता के अनुरोध के बिना इतिहास बफ़र से कोई भी कमांड स्वचालित रूप से खारिज नहीं किया जा सकता है।<ref name=":1" />चयनात्मक अनडू के लिए लागू होता है कि अनडू और पुनः करना किसी भी संदर्भ के बाहर निष्पादन योग्य है। तीन मुख्य मुद्दे हैं। पहला यह है कि अनडू कमांड मूल संदर्भ से बाहर हो सकते हैं। इसके माध्यम से मृत संदर्भ हो सकते हैं जिन्हें संभालना होगा। दूसरा मुद्दा यह है कि संशोधित कमांडों को अनडू किया जा सकता है और इसलिए इसे हल करना होगा कि अनडू करने के बाद कौन सी स्थिति प्रस्तुत की जाएगी। तीसरा मुद्दा कमांड की समस्याओं को दूर कर रहा है। चयनात्मक अनडू का सूचियों में कोई संकेतक नहीं है, इसलिए इसका मतलब है कि स्टैक से कोई कमांड नहीं छोड़ा जाना चाहिए।<ref name=":1" />






==== प्रत्यक्ष चयनात्मक अनडू करें ====
==== प्रत्यक्ष चयनात्मक अनडू करें ====
प्रत्यक्ष चयनात्मक अनडू एक इतिहास वृक्ष के साथ प्रतिबंधित रेखीय अनडू का विस्तार है। ऑपरेशन चयनित कमांड की एक प्रति बनाता है, इसे निष्पादित करता है और इसे इतिहास सूची में जोड़ता है। वहाँ दो गैर-रैखिक संचालन चयनात्मक अनडू और चयनात्मक फिर से परिभाषित किए गए हैं, इसलिए यह अधिक सममित है।<ref name=":0" />
प्रत्यक्ष चयनात्मक अनडू एक इतिहास वृक्ष के साथ प्रतिबंधित रेखीय अनडू का विस्तार है। ऑपरेशन चयनित कमांड की एक प्रति बनाता है, इसे निष्पादित करता है और इसे इतिहास सूची में जोड़ता है। वहाँ दो गैर-रैखिक संचालन चयनात्मक अनडू और चयनात्मक पुनः परिभाषित किए गए हैं, इसलिए यह अधिक सममित है।<ref name=":0" />




Line 66: Line 66:
जब एकाधिक उपयोगकर्ता एक ही प्रपत्र को एक साथ संपादित कर सकते हैं, तो बहु-उपयोगकर्ता अनडू करने की आवश्यकता होती है। वैश्विक बहु-उपयोगकर्ता अनडू प्रपत्र में की गई नवीनतम क्रिया को अनडू करता है, भले ही संपादन किसने किया हो। स्थानीय बहु-उपयोगकर्ता अनडू केवल स्थानीय उपयोगकर्ता द्वारा किए गए कार्यों को अनडू करता है, जिसके लिए गैर-रैखिक अनडू कार्यान्वयन की आवश्यकता होती है।
जब एकाधिक उपयोगकर्ता एक ही प्रपत्र को एक साथ संपादित कर सकते हैं, तो बहु-उपयोगकर्ता अनडू करने की आवश्यकता होती है। वैश्विक बहु-उपयोगकर्ता अनडू प्रपत्र में की गई नवीनतम क्रिया को अनडू करता है, भले ही संपादन किसने किया हो। स्थानीय बहु-उपयोगकर्ता अनडू केवल स्थानीय उपयोगकर्ता द्वारा किए गए कार्यों को अनडू करता है, जिसके लिए गैर-रैखिक अनडू कार्यान्वयन की आवश्यकता होती है।


जहां अनडू का उपयोग कई संपादनों के माध्यम से बैकट्रैक करने के लिए किया जा सकता है, फिर से करें आदेश क्रिया इतिहास के माध्यम से आगे बढ़ता है। नया संपादन करने से सामान्यतः फिर से की जाने वाली सूची साफ़ हो जाती है। यदि एक ब्रांचिंग रीडो मॉडल का उपयोग किया जाता है, तो नया संपादन क्रिया इतिहास को शाखाबद्ध करता है।
जहां अनडू का उपयोग कई संपादनों के माध्यम से बैकट्रैक करने के लिए किया जा सकता है, पुनः करें कमांड क्रिया इतिहास के माध्यम से आगे बढ़ता है। नया संपादन करने से सामान्यतः पुनः की जाने वाली सूची साफ़ हो जाती है। यदि एक ब्रांचिंग रीडो मॉडल का उपयोग किया जाता है, तो नया संपादन क्रिया इतिहास को शाखाबद्ध करता है।


अनडू की जा सकने वाली पिछली कार्रवाइयों की संख्या प्रोग्राम, संस्करण और हार्डवेयर या सॉफ़्टवेयर क्षमताओं के अनुसार भिन्न होती है। उदाहरण के लिए, [[Adobe Photoshop]] में डिफ़ॉल्ट अनडू करें/फिर से करें स्टैक आकार 20 है लेकिन उपयोगकर्ता द्वारा इसे बदला जा सकता है। दूसरे उदाहरण के रूप में, पहले{{when|date=May 2018}} Microsoft पेंट के संस्करणों को अनडू करने के लिए केवल तीन संपादनों तक की अनुमति है; विंडोज 7 में पेश किए गए संस्करण ने इस सीमा को बढ़ाकर 50 कर दिया।
अनडू की जा सकने वाली पिछली कार्रवाइयों की संख्या प्रोग्राम, संस्करण और हार्डवेयर या सॉफ़्टवेयर क्षमताओं के अनुसार भिन्न होती है। उदाहरण के लिए, [[Adobe Photoshop]] में डिफ़ॉल्ट अनडू करें/पुनः करें स्टैक आकार 20 है लेकिन उपयोगकर्ता द्वारा इसे बदला जा सकता है। दूसरे उदाहरण के रूप में, पहले{{when|date=May 2018}} Microsoft पेंट के संस्करणों को अनडू करने के लिए केवल तीन संपादनों तक की अनुमति है; विंडोज 7 में प्रस्तुत किए गए संस्करण ने इस सीमा को बढ़ाकर 50 कर दिया।


सरलीकृत, एकल-संपादन अनडू सुविधाएँ कभी-कभी अनडू कमांड को अनडू की जा सकने वाली क्रिया के रूप में मानकर फिर से करना बंद कर देती हैं। इसे फ्लिप अनडू मॉडल के रूप में जाना जाता है, क्योंकि उपयोगकर्ता अनडू आदेश का उपयोग करके दो प्रोग्राम राज्यों के बीच फ़्लिप कर सकता है।<ref>Roberta Mancini, Alan Dix and Stefano Levialdi. 2006. [http://www.hcibook.com/alan/papers/undo-techrep-96/tech9611.pdf "Reflections on Undo"]</ref> 1990 के दशक की शुरुआत में बहु-स्तरीय अनडू के व्यापक रूप से अपनाने से पहले यह मानक मॉडल था।
सरलीकृत, एकल-संपादन अनडू सुविधाएँ कभी-कभी अनडू कमांड को अनडू की जा सकने वाली क्रिया के रूप में मानकर पुनः करना बंद कर देती हैं। इसे फ्लिप अनडू मॉडल के रूप में जाना जाता है, क्योंकि उपयोगकर्ता अनडू कमांड का उपयोग करके दो प्रोग्राम राज्यों के बीच फ़्लिप कर सकता है।<ref>Roberta Mancini, Alan Dix and Stefano Levialdi. 2006. [http://www.hcibook.com/alan/papers/undo-techrep-96/tech9611.pdf "Reflections on Undo"]</ref> 1990 के दशक की शुरुआत में बहु-स्तरीय अनडू के व्यापक रूप से अपनाने से पहले यह मानक मॉडल था।


== कार्यान्वयन अनडू करें ==
== कार्यान्वयन अनडू करें ==
Line 77: Line 77:


=== कमांड पैटर्न ===
=== कमांड पैटर्न ===
कमांड पैटर्न एक [[सॉफ्टवेयर डिजाइन पैटर्न]] है जो ऑपरेशन से कमांड ऑब्जेक्ट में जानकारी को एनकैप्सुलेट करता है। इसका मतलब है कि हर क्रिया एक वस्तु में संग्रहित होती है। सार कमांड वर्ग एक अमूर्त निष्पादन ऑपरेशन को लागू करता है, इसलिए प्रत्येक कमांड ऑब्जेक्ट में एक निष्पादन ऑपरेशन होता है। अनडू के लिए अनएक्सक्यूटेड ऑपरेशन भी होना चाहिए, जो निष्पादित कमांड के प्रभाव को अनडू करता है, जो एक इतिहास सूची में संग्रहीत होते हैं। अनडू और फिर से लागू किया जाता है ताकि सूची को आगे और पीछे से चलाया जा सके जब निष्पादित या अन-निष्पादित आदेश कहा जाता है।<ref name=":2">{{Cite book|url=https://archive.org/details/designpatternsel00gamm|title=Design patterns : elements of reusable object-oriented software|date=1995|publisher=Addison-Wesley|others=Gamma, Erich.|isbn=0201633612|location=Reading, Mass.|oclc=31171684|url-access=registration}}</ref>
कमांड पैटर्न एक [[सॉफ्टवेयर डिजाइन पैटर्न]] है जो ऑपरेशन से कमांड ऑब्जेक्ट में जानकारी को एनकैप्सुलेट करता है। इसका मतलब है कि हर क्रिया एक वस्तु में संग्रहित होती है। सार कमांड वर्ग एक अमूर्त निष्पादन ऑपरेशन को लागू करता है, इसलिए प्रत्येक कमांड ऑब्जेक्ट में एक निष्पादन ऑपरेशन होता है। अनडू के लिए अनएक्सक्यूटेड ऑपरेशन भी होना चाहिए, जो निष्पादित कमांड के प्रभाव को अनडू करता है, जो एक इतिहास सूची में संग्रहीत होते हैं। अनडू और पुनः लागू किया जाता है ताकि सूची को आगे और पीछे से चलाया जा सके जब निष्पादित या अन-निष्पादित कमांड कहा जाता है।<ref name=":2">{{Cite book|url=https://archive.org/details/designpatternsel00gamm|title=Design patterns : elements of reusable object-oriented software|date=1995|publisher=Addison-Wesley|others=Gamma, Erich.|isbn=0201633612|location=Reading, Mass.|oclc=31171684|url-access=registration}}</ref>
एकल अनडू करने के लिए केवल निष्पादित आदेश संग्रहीत किया जाता है। बहु स्तरीय अनडू के विपरीत जहां न केवल आदेशों के साथ इतिहास सूची सहेजी जाती है बल्कि अनडू स्तरों की संख्या भी सूची की अधिकतम लंबाई निर्धारित की जा सकती है।<ref name=":2" />
एकल अनडू करने के लिए केवल निष्पादित कमांड संग्रहीत किया जाता है। बहु स्तरीय अनडू के विपरीत जहां न केवल कमांडों के साथ इतिहास सूची सहेजी जाती है बल्कि अनडू स्तरों की संख्या भी सूची की अधिकतम लंबाई निर्धारित की जा सकती है।<ref name=":2" />




Line 86: Line 86:
मेमेंटो पैटर्न में अनडू मैकेनिज्म को केयरटेकर कहा जाता है। यह स्मृति चिन्हों को सुरक्षित रखने के लिए जिम्मेदार है लेकिन इनकी सामग्री को कभी नहीं बदलें। अनडू करने के लिए कार्यवाहक प्रवर्तक के एक स्मृति चिन्ह का अनुरोध करता है और फिर अनडू आवेदन करता है।<ref name=":2" />
मेमेंटो पैटर्न में अनडू मैकेनिज्म को केयरटेकर कहा जाता है। यह स्मृति चिन्हों को सुरक्षित रखने के लिए जिम्मेदार है लेकिन इनकी सामग्री को कभी नहीं बदलें। अनडू करने के लिए कार्यवाहक प्रवर्तक के एक स्मृति चिन्ह का अनुरोध करता है और फिर अनडू आवेदन करता है।<ref name=":2" />


अनडू तंत्र का अधिकांश भाग विशिष्ट अनुप्रयोगों या कमांड वर्गों पर निर्भरता के बिना कार्यान्वित किया जा सकता है। इसमें इतिहास सूची का प्रबंधन, इतिहास स्क्रॉलर, अनडू और फिर से करने के लिए मेनू प्रविष्टियाँ और अगले उपलब्ध कमांड के नाम के आधार पर मेनू प्रविष्टियों का अद्यतन सम्मलित है।<ref name=":0" />
अनडू तंत्र का अधिकांश भाग विशिष्ट अनुप्रयोगों या कमांड वर्गों पर निर्भरता के बिना कार्यान्वित किया जा सकता है। इसमें इतिहास सूची का प्रबंधन, इतिहास स्क्रॉलर, अनडू और पुनः करने के लिए मेनू प्रविष्टियाँ और अगले उपलब्ध कमांड के नाम के आधार पर मेनू प्रविष्टियों का अद्यतन सम्मलित है।<ref name=":0" />


प्रत्येक कमांड क्लास में एक डू विधि होती है जिसे कमांड निष्पादित होने पर कहा जाता है। अनडू-मेथड डू-मेथड के रिवर्स ऑपरेशन को लागू करता है। रिवर्स को लागू करने के लिए कई अलग-अलग रणनीतियां हैं।
प्रत्येक कमांड क्लास में एक डू विधि होती है जिसे कमांड निष्पादित होने पर कहा जाता है। अनडू-मेथड डू-मेथड के रिवर्स ऑपरेशन को लागू करता है। रिवर्स को लागू करने के लिए कई अलग-अलग रणनीतियां हैं।


* पूर्ण चेकपॉइंट':' इसका अर्थ है कि कमांड निष्पादित होने के बाद पूर्ण स्थिति सहेजी जाती है। यह सबसे सरल कार्यान्वयन है, लेकिन अत्यधिक कुशल नहीं है और इसलिए अक्सर इसका उपयोग नहीं किया जाता है।
* पूर्ण चेकपॉइंट':' इसका अर्थ है कि कमांड निष्पादित होने के बाद पूर्ण स्थिति सहेजी जाती है। यह सबसे सरल कार्यान्वयन है, लेकिन अत्यधिक कुशल नहीं है और इसलिए अक्सर इसका उपयोग नहीं किया जाता है।
* पूर्ण पुन: चलाएँ: इसलिए, प्रारंभिक अवस्था को सहेजा जाता है और इतिहास की सूची में प्रत्येक राज्य को प्रारंभिक अवस्था से प्रारम्भ करके और इतिहास की शुरुआत से सभी आदेशों को फिर से प्रारम्भ करके पहुँचा जा सकता है।<ref name=":0" />* आंशिक चेकपॉइंट':' यह सबसे अधिक उपयोग की जाने वाली रणनीति है। बदली हुई एप्लिकेशन स्थिति सहेजी जाती है और राज्य के हिस्से को अनडू करने के साथ आगे के मूल्य पर वापस सेट किया जाता है।
* पूर्ण पुन: चलाएँ: इसलिए, प्रारंभिक अवस्था को सहेजा जाता है और इतिहास की सूची में प्रत्येक राज्य को प्रारंभिक अवस्था से प्रारम्भ करके और इतिहास की शुरुआत से सभी कमांडों को पुनः प्रारम्भ करके पहुँचा जा सकता है।<ref name=":0" />* आंशिक चेकपॉइंट':' यह सबसे अधिक उपयोग की जाने वाली रणनीति है। बदली हुई एप्लिकेशन स्थिति सहेजी जाती है और राज्य के हिस्से को अनडू करने के साथ आगे के मूल्य पर वापस सेट किया जाता है।
* उलटा कार्य: उलटा कार्य को सहेजे गए राज्य की जानकारी की आवश्यकता नहीं है। उदाहरण के लिए, वस्तु को सापेक्ष मात्रा में वापस ले जाकर हिलना उलटा हो सकता है।<ref name=":0" />चयनात्मक अनडू करने के लिए राज्य को बचाने के लिए पर्याप्त जानकारी नहीं है।
* उलटा कार्य: उलटा कार्य को सहेजे गए राज्य की जानकारी की आवश्यकता नहीं है। उदाहरण के लिए, वस्तु को सापेक्ष मात्रा में वापस ले जाकर हिलना उलटा हो सकता है।<ref name=":0" />चयनात्मक अनडू करने के लिए राज्य को बचाने के लिए पर्याप्त जानकारी नहीं है।



Revision as of 11:01, 7 March 2023

अनडू इंटरेक्शन तकनीक है जिसे कई कंप्यूटर प्रोग्राम में स्थापित किया जाता है। यह प्रपत्र में किए गए अंतिम परिवर्तन को मिटा देता है, और इसे पुरानी स्थिति में पुनः लाता है। कुछ और उन्नत प्रोग्रामों में, जैसे कि ग्राफिक्स सॉफ्टवेयर, अनडू करें संपादित की जा रही फ़ाइल पर की गई अंतिम कमांड को नहीं लेता है। अनडू करने की संभावना के साथ, उपयोगकर्ता त्रुटि के डर के बिना अन्वेषण और कार्य कर सकते हैं, क्योंकि उन्हें सरलता से अनडू किया जा सकता है।

अनडू करने की अपेक्षाओं को समझना सरल है: पूर्वानुमेय कार्यक्षमता के लिए, और सभी अनडू कमांडों को सम्मलित करने के लिए [1] सामान्यतः अनडू तब तक उपलब्ध होता है जब तक कि उपयोगकर्ता सभी निष्पादित कार्यों को अनडू नहीं कर देता है। लेकिन कुछ क्रियाएं ऐसी हैं जो अनडू सूची में संग्रहीत नहीं होती हैं, और इस प्रकार उन्हें अनडू नहीं किया जा सकता है। उदाहरण के लिए, फ़ाइल को सहेजना अनडू नहीं है, लेकिन सूची में कतारबद्ध है, यह दिखाने के लिए कि इसे निष्पादित किया गया था। स्क्रॉलिंग या चयन क्रिया जो सामान्यतः संग्रहीत नहीं होती है, और इस प्रकार अनडू नहीं होती है।[2] अनडू का विपरीत रिडू होता है। रीडो कमांड अनडू के विपरीत होता है ये बफर को अग्रिम स्थिति में आगे बढ़ाता है।

अनडू कार्यक्षमता के सामान्य घटक वे कमांड्स हैं जो उपयोगकर्ता द्वारा निष्पादित किए गए थे, इतिहास बफ़र जो पूर्ण किए गए कार्यों को संग्रहीत करता है, इतिहास बफ़र को नियंत्रित करने के लिए अनडू करें I प्रबंधक, और उपयोगकर्ता के साथ इंटरैक्ट करने के लिए उपयोगकर्ता इंटरफ़ेस होता है।[3] अधिकांश माइक्रोसॉफ़्ट विंडोज़ अनुप्रयोगों में, अनडू कमांड कुंजी के लिए कुंजीपटल संक्षिप्त रीति Control-Z या Alt+Backspace होता है, और पुनः करने के लिए शॉर्टकट Control-Y याCC+Shift key+Z होता है।

अधिकांश एप्पल मैकिंटोश अनुप्रयोगों में, अनडू कमांड का शॉर्टकट कमांड कण्ट्रोल की -जेड है, और रीडो के लिए शॉर्टकट कमांड कण्ट्रोल की -शिफ्ट की-जेड है।

सभी प्लेटफॉर्म पर, अनडू करके कार्यों को संपादन मेनू के माध्यम से भी एक्सेस किया जा सकता है।

इतिहास

लोगों द्वारा कंप्यूटर का उपयोग करने के पश्चात् उनके उत्तर के आधार पर कंप्यूटर में किसी ऑपरेशन को अनडू करने की क्षमता का स्वतंत्र रूप से आविष्कार किया गया था।[4] ब्राउन विश्वविद्यालय में 1968 में प्रारम्भ हुई फ़ाइल पुनर्प्राप्ति और संपादन प्रणाली के बारे में कहा जाता है कि यह पहली कंप्यूटर-आधारित प्रणाली है, जिसमें अनडू फीचर है।[5][6] वारेन टिटेलमैन ने 1971 तक अनडू कार्य के साथ बीबीएन-लिस्प के भाग के रूप में प्रोग्रामर सहायक विकसित किया है।[7] ज़ेरॉक्स पीएआरसी ब्रावो (सॉफ्टवेयर) टेक्स्ट एडिटर के पास 1974 में अनडू कमांड था।[8] आईबीएम के लांस ए. मिलर और जॉन सी. थॉमस की 1976 की शोध रिपोर्ट, इंटरएक्टिव सिस्टम के उपयोग में व्यवहारिक विषय,[9] नोट किया गया कि यह उपयोगकर्ताओं को कम से कम तत्काल अनडू कमांड 'वापस लेने' की अनुमति देने के लिए काफी उपयोगी होगा।[10] पीएआरसी (कंपनी) अनुसंधान केंद्र के प्रोग्रामरों ने कीबोर्ड शॉर्टकट Ctrl-Z को अनडू कमांड दिया, जो व्यक्तिगत कंप्यूटर युग में पाठ संपादकों और वर्ड प्रोसेसर की महत्वपूर्ण विशेषता बन गई है।[11] 1980 में, ज़ेरॉक्स पीएआरसी के लैरी टेस्लर ने एप्पल कंप्यूटर में काम करना प्रारम्भ किया था। वहाँ, उन्होंने और बिल एटकिंसन ने एप्पल लिसा पर मानक स्थिरता के रूप में अनडू कमांड की उपस्थिति की वकालत की थी। एटकिन्सन लिसा के एप्लिकेशन सॉफ़्टवेयर के व्यक्तिगत डेवलपर्स को अनडू और पुनः करने के एकल स्तर को सम्मलित करने में सक्षम था, लेकिन कई स्तरों के लिए पैरवी करने में असफल हो रहा था।[citation needed] जब एप्पल ने लिसा के उत्तराधिकारी, मैकिनटोश को प्रस्तुत किया है, तो यह निर्धारित किया गया कि सभी मानक अनुप्रयोगों में "एडिट" मेनू में पहले कमांड के रूप में "अनडू करें" सम्मलित होना चाहिए,[12] जो आज तक मैकओएस और विंडोज पर मानक बना हुआ है।

बहु-स्तरीय अनडू कमांड 1980 के दशक में प्रस्तुत किए गए थे, जिससे उपयोगकर्ता न केवल सबसे अग्रिम बल्कि कई कार्यों को वापस ले सकते थे।[11]व्यक्तिगत कंप्यूटर सॉफ़्टवेयर से पहले EMACS और अन्य टाइमशेयर स्क्रीन संपादकों के पास यह था। सिग्नस एड पहला अमीगा पाठ संपादक था जिसमें असीमित अनडू / पुनः सुविधा थी। AtariWriter, 1982 में प्रस्तुत किया गया एक वर्ड-प्रोसेसिंग एप्लिकेशन, अनडू चित्रित किया गया। NewWord, 1984 में NewStar द्वारा जारी किया गया एक अन्य वर्ड-प्रोसेसिंग प्रोग्राम था, जिसमें एक अनरेज़ कमांड था।[11]IBM के VisiWord के पास एक अनडिलीट कमांड भी था।

मॉडल अनडू करें और पुनः करें

अनडू मॉडल को रैखिक या गैर-रैखिक के रूप में वर्गीकृत किया जा सकता है। गैर-रैखिक अनडू मॉडल को स्क्रिप्ट मॉडल, यूएस के मॉडल, ट्रायडिक मॉडल और चयनात्मक अनडू में उप-वर्गीकृत किया जा सकता है।[1]

मॉडल के कुछ सामान्य गुण हैं:

  • स्थिर निष्पादन संपत्ति: एक राज्य को कमांडों की एक कमांडित सूची के रूप में दर्शाया गया है। इसका मतलब यह है कि मूल निष्पादन के बाद जिस स्थिति में पहुंचा था, उस राज्य में एक कमांड हमेशा अनडू किया जाता है।[3]* कमजोर स्थिर निष्पादन: इसका मतलब यह है कि यदि अनडू निष्पादित किया जाता है तो सभी कमांड जो अनडू कमांड पर निर्भर करते हैं, कमांड पर निर्भर अनडू होते हैं।
  • स्थिर परिणाम संपत्ति: सूची को छोड़कर इस संपत्ति का अर्थ स्थिर निष्पादन संपत्ति के समान है। कमांडों की कमांडित सूची में सम्मलित है कि उन्हें केवल कमांडों के बजाय निष्पादित किया गया था।
  • क्रमविनिमेय: इसका मतलब है कि दो अलग-अलग कमांडों को अनडू और पुनः करने के बाद पहुंची हुई स्थिति समान होती है जब उन्हें विपरीत क्रम में निष्पादित किया जाता है।
  • न्यूनतर अनडू गुण: यह वर्णन करता है कि कमांड C का अनडू संचालन केवल कमांड C को अनडू करता है और C से छोटे सभी कमांड जो C पर निर्भर हैं।[3]


रैखिक अनडू करें

रैखिक अनडू एक स्टैक (डेटा संरचना) (आखिरी में पहले बाहर (एलआईएफओ) डेटा संरचना) के साथ कार्यान्वित किया जाता है जो सभी निष्पादित कमांडों का इतिहास संग्रहीत करता है। जब कोई नया कमांड निष्पादित किया जाता है तो इसे स्टैक के शीर्ष पर जोड़ दिया जाता है। इसलिए, केवल अंतिम निष्पादित कमांड को अनडू किया जा सकता है और इतिहास से हटाया जा सकता है। अनडू तब तक दोहराया जा सकता है जब तक कि इतिहास खाली न हो।[1]


प्रतिबंधित रैखिक मॉडल

प्रतिबंधित रेखीय मॉडल रेखीय अनडू मॉडल का एक संवर्द्धन है। यह रैखिक अनडू करने के लिए ऊपर वर्णित स्थिर निष्पादन संपत्ति को संतुष्ट करता है, क्योंकि यह मॉडल संपत्ति को नहीं रखता है यदि कोई कमांड किया जाता है जबकि इतिहास सूची में अन्य कमांड सम्मलित होते हैं। नया कमांड जोड़ने से पहले प्रतिबंधित रेखीय मॉडल इतिहास सूची को साफ़ करता है। लेकिन अन्य प्रतिबंध भी उपलब्ध हैं। उदाहरण के लिए, इतिहास सूची का आकार प्रतिबंधित किया जा सकता है या जब एक परिभाषित आकार तक पहुँच जाता है, तो पहले निष्पादित कमांड को सूची से हटा दिया जाता है।[1]


गैर रेखीय अनडू

रैखिक अनडू और गैर-रैखिक अनडू के बीच मुख्य अंतर यह है कि उपयोगकर्ता द्वारा निष्पादित कमांडों को मनमाने क्रम में अनडू करने की संभावना है। उनके पास सबसे अग्रिम कमांड को अनडू करने का मौका नहीं है बल्कि सूची से एक कमांड का चयन करने का मौका है।[3]गैर रेखीय मॉडल के लिए उपवर्ग हैं जो इस मॉडल को लागू करते हैं।

स्क्रिप्ट मॉडल

स्क्रिप्ट मॉडल उपयोगकर्ता क्रियाओं को कमांड की स्क्रिप्ट संपादित करने के रूप में संभालता है। निष्पादित कमांडों की इतिहास सूची को एक स्क्रिप्ट के रूप में व्याख्या की जाती है, एक अनडू प्रभाव को उसी तरह परिभाषित किया जाता है जैसे कि अनडू कार्रवाई पहले कभी नहीं हुई थी।[1]राज्य को अनडू करने के परिणाम के रूप में ऐसा होना चाहिए जैसे कि अनडू कमांड को कभी निष्पादित नहीं किया गया था। इस मॉडल का एक नुकसान यह है कि साइड इफेक्ट से बचने के लिए उपयोगकर्ता को अनडू कमांड और वर्तमान स्थिति के बीच संबंध को जानना होगा। इनमें से एक उदाहरण के लिए दोहराव हो सकता है। अन्य समस्याएँ यह हैं कि यदि बाद के कमांडों को एक अलग स्थिति में पुनः किया जाता है कि वे मूल रूप से प्रत्यक्ष हेरफेर इंटरफेस में निष्पादित किए गए थे, तो मूल उपयोगकर्ता क्रिया की यह पुनर्व्याख्या हमेशा स्पष्ट या अच्छी तरह से परिभाषित नहीं होती है।[1]


यूएस एंड आर मॉडल

इस मॉडल की खास बात यह है कि इसमें एक कमांड को स्किप करने का विकल्प है। इसका मतलब है कि कमांड को पुनः करना छोड़ दिया जा सकता है। स्किप की गई कमांड को स्किप के रूप में चिह्नित किया गया है लेकिन डिलीट नहीं किया गया है। जब नए कमांड निष्पादित किए जाते हैं, तो इतिहास सूची को बरकरार रखा जाता है, इसलिए निष्पादित कमांडों का क्रम उसके साथ पुन: उत्पन्न किया जा सकता है। ऑर्डर को इतिहास के पेड़ के माध्यम से वर्णित किया जा सकता है जो एक निर्देशित ग्राफ है, क्योंकि ग्राफ में एक लिंक बनाने वाली दूसरी शाखा से कमांडों को पुनः जारी रखना संभव है।[1]भले ही कमांडों का सेट सरल और समझने में सरल है, जब उपयोगकर्ता एक से अधिक चरणों को अनडू करना चाहता है, तो लंघन और शाखाओं को जोड़ने वाली जटिल संरचना को समझना और याद रखना कठिन होता है।[1]


ट्रायडिक मॉडल

इस गैर-रैखिक अनडू मॉडल में घुमाने की संभावना अनडू और पुनः करने के अलावा है। इसकी एक ही डेटा संरचना है जो उपर्युक्त मॉडल के रूप में एक इतिहास सूची और एक अलग रीडो सूची है जिसमें रीडो ऑपरेशन सम्मलित हैं। रोटेट ऑपरेशन उसके सामने रीडो लिस्ट की आखिरी कमांड सेट करता है। एक तरफ इसका मतलब यह है कि अगली कमांड को पुनः करने के लिए इसे सामने रखकर चुना जा सकता है। दूसरी ओर, रोटेशन का उपयोग रीडो सूची में उस स्थान का चयन करने के लिए किया जा सकता है जहां अगला अनडू ऑपरेशन कमांड डालेगा।[1]इसलिए रीडो की सूची अनियंत्रित है। एक पृथक कमांड को अनडू करने के लिए, उपयोगकर्ता को कई चरणों को अनडू करना होगा, पुनः करें सूची को घुमाना होगा और फिर कई चरणों को पुनः करना होगा।[1]पुनः करने के लिए सूची को तब तक घुमाना पड़ता है जब तक वांछित कमांड ऊपर न हो।

चयनात्मक अनडू करें

जकुबेक एट अल। कहते हैं कि चयनात्मक अनडू एक विशेषता है जो एक मॉडल प्रस्तुत कर सकता है लेकिन चयनात्मक अनडू के लिए कोई स्पष्ट परिभाषा नहीं है।[3]लेखकों ने उन कार्यों का चयन किया जो एक मॉडल के पास होना चाहिए जब वह चयनात्मक अनडू का समर्थन करता है। इतिहास बफ़र में किसी भी निष्पादित क्रिया को अनडू करना संभव होना चाहिए। अनडू की जा रही कार्रवाई से स्वतंत्र क्रियाओं को अछूता छोड़ देना चाहिए।[3]ठीक वैसे ही किसी भी अनडू कमांड के लिए पुनः करना संभव है। चयनात्मक अनडू के लिए तीसरा कार्य यह है कि प्रत्यक्ष उपयोगकर्ता के अनुरोध के बिना इतिहास बफ़र से कोई भी कमांड स्वचालित रूप से खारिज नहीं किया जा सकता है।[3]चयनात्मक अनडू के लिए लागू होता है कि अनडू और पुनः करना किसी भी संदर्भ के बाहर निष्पादन योग्य है। तीन मुख्य मुद्दे हैं। पहला यह है कि अनडू कमांड मूल संदर्भ से बाहर हो सकते हैं। इसके माध्यम से मृत संदर्भ हो सकते हैं जिन्हें संभालना होगा। दूसरा मुद्दा यह है कि संशोधित कमांडों को अनडू किया जा सकता है और इसलिए इसे हल करना होगा कि अनडू करने के बाद कौन सी स्थिति प्रस्तुत की जाएगी। तीसरा मुद्दा कमांड की समस्याओं को दूर कर रहा है। चयनात्मक अनडू का सूचियों में कोई संकेतक नहीं है, इसलिए इसका मतलब है कि स्टैक से कोई कमांड नहीं छोड़ा जाना चाहिए।[3]


प्रत्यक्ष चयनात्मक अनडू करें

प्रत्यक्ष चयनात्मक अनडू एक इतिहास वृक्ष के साथ प्रतिबंधित रेखीय अनडू का विस्तार है। ऑपरेशन चयनित कमांड की एक प्रति बनाता है, इसे निष्पादित करता है और इसे इतिहास सूची में जोड़ता है। वहाँ दो गैर-रैखिक संचालन चयनात्मक अनडू और चयनात्मक पुनः परिभाषित किए गए हैं, इसलिए यह अधिक सममित है।[1]


बहुउपयोगकर्ता अनुप्रयोग

जब एकाधिक उपयोगकर्ता एक ही प्रपत्र को एक साथ संपादित कर सकते हैं, तो बहु-उपयोगकर्ता अनडू करने की आवश्यकता होती है। वैश्विक बहु-उपयोगकर्ता अनडू प्रपत्र में की गई नवीनतम क्रिया को अनडू करता है, भले ही संपादन किसने किया हो। स्थानीय बहु-उपयोगकर्ता अनडू केवल स्थानीय उपयोगकर्ता द्वारा किए गए कार्यों को अनडू करता है, जिसके लिए गैर-रैखिक अनडू कार्यान्वयन की आवश्यकता होती है।

जहां अनडू का उपयोग कई संपादनों के माध्यम से बैकट्रैक करने के लिए किया जा सकता है, पुनः करें कमांड क्रिया इतिहास के माध्यम से आगे बढ़ता है। नया संपादन करने से सामान्यतः पुनः की जाने वाली सूची साफ़ हो जाती है। यदि एक ब्रांचिंग रीडो मॉडल का उपयोग किया जाता है, तो नया संपादन क्रिया इतिहास को शाखाबद्ध करता है।

अनडू की जा सकने वाली पिछली कार्रवाइयों की संख्या प्रोग्राम, संस्करण और हार्डवेयर या सॉफ़्टवेयर क्षमताओं के अनुसार भिन्न होती है। उदाहरण के लिए, Adobe Photoshop में डिफ़ॉल्ट अनडू करें/पुनः करें स्टैक आकार 20 है लेकिन उपयोगकर्ता द्वारा इसे बदला जा सकता है। दूसरे उदाहरण के रूप में, पहले[when?] Microsoft पेंट के संस्करणों को अनडू करने के लिए केवल तीन संपादनों तक की अनुमति है; विंडोज 7 में प्रस्तुत किए गए संस्करण ने इस सीमा को बढ़ाकर 50 कर दिया।

सरलीकृत, एकल-संपादन अनडू सुविधाएँ कभी-कभी अनडू कमांड को अनडू की जा सकने वाली क्रिया के रूप में मानकर पुनः करना बंद कर देती हैं। इसे फ्लिप अनडू मॉडल के रूप में जाना जाता है, क्योंकि उपयोगकर्ता अनडू कमांड का उपयोग करके दो प्रोग्राम राज्यों के बीच फ़्लिप कर सकता है।[13] 1990 के दशक की शुरुआत में बहु-स्तरीय अनडू के व्यापक रूप से अपनाने से पहले यह मानक मॉडल था।

कार्यान्वयन अनडू करें

अनडू विभिन्न पैटर्न के माध्यम से लागू किया जा सकता है। कमांड पैटर्न और स्मृति चिन्ह पैटर्न सबसे आम पैटर्न हैं।

कमांड पैटर्न

कमांड पैटर्न एक सॉफ्टवेयर डिजाइन पैटर्न है जो ऑपरेशन से कमांड ऑब्जेक्ट में जानकारी को एनकैप्सुलेट करता है। इसका मतलब है कि हर क्रिया एक वस्तु में संग्रहित होती है। सार कमांड वर्ग एक अमूर्त निष्पादन ऑपरेशन को लागू करता है, इसलिए प्रत्येक कमांड ऑब्जेक्ट में एक निष्पादन ऑपरेशन होता है। अनडू के लिए अनएक्सक्यूटेड ऑपरेशन भी होना चाहिए, जो निष्पादित कमांड के प्रभाव को अनडू करता है, जो एक इतिहास सूची में संग्रहीत होते हैं। अनडू और पुनः लागू किया जाता है ताकि सूची को आगे और पीछे से चलाया जा सके जब निष्पादित या अन-निष्पादित कमांड कहा जाता है।[14] एकल अनडू करने के लिए केवल निष्पादित कमांड संग्रहीत किया जाता है। बहु स्तरीय अनडू के विपरीत जहां न केवल कमांडों के साथ इतिहास सूची सहेजी जाती है बल्कि अनडू स्तरों की संख्या भी सूची की अधिकतम लंबाई निर्धारित की जा सकती है।[14]


मेमेंटो पैटर्न

मेमेंटो पैटर्न के साथ किसी वस्तु की आंतरिक स्थिति को संग्रहित किया जाता है। जिस वस्तु में राज्य को सहेजा जाता है, उसे स्मृति चिन्ह कहा जाता है और स्मृति चिन्ह प्रवर्तक के माध्यम से आयोजित किया जाता है। यह एक स्मृति चिन्ह लौटाता है, वर्तमान स्थिति की जानकारी के साथ आरंभ किया जाता है, जब अनडू निष्पादित किया जाता है, ताकि राज्य की जाँच की जा सके। स्मृति चिन्ह केवल प्रवर्तक के लिए दृश्यमान है।

मेमेंटो पैटर्न में अनडू मैकेनिज्म को केयरटेकर कहा जाता है। यह स्मृति चिन्हों को सुरक्षित रखने के लिए जिम्मेदार है लेकिन इनकी सामग्री को कभी नहीं बदलें। अनडू करने के लिए कार्यवाहक प्रवर्तक के एक स्मृति चिन्ह का अनुरोध करता है और फिर अनडू आवेदन करता है।[14]

अनडू तंत्र का अधिकांश भाग विशिष्ट अनुप्रयोगों या कमांड वर्गों पर निर्भरता के बिना कार्यान्वित किया जा सकता है। इसमें इतिहास सूची का प्रबंधन, इतिहास स्क्रॉलर, अनडू और पुनः करने के लिए मेनू प्रविष्टियाँ और अगले उपलब्ध कमांड के नाम के आधार पर मेनू प्रविष्टियों का अद्यतन सम्मलित है।[1]

प्रत्येक कमांड क्लास में एक डू विधि होती है जिसे कमांड निष्पादित होने पर कहा जाता है। अनडू-मेथड डू-मेथड के रिवर्स ऑपरेशन को लागू करता है। रिवर्स को लागू करने के लिए कई अलग-अलग रणनीतियां हैं।

  • पूर्ण चेकपॉइंट':' इसका अर्थ है कि कमांड निष्पादित होने के बाद पूर्ण स्थिति सहेजी जाती है। यह सबसे सरल कार्यान्वयन है, लेकिन अत्यधिक कुशल नहीं है और इसलिए अक्सर इसका उपयोग नहीं किया जाता है।
  • पूर्ण पुन: चलाएँ: इसलिए, प्रारंभिक अवस्था को सहेजा जाता है और इतिहास की सूची में प्रत्येक राज्य को प्रारंभिक अवस्था से प्रारम्भ करके और इतिहास की शुरुआत से सभी कमांडों को पुनः प्रारम्भ करके पहुँचा जा सकता है।[1]* आंशिक चेकपॉइंट':' यह सबसे अधिक उपयोग की जाने वाली रणनीति है। बदली हुई एप्लिकेशन स्थिति सहेजी जाती है और राज्य के हिस्से को अनडू करने के साथ आगे के मूल्य पर वापस सेट किया जाता है।
  • उलटा कार्य: उलटा कार्य को सहेजे गए राज्य की जानकारी की आवश्यकता नहीं है। उदाहरण के लिए, वस्तु को सापेक्ष मात्रा में वापस ले जाकर हिलना उलटा हो सकता है।[1]चयनात्मक अनडू करने के लिए राज्य को बचाने के लिए पर्याप्त जानकारी नहीं है।

यह भी देखें

संदर्भ

  1. 1.00 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.10 1.11 1.12 1.13 Berlage, Thomas (1994-09-01). "कमांड ऑब्जेक्ट्स के आधार पर ग्राफिकल यूजर इंटरफेस के लिए एक चयनात्मक पूर्ववत तंत्र". ACM Transactions on Computer-Human Interaction. 1 (3): 269–294. doi:10.1145/196699.196721. ISSN 1073-0516. S2CID 11848679.
  2. Myers, Brad A.; Kosbie, David S. (1996-04-13). पुन: प्रयोज्य पदानुक्रमित कमांड ऑब्जेक्ट. ACM. pp. 260–267. doi:10.1145/238386.238526. ISBN 0897917774. S2CID 17033810.
  3. 3.0 3.1 3.2 3.3 3.4 3.5 3.6 3.7 Jakubec, Karel; Polák, Marek; Nečaský, Martin; Holubová, Irena (2014). "Undo/Redo Operations in Complex Environments". Procedia Computer Science. 32: 561–570. doi:10.1016/j.procs.2014.05.461. ISSN 1877-0509.
  4. Moran, Chuktropolis Welling (2013-01-01). इंटरएक्टिव समय (Ph.D.). La Jolla: University of California, San Diego. ISBN 9781303194450.
  5. Barnet, Belinda (2014-12-01). Memory Machines: The Evolution of Hypertext (in English). Anthem Press. p. 108. ISBN 9781783083442. But the most popular development for novice users in FRESS was not its capacity to accommodate multiple displays and users; it was the 'undo' feature – the feature of which van Dam is most proud (van Dam 2011). FRESS pioneered a single-level undo for both word processing and hypertext. Every edit to a file was saved in a shadow version of the data structure, which allowed for both an 'autosave' and an undo. Brown staff and students understood immediately the importance and usefulness of this feature (van Dam 1999).
  6. Barnet, Belinda (2010-01-01). "Crafting the User-Centered Document Interface: The Hypertext Editing System (HES) and the File Retrieval and Editing System (FRESS)". Digital Humanities Quarterly. 4 (1).
  7. Teitelman, Warren (1972-01-01). "Automated Programmering: The Programmer's Assistant". Proceedings of the December 5–7, 1972, Fall Joint Computer Conference, Part II. AFIPS '72 (Fall, part II). New York, NY, USA: ACM: 917–921. doi:10.1145/1480083.1480119. S2CID 1276566.
  8. "Bravo Manual in Alto Non-Programmers Guide, p. 52" (PDF). Retrieved 2014-03-29.
  9. Miller, Lance A.; Thomas, John C. (1977-09-01). "इंटरएक्टिव सिस्टम के उपयोग में व्यवहार संबंधी मुद्दे". International Journal of Man-Machine Studies. 9 (5): 509–536. doi:10.1016/S0020-7373(77)80002-3. ISSN 0020-7373.
  10. Miller, Lance A.; John C. Thomas Jr. (December 1976). "इंटरएक्टिव सिस्टम के उपयोग में व्यवहार संबंधी मुद्दे". Archived from the original (PDF) on May 27, 2012. Retrieved 2011-05-21.
  11. 11.0 11.1 11.2 {{cite web | url=https://www.nytimes.com/2009/09/20/magazine/20FOB-onlanguage-t.html | title=पूर्ववत करने का युग| access-date=2013-06-02 | author=Ben Zimmer | date=2009-09-15 | work=New York Times}
  12. Apple Computer, Inc. (1984). "User Interface". मैकिंटोश के अंदर, खंड I.
  13. Roberta Mancini, Alan Dix and Stefano Levialdi. 2006. "Reflections on Undo"
  14. 14.0 14.1 14.2 Design patterns : elements of reusable object-oriented software. Gamma, Erich. Reading, Mass.: Addison-Wesley. 1995. ISBN 0201633612. OCLC 31171684.{{cite book}}: CS1 maint: others (link)


बाहरी संबंध