Javaأهمية النوع enum
في حماية الكود في جافا
في البداية أسلوب كتابة الكود الذي ستتعلمه من المثال التالي ستتعامل معه كثيراً عند بناء تطبيقات فيها واجهة مستخدم و عند التعامل مع قواعد البيانات حيث ستتعامل مع دوال كثيرة يمكنك تمرير أنواع محددة من القيم لها.
الآن لنفترض أننا أردنا بناء لعبة يستطيع اللاعب أن يلعبها بثلاث مستويات كالتالي:
- مستوى سهل ( Easy ).
- مستوى متوسط ( Normal ).
- مستوى صعب ( Hard ).
الآن لكتابة كود هذه اللعبة و الذي قد يتألف من آلاف الأسطر البرمجية و التي ستكون موزعة على عدة ملفات جافا بدون القلق من مسألة كيف سيعرف كل مبرمج في الفريق كيف سيتم تحديد مستوى الصعوبة في اللعبة و لضمان أن تعرفوا جميعكم المستويات المتوفرة فيها و لتعلموا بنفس المنطق, فإنه من الأفضل أن يتم تعريف enum
واحد إسمه Level
و بداخله ثلاث ثوابت إسمها EASY
و NORMAL
و HARD
.
و عندها سيقوم كل مبرمج بكتابة الكود بناءاً على قيمة هذه الثوابت كما فعلنا في المثال التالي.
مثال
هذا الملف مسؤول عنه مبرمج واحد و هو لتحديد المستويات المتوفرة في اللعبة.
// وضعنا فيه 3 ثوابت Level إسمه enum هنا قمنا بتعريف public enum Level { EASY, NORMAL, HARD }
هذا الملف مسؤول عنه مبرمج واحد و يكتب فيه الرسائل التي يمكن أن تظهر في اللعبة على أساس مستوى اللعبة.
public class Messages { // لها لتحديد الرسالة التي سيتم إظهارها للمستخدم Level عند إستدعاء هذه الدالة يجب تمرير إحدى ثوابت الكلاس // لها فإنها ستظهر خطأ أمام المبرمج الذي قام باستدعائها مباشرةً أثناء كتباة الكود Level إذا لم يتم تمرير إحدى ثوابت الـ public void showPlayMessage(Level userLevel) { switch (userLevel) { case EASY: System.out.println("Play Game In Easy Mode"); break; case NORMAL: System.out.println("Play Game In normal Mode"); break; case HARD: System.out.println("Play Game In Hard Mode"); break; } } }
هذا الملف مسؤول عنه مبرمج واحد و هو ما سيشغل اللعبة.
public class Main { public static void main(String[] args) { // لتطبع رسالة على أساسه Level.EASY مع تمرير الثابت showPlayMessage() و استدعاء الدالة Messages هنا قمنا بإنشاء كائن من الكلاس Messages msg = new Messages(); msg.showPlayMessage(Level.EASY); } }
سنحصل على النتيجة التالية عند التشغيل.