إضافة متغيرات للـenum وإنشاء كونستركتور

في هذا الدرس سنقوم بتطوير الـ enum وإضافة متغيرات للثوابت، فالـ enum تسمح لنا بإضافة متغيرات ودوال وكونستركتور كغيرها من الكلاسات لكن مع بعض الاختلافات البسيطة:

لنفترض أننا نرغب في إضافة بعض الخصائص التي يجب أن تتصف بها كل فاكهة، هذه الخصائص هي:

1- وزن الفاكهة (يتم تعريفه كـ int)

2- السعرات الحرارية في الفاكهة (يتم تعريفه كـ int)

3- طعم الفاكهة (يتم تعريفه كـ String)

يتم تعريف هذه المتغيرات بداخل الـ enum كالتالي:

public enum Fruits {
	
	ORANGE,APPLE,LEMON,BANANA;
	
        //attribute خصائص الثوابت
	private int weight;
	private int calories;
	private String taste;
	
	}	
}

 

بمجرد تعريف المتغيرات بداخل الـ enum فإن كل ثابت تم تعريفه سابقاً سيمتلك نسخة خاصة من هذه المتغيرات

بمعنى أن الثوابت  ORANGE,APPLE,LEMON,BANANA كل واحد منها سيكون لديه خصائص: هي weight و calories و taste.

لكن كيف يتم تمهيد قيم هذه المتغيرات لكل ثابت؟؟

يتم تمهيد القيم بخطوتين:

1- كتابة القيم بين قوسين بعد كل ثابت

2- إنشاء كونستركتور يقوم بإستقبال القيم المكتوبة بين اقواس كل ثابت وتخزينها في خصائص الثابت

لننظر أولاً لكيفية كتابة القيم بين أقواس الثوابت:

public enum Fruits {
	
	ORANGE(80,40,"acid"),APPLE(100,60,"sweet"),LEMON(20,8,"acid"),
	BANANA(120,150,"sweet");
	
	private int weight;
	private int calories;
	private String taste;
}

 

هل انتهينا من تمهيد القيم؟؟ كلا.

لا زلنا بحاجة لإضافة كونستركتور يستقبل القيم الموجودة بين اقواس الثوابت ومن ثم تمهيد قيم متغيراتها.

لاحظ أن براميتر الكونستركتور يجب أن يكون مطابق لترتيب الـ argument التي يرسلها كل ثابت

بمعنى أنه عندما تحتوي اقواس الثابت قيم من نوع (int, int ,String) فإنه يجب تعريف كونستركتور يحتوي على براميتر ترتيبه كالتالي (int, int ,String)

شاهد كيف يتم تعريف الكونستركتور كي تتضح لك الصورة:


public enum Fruits {
	
	ORANGE(80,40,"acid"),APPLE(100,60,"sweet"),LEMON(20,8,"acid"),
	BANANA(120,150,"sweet");
	
	private int weight;
	private int calories;
	private String taste;
	
	// this is the constructor
	private Fruits(int wei, int cal, String tas) {
		weight = wei;
		calories = cal;
		taste = tas;

	}
}

 

كما لاحظت تم تعريف براميترات بترتيب مطابق للقيم المرسلة من قبل الثوابت، وهي كالتي (int wei, int cal, String tas)

ومن ثم تمهيد القيم لكل متغير بإسناد قيمة البراميتر للمتغير.

ملاحظة: يجب أن يكون الكونستركتور نوعه private ( لا يسمح بأن يكون public)

بإمكانك إستخدام كلمة this بداخل الكونستركتور لتجنب حدوث خطأ في حال تسمية البراميترات بنفس إسم المتغير

ليكون شكل الكونستركتور كالتالي:

	private Fruits(int wei, int cal, String tas) {
		this.weight = wei;
		this.calories = cal;
		this.taste = tas;

	}

 

بهذه الطريقة نكون قد أتممنا إضافة المتغيرات للثوابت، وتمهيد قيمها بالكونستركتور

تذكر أنه عند تعريف متغير من الـ enum يتم إستدعاء الكونستركتور وإرسال القيم من الثابت (arguments) وإستقبالها بباراميتر الكونستركتور.

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

 

التعليقات (0)

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !