encapsulation คือ? หลักการที่โปรแกรเมอร์ต้องรู้

encapsulation คือ

encapsulation คือหลักการข้อแรกของ OOP หรือ Object-Oriented Programming โดย OOP concept ประกอบ ด้วยหลักการสี่อย่าง คือ encapsulation, abstraction, inheritance และ Polymorphism เราจะเริ่มต้นพูดถึงหลักการ Encapsulation ก่อนจากนั้นจะพูดเรื่องของ OOP และหลักการอื่นๆใน OOP

oop ข้อแรก encapsulation คือ?

คำอธิบายโดยย่อ

Encapsulation คือการปกปิดข้อมูลโดย เก็บคุณสมบัติของ class ให้เป็น private และ ให้เข้าถึงหรือเปลี่ยนแปลงผ่านช่องทางที่เป็น public ที่เรากำหนดไว้เท่านั้น

คำอธิบายฉบับเต็ม

การที่จะเข้าหลักการ Encapsulation นั้นก็ต่อเมื่อ object เก็บ state ให้เป็น private อยู่ใน class โดย object อื่นๆจะไม่สามารถเข้าถึง state ที่เป็น private ได้โดยตรง แต่ถึงเข้าถึงผ่าน public function แทนที่นี้ลองมายกตัวอย่างเผื่ออธิบายชนิดที่เด็กประถมเข้าใจกัน

สมมุติว่าเรากำลังสร้างเกมส์เกี่ยวกับสัตว์เลี้ยง โดยมีคนและสุนัขโดยสามารถติดต่อสื่อสารกันได้เราต้องการ encapsulate คุณสมบัติของสุนัขให้อยู่ใน Class Dog โดยหน้าตาแผนภาพก็จะประมาณนี้

encapsulation คือ

สมมุติว่าเรากำลังสร้างเกมส์เกี่ยวกับสัตว์เลี้ยง โดยมีคนและสุนัขโดยสามารถติดต่อสื่อสารกันได้เราต้องการ encapsulate คุณสมบัติของสุนัขให้อยู่ใน Class Dog โดยหน้าตาแผนภาพก็จะประมาณนี้

ให้มี Class Dog ที่มีคุณสมบัติคือ

  • Hungry (ความหิว)
  • Energy (พลังงาน)

และมีความสามารถ คือ

  • bark() หรือการเห่า

คิดตามหลักความเป็นจริงแล้วสิ่งที่พูดถึงด้านบนนั้นเป็น คุณสมบัติและความสามารถส่วนตัวของสุนัข โดยคนไม่สามารถเปลี่ยนแปลงหรือทำให้สิ่งเหล่านั้นเกิดขึ้นได้ ดังนั้นๆ Hungry และ Energy จึงเป็น Private Field ส่วน Bark กับเป็น Private Method

แต่สิ่งที่คนสามารถทำได้คือ ให้อาหาร และ เล่นกับสุนัข โดยการเล่นและให้อาหารสุนัขจะทำให้คุณสมบัติส่วนตัวของสุนัขเกิดการเปลี่ยนแปลงได้ ดังนั้น

Play และ Feed จึงเป็น Public Method

คิดว่าคำอธิบายข้างต้นน่าจะทำให้ผู้อ่านเข้าใจเรื่อง Encapsulation แล้วทีนี้เรามารู้จัก OOP และหลักการอื่นๆกัน

oop มีความสำคัญอย่างไร ?

การมีความเข้าใจในหลักการทั้งสี่ของ OOP หรือ Object-Oriented Programming จะทำให้เราสามารถเขียนโค้ดที่สะอาดตาอ่านง่ายและบำรุงรักษาง่ายยิ่งขึ้น และหลายครั้งที่มีการถามถึงเรื่องของ OOP ในการสัมภาษณ์งาน ตำแหน่ง Software Developer หรือ Programmer อีกด้วย ถ้าเราสามารถตอบพร้อมยกคัวอย่างประกอบได้อย่างชัดเจนแล้วก็จะถือเป็นแต้มบวกอย่างมาก

