التغليف Encapsulation هي طريقة للتحكم في اخفاء البيانات اي الصفات في الاصناف. وتعطينا القدرة في التجكم بقراءة او تعديل الصفات. ولكي نطبقها نحتاج ان نجعل الصفات خاصة private attributes حيث لا نستطيع قراءنها او تعديلها من خارج الصنف. وفي المقابل نعرف طرق داخل الصنف لا تكون private وهي التي تتحكم في كيفية قراءة وتعديل البيانات.

تشغيل
class Person{
	// private الصفات وتكون خاصة
	private int age;
	private String name;
	private String address;
	
	Person(int age, String name, String address){
		this.age = age;
		this.name = name;
		this.address = address;
	}
	
	// خارج الصنف age نستطيع قراءة الصفة
	public int getAge(){
		return age;
	}
	// خارج الصنف age نستطيع تعديل الصفة
	public void setAge(int age){
		// نستطيع التحكم في التعديل ووضع شروط معينة على القيم
		if(age < 0 ){
			this.age = 0;
		}else{
			this.age = age;
		}
	}
	
	
	//  خارج الصنف و لا نستطيع تعديلها لاننا لم نعرف طريقة لذلك name نستطيع قراءة الصفة
	public String getName(){
		return name;
	}
	
	
	//  خارج الصنف و لا نستطيع قرائتها لاننا لم نعرف طريقة لذلك address نستطيع تعديل الصفة
	public void setAddress(String address){
		this.address =  address;
	}
	
}

class Main{
	public static void main(String[] args){
		
		Person p = new Person(25,"Ahmed", "55 Street");
		
		// private لانها  p.age لا نستطيع استخدام 
    //p.age; //error
		System.out.println(p.getAge()); // 25
		
		p.setAge(26);
		System.out.println(p.getAge()); // 26
		
		// private لانها  p.name لا نستطيع استخدام 
		System.out.println(p.getName()); // Ahmed
		
		
		// private لانها  p.address لا نستطيع استخدام 
		p.setAddress("60 street");
		
	}
}

جرت العادة في الجافا عند قراءة البيانات او تعديلها نستخدم طرق اسمها: الاّخذ (getter) و الواضع (setter). ويكون طريقة كتابتها getXXX و setXXX ونستبدل ال XXX باسم الصفة مع جعل اول حرف فيها كبير (capital) كما في المثال السابق.


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