البرمجة

تنفيذ Undo و Redo في Java

في هذا المقال، سنستكشف كيفية تنفيذ عمليات التراجع (Undo) والإعادة (Redo) على السلاسل في لغة البرمجة Java باستخدام هياكل البيانات الأساسية. تعتبر هذه العمليات أمورًا حيوية في بيئة البرمجة، خاصة عند العمل مع السلاسل، وستقدم هذه المقالة نظرة عامة عن كيفية تنفيذها بشكل فعّال باستخدام هياكل بيانات مدمجة في لغة Java.

للبداية، يتوجب علينا إنشاء مجموعة خاصة بالسلاسل وتنظيمها باستخدام هيكل بيانات مناسب. يمكننا تحقيق ذلك من خلال استخدام مصفوفة أو قائمة متسلسلة لتخزين السلاسل. سنقوم بطلب عدد السلاسل والسلاسل ذاتها من المستخدم باستخدام واجهة المستخدم.

java
import java.util.ArrayList; import java.util.Scanner; public class UndoRedoStrings { private static ArrayList stringPool = new ArrayList<>(); private static int currentIndex = -1; public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("Enter the number of strings: "); int numberOfStrings = scanner.nextInt(); scanner.nextLine(); // consume the newline character // Prompt the user to enter strings for (int i = 0; i < numberOfStrings; i++) { System.out.print("Enter string " + (i + 1) + ": "); String inputString = scanner.nextLine(); addString(inputString); } // Perform Undo and Redo operations undo(); redo(); // Close the scanner scanner.close(); } // Method to add a string to the pool private static void addString(String str) { // Clear redo history when a new string is added stringPool.subList(currentIndex + 1, stringPool.size()).clear(); stringPool.add(str); currentIndex++; } // Method to perform Undo operation private static void undo() { if (currentIndex >= 0) { System.out.println("Undo Operation: Removing last entered string."); currentIndex--; } else { System.out.println("Cannot perform Undo. No more operations to undo."); } } // Method to perform Redo operation private static void redo() { if (currentIndex < stringPool.size() - 1) { System.out.println("Redo Operation: Adding back the last removed string."); currentIndex++; } else { System.out.println("Cannot perform Redo. No more operations to redo."); } } }

في هذا الكود، تم تعريف مصفوفة stringPool لتخزين السلاسل ومؤشر currentIndex يحدد الموقع الحالي في المصفوفة. تم استخدام واجهة المستخدم لجمع عدد معين من السلاسل. يتم تنظيم عمليات Undo وRedo بشكل مناسب، مع مراعاة تحديث المؤشر currentIndex بناءً على العمليات المنفذة.

هذا المثال يوضح كيف يمكن تنفيذ عمليات التراجع والإعادة على السلاسل باستخدام Java، ويعكس التفاعل الديناميكي مع المستخدم من خلال واجهة المستخدم البسيطة.

المزيد من المعلومات

بالطبع، دعونا نقوم بفحص المزيد من التفاصيل حول كيفية تنفيذ عمليات Undo و Redo على السلاسل باستخدام هياكل البيانات في لغة Java.

في الشيفرة المرفقة، قمنا بتقديم فئة تسمى UndoRedoStrings، والتي تشكل الهيكل الأساسي لتنظيم وتنفيذ عمليات التراجع والإعادة. استخدمنا ArrayList لتخزين السلاسل، حيث تتيح لنا هذه الهيكلية توسيع الحجم ديناميًا بحيث يمكننا إدراج وحذف السلاسل بسهولة.

أما بالنسبة للطريقة التي تم بها تنفيذ Undo و Redo، فيتم ذلك عن طريق تحديث المؤشر currentIndex بناءً على العمليات المنفذة. عند إضافة سلسلة جديدة، يتم حذف التاريخ الخاص بعمليات Redo لضمان عدم وجود عمليات غير صحيحة.

قدمنا أيضًا استخدام واجهة المستخدم للتفاعل مع المستخدم، حيث يُطلب منه إدخال عدد السلاسل والسلاسل ذاتها. تم تقديم دوال undo() و redo() لتنفيذ عمليات التراجع والإعادة على التوالي.

هذا الكود ليس فقط عبارة عن حلاً لسؤال المقابلة، بل يبرز أيضًا الأسلوب الأمثل في تنظيم هياكل البيانات وتنفيذ العمليات في بيئة Java. استفادة كبيرة يمكن أن تكون من توسيع هذا النموذج لتنفيذ ميزات إضافية أو تحسينه بطرق مختلفة، مما يظهر قدرة المبرمج على التفكير الإبداعي والمهارات العملية في مجال تصميم البرمجيات.

زر الذهاب إلى الأعلى