Programming Basics SQL HTML CSS JavaScript Python C++ Java JavaFX Swing Problem Solving English English Conversations Computer Fundamentals Learn Typing

Javaأهمية النوع enum في حماية الكود في جافا

في البداية أسلوب كتابة الكود الذي ستتعلمه من المثال التالي ستتعامل معه كثيراً عند بناء تطبيقات فيها واجهة مستخدم و عند التعامل مع قواعد البيانات حيث ستتعامل مع دوال كثيرة يمكنك تمرير أنواع محددة من القيم لها.


الآن لنفترض أننا أردنا بناء لعبة يستطيع اللاعب أن يلعبها بثلاث مستويات كالتالي:

  • مستوى سهل ( Easy ).
  • مستوى متوسط ( Normal ).
  • مستوى صعب ( Hard ).

الآن لكتابة كود هذه اللعبة و الذي قد يتألف من آلاف الأسطر البرمجية و التي ستكون موزعة على عدة ملفات جافا بدون القلق من مسألة كيف سيعرف كل مبرمج في الفريق كيف سيتم تحديد مستوى الصعوبة في اللعبة و لضمان أن تعرفوا جميعكم المستويات المتوفرة فيها و لتعلموا بنفس المنطق, فإنه من الأفضل أن يتم تعريف enum واحد إسمه Level و بداخله ثلاث ثوابت إسمها EASY و NORMAL و HARD.
و عندها سيقوم كل مبرمج بكتابة الكود بناءاً على قيمة هذه الثوابت كما فعلنا في المثال التالي.

مثال

هذا الملف مسؤول عنه مبرمج واحد و هو لتحديد المستويات المتوفرة في اللعبة.

Level.java
// وضعنا فيه 3 ثوابت Level إسمه enum هنا قمنا بتعريف
public enum Level {
EASY,
NORMAL,
HARD
}
// وضعنا فيه 3 ثوابت Level إسمه enum هنا قمنا بتعريف public enum Level { EASY, NORMAL, HARD }

هذا الملف مسؤول عنه مبرمج واحد و يكتب فيه الرسائل التي يمكن أن تظهر في اللعبة على أساس مستوى اللعبة.

Messages.java
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 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; } } }

هذا الملف مسؤول عنه مبرمج واحد و هو ما سيشغل اللعبة.

Main.java
public class Main {
public static void main(String[] args) {
// لتطبع رسالة على أساسه Level.EASY مع تمرير الثابت showPlayMessage() و استدعاء الدالة Messages هنا قمنا بإنشاء كائن من الكلاس
Messages msg = new Messages();
msg.showPlayMessage(Level.EASY);
}
}
public class Main { public static void main(String[] args) { // لتطبع رسالة على أساسه Level.EASY مع تمرير الثابت showPlayMessage() و استدعاء الدالة Messages هنا قمنا بإنشاء كائن من الكلاس Messages msg = new Messages(); msg.showPlayMessage(Level.EASY); } }

سنحصل على النتيجة التالية عند التشغيل.

Play Game In Easy Mode

الدورات

أدوات مساعدة

أقسام الموقع

دورات
مقالات كتب مشاريع أسئلة