การเขียนโปรแกรมเชิงวัตถุ (Object-Oriented Programming)

การเขียนโปรแกรมเชิงวัตถุ (Object-Oriented Programming)
สำหรับคนที่เคยเรียนโปรแกรมมิ่งมาบ้างแล้ว โดยเฉพาะคนที่เคยศึกษาภาษา Cมา มักจะคุ้นเคยกับการเขียนโปรแกรมไปเรื่อยๆ แล้วแบ่งฟังชั่นการทำงานไปเรื่อยๆ เพื่อให้โปรแกรมเป็นไปตามต้องการ ซึ่งวิธีนี้ก็ไม่ได้ผิดอะไร แต่จะมีความยุ่งยากมาก เมื่อต้องเขียนโปรแกรมที่มีความซับซ้อนขึ้นไป เพราะเราไม่สามารถมองโค้ดขึ้นมาอย่างเป็นรูปธรรมได้
 
มองอย่างง่ายๆ ปกติแล้ว เวลาเราเขียนแบบเดิม(ต่อไปนี้จะเรียกว่า Structural Programming) เราจะมองถึงขั้นตอนการทำงานเป็นหลัก ให้ทำงานตามลำดับชั้น ไปเรื่อยๆให้งานเสร็จสมบูรณ์ 

 
แต่เมื่อเราเข้ามาสู่โลกของการเขียนโปรแกรมแบบ OOP แล้ว เราจะไม่มองถึงการทำงานอย่างเป็นขั้นตอนเป็นหลัก แต่เราจะแยกการทำงานออกเป็นส่วนต่างๆ ถ้าจะลองเปรียบเทียบกัน ก็จะทำได้ดังนี้
 
Structural Programming
Object-Oriented Programming
เขียนโปรแกรมสร้างรถ
สร้างฟังชั่นการทำงานของรถขึ้นมา เช่นวิ่ง เบรก เร่งเครื่อง ฯลฯ แล้วนำฟังชั่นการทำงานมาทำอย่างต่อเนื่อง เพื่อให้โปรแกรมทำงานได้
สร้างล้อ โครงรถ ยาง ฯลฯ แยกออกจากกัน โดยแต่ละส่วนมีการทำงานเป็นของตัวเอง เช่น เครื่องยนต์ สามารถหมุนล้อได้ แล้วให้แต่ละส่วน ทำงานร่วมกัน
ลองมองดีๆแล้ว สำหรับคนที่เพิ่งเริ่มเขียนโปรแกรม อาจมองว่า การเขียนโปรแกรมแบบ OOP เป็นการเขียนที่ทำให้งานซับซ้อนขึ้น และเสียเวลา ซึ่งนั่นเป็นการมองเพียงผิวเผิน แต่ถ้าเราค่อยๆดูแล้ว ข้อดีของ OOP ก็สามารถจำแนกออกมาได้ดังนี้
  1. เพราะว่าเราสร้างส่วนต่างๆแยกกัน ฉะนั้น เมื่อมีการทำงานใดๆขัดข้อง เราจึงสามารถหาทางแก้ได้ง่ายกว่าการงมโค้ด
  2. สมมุติว่าเราต้องการเปลี่ยนคุณสมบัติบางอย่าง เช่นต้องการเปลี่ยนล้อให้เป็นชนิดอื่น เราสามารถสร้างล้อชนิดใหม่ขึ้นมาแล้วใส่ลงไปแทนได้เลย โดยไม่ต้องยุ่งกับโค้ดส่วนอื่นๆ
  3. สมมุติว่าเราต้องการสร้างโปรแกรมใหม่ ที่จะใช้ล้ออีกครั้ง เราไม่จำเป็นต้องเขียนล้อขึ้นมาใหม่ ไม่แม้แต่ต้องก็อปปี้วาง แต่เราสามารถนำมาใช้ได้เลย
เมื่อรู้ถึงข้อดีอย่างนี้แล้ว ก็ควรถึงเวลาที่เราจะเริ่มศึกษาให้ลึกซึ้งขึ้นไป
 
OOP นั้น ประกอบด้วย 3 หลักสำคัญ ดังนี้
  1. Encapsulation -> การห่อหุ้ม
  2. Polymorphism -> ความหลากหลาย
  3. Inheritance -> การสืบทอด
ดังนั้น ภาษาคอมพิวเตอร์ ไม่ว่าภาษาใดๆ ที่มีหลักการครบถ้วนดังนี้ จะถือว่าภาษานั้นๆเป็น OOP ทั้งสิ้น (จากบทความที่แล้วนอกจากภาษา C ถือเป็นภาษาแบบ OOP ทั้งหมด) แม้กระทั่ง Actionscript 3.0 ขึ้นไปบน Flash ก็ถือเป็น OOP เช่นกัน
 
จากหลักการทั้ง 3 ของ OOP คือ Encapsulation, Polymorphism และ Inheritance จะขออธิบายหลักการทำงานคร่าวๆ ดังนี้
 

Encapsulation -> การห่อหุ้ม

การห่อหุ้มในที่นี้นั้น จะหมายถึงการที่ไม่ยอมให้ผู้ที่ไม่ต้องการ เข้ามายุ่งภายในส่วนที่เราต้องการปกปิดไว้ เช่นเราสามารถกำหนดให้ ตัวโปรแกรม เข้าถึงได้เฉพาะบางฟังชชั่นที่เรากำหนดไว้ให้เท่านั้นได้
 

Polymorphism -> ความหลากหลาย

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

Inheritance -> การสืบทอด

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

Leave a Reply

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