Jump to content


Windows Server 2012

- - - - -

Encapsulation ในเชิงของ Java Programming คืออะไรครับ


  • Please log in to reply
3 replies to this topic

#1 kaijeaw111

kaijeaw111

    Newbie

  • Members
  • Pip
  • 42 posts

Posted 28 April 2003 - 06:06 PM

Encapsulation ในเชิงของ Java Programming คืออะไรครับ

#2 นายเอก

นายเอก

    Topgun

  • Topgun
  • 40 posts

Posted 28 April 2003 - 11:40 PM

Encapsulation คือการรวม data และ method ทั้งหลายที่เกี่ยวข้องกัน และทำงานร่วมกันเอาไว้ใน object หนึ่งๆ นอกจากนี้แล้วยังมีการซ่อนรายละเอียดของการทำงานของ method ต่างๆใน object เอาไว้ และไม่ให้ object อื่นๆสามารถที่จะเข้าไปแก้ไข data ได้โดยตรง เช่น การแก้ไขโดยการเรียก object.data เป็นต้น การติดต่อสื่อสารกันระหว่าง object จะติดต่อกันผ่าน interface ที่กำหนดเอาไว้ ซึ่งตรงนี้จะก่อให้เกิดความสะดวกในการจัดการโค้ดต่างๆครับ เช่นถ้าเราเปลี่ยนลักษณะการเขียนโค้ดใน class ที่ encapsule เอาไว้ การเปลี่ยนของเราจะไม่ไปกระทบกับ class อื่นๆ (class อื่นๆไม่ต้องมาแก้โค้ดกันใหม่)

ตัวอย่างของ class ที่มีการ encapsule

public class Test{

   private int data = 10;   // ทำเป็น private เพื่อที่ object อื่นๆจะเข้ามาแก้ไขโดยตรงไม่ได้

  

  public void setData(int data){   // Interface ให้ object อื่นๆมาแก้ไข data

       this.data = data;

   }



  public int getData(){   // Interface ให้ object อื่นๆมารับค่า data

       data = doSomthing();

       return data;

   }



   private int doSomething(){   // ซ่อน method เพื่อไม่ให้ object อื่นๆเห็น หรือ เรียก method ได้โดยตรง

       data = data * 5;

       return data;

   }

จากโค้ดข้างบน ถ้าผมทำ method doSomething() ให้เป็น public (ไม่ได้ซ่อนเอาไว้) ถ้าตอนหลังผมเกิดแก้ไขอะไรเพิ่มเติมเป็นแบบนี้

public class Test{

   private int data = 10;   

  

  public void setData(int data){ 

       this.data = data;

   }



  public int getData(){

       data = doSomthing();

       data = doAnotherThing();

       return data;

   }



   public int doSomething(){ 

     data = data * 5;

       return data;

   }



   public int doAnotherThing(){

       data = data + 5;

       return data;

    }

}  

object อื่นที่เคยเรียก method doSomething() โดยตรงเพื่อจะเอาค่า data จะได้ค่าที่ไม่ถูกต้องครับ (เพราะผมเพิ่ม method doAnotherThing() เข้าไปเพื่อแก้ไข data )

ปัญหาที่ว่าจะหมดไปถ้าเราทำการซ่อน method ต่างๆเอาไว้ และให้ object อื่นๆติดต่อผ่านทาง interface ซึ่งได้แก่ getData และ setData แทนครับ

#3 jsapDB

jsapDB

    Junior Member

  • Members
  • Pip
  • 65 posts

Posted 29 April 2003 - 01:24 PM

อ๋อแบบนี้นี่เอง แต่ก่อนผมเข้าใจคำว่า อินเตอร์เฟต เป็นแบบ ที่ต้องอิมพลีเม้นต์ เลยงงมาจนบัดนี้

#4 นายเอก

นายเอก

    Topgun

  • Topgun
  • 40 posts

Posted 29 April 2003 - 01:37 PM

ครับ ใช้ชื่อว่า interface เหมือนกันแต่คนละแบบ interface ที่ผมพูดถึงในหัวข้อนี้คือ interface ที่ใช้ได้การติดต่อสื่อสารกันระหว่าง object ต่างๆครับ :D




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users