التجريد Abstraction في الجافا هو طريقة لاخفاء تفاصيل التنفيذ Implementation لبعض العمليات و التركيز فقط على الهدف من التنفيذ. هناك طريقتين لتنفيذ التجريد في الجافا: استخدام الصنف المجرد abstract class واستخدام الواجهة Interface.

abstract

abstract هي احد الكلمات المحجوزة في الجافا وتستخدم مع الاصناف (class) و الدوال / الطرق methods.

الصنف المجرد abstract class

هو صنف تسبقة كلمة abstract ولا نستطيع ان ننشأ منه كائنات لكن نستطيع ان نرثه وان ننشأ من الاصناف الابناء child classes كائنات.

تشغيل
// abstract نعرف صنف 
abstract class Counter{
	// attributes نستطيع تعريف صفات
	int state;
	
	// Constructor ستطيع تعريف دالة الانشاء
	Counter(int state){
		this.state = 0;
	}
	//   methods نستطيع تعريف طرق
	int count(){
		++ state;
		return state;
	}
}

class Main{
	public static void main(String[] args){
		
		// abstract class يحدث خطأ لاننا لانستطيع ان ننشأ كائنات من الصنف المجرد 
		Counter counter = new Counter(5);// ُError
	}
}

الدوال / الطرق المجردة abstract methods

هي الدوال او الطرق methods التي عندما نعرفها تسبقها كلمة abstract، ويجب اذا عرفنا طريقة مجردة ان يكون الصنف ايضا مجرد. وهي طرق ليس لها تنفيذ Implementation ويتم تعريف تنفيذها في الاصناف الابناء.

تشغيل
// abstract نعرف صنف 
abstract class Counter{
	// attributes نستطيع تعريف صفات
	int state;
	
	// Constructor ستطيع تعريف دالة الانشاء
	Counter(int state){
		this.state = state;
	}
	
	// abstract نعرف طريقة مجردة 
	abstract int count();
}

// (Parent Class) نستطيع الوصول الى كل صفات و طرق الثنف الاب
class FootBallCounter extends Counter{

  FootBallCounter(int state){
      super(state);
  }

	// abstract نعرف طريقة تنفيذ الطريقة المجردة 
	int count(){
		++ state;
		if(state > 45) {
			state = 0;
		}
		return state;
	}
}

class Main{
	public static void main(String[] args){
		
		// Counter نستطيع ان نعرف من نوع 
		Counter counter = new FootBallCounter(0);
		System.out.println(counter.count());// 1
		
		// FootBallCounter نستطيع ان نعرف من نوع 
		FootBallCounter footballCounter = new FootBallCounter(0);
		System.out.println(footballCounter.count());// 1
	}
}
يجب ملاحظة انه في الصنف الاب (Parent Class) عند تعريف الطريقة المجردة abstract استبدلنا جسم (body)الطريقة، ب النقطة المنقوطة ";" 

guest
0 تعليقات
Inline Feedbacks
اظهر كل التعليقات