Encapsulation

שפת Java – הפעם נלמד encapsulation.

בעזרת Encapsulation ניתן להגן על איברים של המחלקה.
כפי שניתן לראות בדוגמה הזאת, יש גישה לאיברים של המחלקה
רק דרך הפונקציות.

public class TestClass {
private String x;
private String y;
private int z;


public int getX() {
return x;
}

public String getY() {
return y;
}

public String getZ() {
return z;
}

public void setZ( int z) {
this.z = z;
}

public void setX(String x) {
this.x = x;
}

public void setY( String y) {
this.y = y;
}
}

הסבר:

בעזרת מילה שמורה private אנחנו מגבילים גישה למחלקות יורשות לפרמטרים:
x,y,z

public class TestClass {
private String x;
private String y;
private int z;
}

עם זאת נותנים גישה לפרמטרים האלו תוך שימוש בפונקציות.

כי לפונקציות שלנו יש גישה מסוג public – פתוחות למחלקות יורשות (לאומת private אשר לא פתוחות למחלקות יורשות).

לדוגמה:
* מטודה setX מקבלת פרמטר X מסוג STRING ומאתחלת X של המחלקה בעזרת this.x

* מטודה getX מחזריה את X של המחלקה

public class TestClass {
private String x;
private String y;
private int z;


public void setX(String x) {
this.x = x;
}

public int getX() { 
return x; }
}

דוגמה:

public class MainTestClass{

   public static void main(String args[]) {
      TestClass obj = new TestClass();
      obj.setX("Xtest");
      obj.setZ(12);
      obj.setY("Ytest");

      System.out.print("X: " + obj.getX() + " Z: " + obj.getZ());
   }
}

בצבע כחול מוגדר אובייקט בשם obj מבוסס על המחלקה TestClass

בצבע ירוק בעזרת פונקציה setX מאתחלים X בערך "Xtest"

כזכור:

public class TestClass {
private String x;

public void setX(String x) {
this.x = x;
}
}

כנ"ל בעזרת פונקציה setZ מאתחלים Z בערך 12

public class TestClass {
private int z;

public void setZ( int z) {
this.z = z;
}

}

ובעזרת פונקציה setY מאתחלים Y בערך "Ytest" מסוג STRING

public class TestClass {
private String y;

public void setY( String y) {
this.y = y;
}
}

בסוף מדפיסים

System.out.print("X: " + obj.getX() + " Z: " + obj.getZ());

כאשר פונקציה obj.getX מחזריה ערך X שזה "Xtest"
ופונקציה obj.getZ מחזריה ערך Z שזה 12

דרך אגב אם היינו מנסים לגשת ישירות לפרמטרים האלו (X, Z) כגון

System.out.print("X: " + obj.x + " Z: " + obj.z);

אז היינו מקבלים שגיאת גישה כי לפרמטרים האלו יש סוג פרטי PRIVATE

לכן:

X: Xtest Z: 12

כי:

public class TestClass {
private String x;
private int z;


public int getX() {
return x;//Xtest 
}


public String getZ() {
return z;//12
}


}
דילוג לתוכן