OOP ข้ออื่นๆนอกจาก Encapsulation

oop ข้อสอง abstraction

คำอธิบายโดยย่อ

Abstractiion Concept คือการที่ Class เปิดเผยเฉพาะส่วนที่จำเป็น โดยไม่จำเป็นให้ส่วนที่เรียกใช้ต้องรู้รายละเอียดภายใน

คำอธิบายฉบับบเต็ม 

Concept Abstraction นั้นเป็นเหมือนส่วนต่อขยายของ Encapsulation โดยส่วนใหญ่เมื่อ Codebase ของเรามีขนาดใหญ่ขึ้นเรื่อยก็จะมีการติดต่อสื่อสารระหว่าง Object มากขึ้นเรื่อยๆ และ ทำให้เกิดปัญหา Code ซับซ้อนขึ้นโดยปริยาย

Abstraction คือ concept ที่ออกแบบมาเพื่อแก้ปัญหาเหล่านี้

การใช้ Concept Abstraction หมายความว่า  Object ควรที่จะเปิดเผยเฉพาะ ส่วนที่จำเป็นต่อการใช้งาน object นั้น โดยระบบการทำงานที่เปิดเผยให้ object อื่นเห็นนั้นควรจะซ่อนความซับซ้อนในการทำงานไว้ภายใน class โดยไม่จำเป็นต้องเปิดเผยให้ภายนอกรู้

oop ข้อสาม inheritance

คำอธิบายโดยย่อ

แนวคิดในการแชร์  Logic ที่เหมือนกันระหว่าง class โดยการสืบทอดความสามารถจาก parent class ไปยัง child class

คำอธิบายฉบับบเต็ม 

อีกเรื่องหนึ่งที่เป็นปัญหาของการเขียน OOP คือ Object ที่เขียนขึ้นมานั้นคล้ายกันมาก โดยมีการใช้ Logic เดียวกันแต่ไม่ได้เหมือนกันทั้งหมด

Inheritance concept ถูกนำมาช่วยให้เราสามารถ ใช้งาน. Logic ที่เหมือนกันร่วมกันได้ และแยกส่วนที่ต่างกันออกไปในแต่ละ classs

Inheritance แปลเป็นไทยว่าการสืบทอด concept คือการสร้าง (child) class ที่สืบทอดมาจากอีก (parent) class หนึ่ง Child class โดย child class สามารถใช้ field และ method ของ parent class ได้ และ สามารถเพิ่มเติมส่วนที่เป็นเอกลักษณ์ของตัวเองลงไป

oop ข้อสี่ polymorphism

คำอธิบายโดยย่อ

ต่อเนื่องจาก Inheritance Polymorphism คือการที่ Parent class กำหนดคุณสมบัติไว้และให้ child class ไประบุรายละเอียดของคุณสมบัติเหล่านั้นเอง 

คำอธิบายฉบับเต็ม 

เมื่อมีการใช้ Inheritance แล้วลองนึกถึงสถานการณ์ที่เราต้องการเก็บ Child Class เข้าไปใน List โดยเราจะมองว่าทุก element ใน list มีคุณสมบัติเหมือนกัน แม้ว่าจะมีการระบุรายละเอียดที่แตกต่างกันก็ตาม เช่น สุนัข(Dog), แมว(Cat) และ นก(Bird) เราสามารถมองทั้งสามเป็นสัตว์เลี้ยงเหมือนกัน แต่ก็มีลักษณะที่แตกต่างกันอยู่ ในตัวอย่างนี้เราจะยกเรื่องการออกเสียงมาพูดถึง

สรุป

หากอยากอ่านเกี่ยวกับ OOP พร้อมตัวอย่างที่ชัดเจนมากขึ้นให้ อ่านบทความสอน OOP ของเราได้ การเรียนรู้ว่า Encapsulation คืออะไรเป็นพื้นฐานสำคัญที่จะเขียนโปรแกรมได้อย่างยั่งยืน และขอให้ทุกคนสนุกกับการเขียนโปรแกรม

Leave a Comment

Your email address will not be published. Required fields are marked *