נושאים פעיליםנושאים פעילים  הצגת רשימה של חברי הפורוםרשימת משתמשים  חיפוש בפורוםחיפוש  עזרהעזרה
  הרשמההרשמה  התחברותהתחברות RSS עדכונים
תיכנות
RSS UnderWarrior Forums : RSS תיכנות
נושא

נושא: C# פעולת undo

שליחת תגובהשליחת נושא חדש
כותב
הודעה << נושא קודם | נושא הבא >>
alon
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 27 July 2010 בשעה 18:44 | IP רשוּם
ציטוט alon

אני עושה פרוייקט סיום לקורס בו אני לומד,  ואני רוצה לעשות פעולת UNDO .

למשהו יש רעיון איך עושים את זה - אני כותב ב- C#

חזרה לתחילת העמוד הצג את כרטיס החבר של alon חפש הודעות אחרות של alon בקר בדף הבית של alon
 
ניר
מנהל האתר
מנהל האתר
סמל אישי

הצטרף / הצטרפה: 12 January 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 3296
נשלח בתאריך: 27 July 2010 בשעה 20:01 | IP רשוּם
ציטוט ניר

אתה שואל שאלה יפה. הפעם האחרונה שהתעסקתי hands-on על קוד C#
היתה לפני לא מעט שנים, אבל אני מאמין שאפשר לתת לך כאן
כיוון.

דבר ראשון - UNDO של מה? של פעולות במערכת שלך או פעולות על
אחד האוייבטקים (נגיד richtextbox?). אני יוצא כרגע מתוך הנחה
שמדובר על מערכת שלך.

הפתרון שמקובל לרוב הוא שימוש במחסנית, כשבמחסנית אתה שומר
נתונים שמאפשרים לך לעבור בין מצבים. בין אם לשמור את המצב
הכללי של האובייקט לפני ואחרי, אם זה אובייקט קטן, ובין אם
לשמור מה הפעולה שבוצעה, כדי שתוכל להחזיר לאחור.

__________________
מספר האייסיקיו שלי ו/או כתובת ה-MSN שלי אינם מהווים מוקד תמיכה
חזרה לתחילת העמוד הצג את כרטיס החבר של ניר חפש הודעות אחרות של ניר בקר בדף הבית של ניר
 
shoshan
מנהל האתר
מנהל האתר
סמל אישי

הצטרף / הצטרפה: 16 July 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 4637
נשלח בתאריך: 27 July 2010 בשעה 22:18 | IP רשוּם
ציטוט shoshan

כמובן שאם תממש מחלקה לכל פעולה אז תוכל לעשות את כל הביטולים גנריים, כי כל מחלקה
תדע לבצע את עצמה ולבטל את עצמה מ/על "האובייקט"

__________________
עד מתי רשעים יעלוזו?

עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
חזרה לתחילת העמוד הצג את כרטיס החבר של shoshan חפש הודעות אחרות של shoshan בקר בדף הבית של shoshan
 
NewMan
משתמש מתחיל
משתמש מתחיל


הצטרף / הצטרפה: 06 May 2011
מדינה: Israel
משתמש: מנותק/ת
הודעות: 29
נשלח בתאריך: 06 May 2011 בשעה 15:38 | IP רשוּם
ציטוט NewMan

מחסנית זה טוב רק כשאינך צריך פעולת REDO הופכית, אם כן תצטרך 2 מחסניות וביצוע Push וPop , לא כ"כ יעיל.

מה שאני עשיתי, השתמשתי בוקטור לאחסון הנתונים ומספר שמצביע איזו פעולה היא הנוכחית. בעת שהמשתמש מבצע פעולה נוספת הוקטור גדל ואיתו המצביע. פעולת UNDO מסיגה את המצביע כך שיצביע על פעולה קודמת, וREDO מקדם אותו. זה הכל.

אם בוצעו מספר פעולות UNDO ואח"כ פעולה חדשה (לא REDO) מוחקים את כל הפעולות שאחרי הנוכחית, ומוסיפים את החדשה במקומם. אפשר לקבוע מספר נוסף שמציין את קיבולת המערך, ופשוט להקטין אותו למידה הרצויה. כל הפעולות שאח"כ 'יזדבלו'.

חזרה לתחילת העמוד הצג את כרטיס החבר של NewMan חפש הודעות אחרות של NewMan
 
GenEric
משתמש מתחיל
משתמש מתחיל
סמל אישי

הצטרף / הצטרפה: 26 March 2011
מדינה: Israel
משתמש: מנותק/ת
הודעות: 8
נשלח בתאריך: 07 May 2011 בשעה 21:52 | IP רשוּם
ציטוט GenEric

שלום

אני מציע לעיין ב-Design Pattern, הנקרא Command Pattern. הוא נותן פתרון OOD לנושא פעולות, כולל התייחסות לניהול היסטוריה. ניתן לקרוא עליו למשל בספר Gang of Four, שמומלץ באופן כללי לכל מי שרוצה ללמוד תבניות תכן.

כמו כן, יש כמובן מלא חומר באינטרנט.

בהצלחה.

www.devartplus.com



__________________
www.devartplus.com
חזרה לתחילת העמוד הצג את כרטיס החבר של GenEric חפש הודעות אחרות של GenEric בקר בדף הבית של GenEric
 

אם ברצונך להגיב לנושא זה עליך קודם להתחבר
אם אינך רשום/ה כבר עליך להרשם

  שליחת תגובהשליחת נושא חדש
גרסת הדפסה גרסת הדפסה

קפיצה לפורום
אינך יכול/ה לשלוח נושאים חדשים בפורום זה
אינך יכול/ה להגיב לנושאים בפורום זה
אינך יכול/ה למחוק את הודעותיך ותגוביך בפורום זה
אינך יכול/ה לערוך את הודעותיך ותגובותיך בפורום זה
אינך יכול/ה לצור סקרים בפורום זה
אינך יכול/ה להצביע בסקרים בפורום זה