การเขียนโปรแกรมเชิงวัตถุ
ในบทก่อนหน้า คุณได้เรียนรู้พื้นฐานการเขียนโปรแกรมของภาษา Visual Basic ทั้งไปหมดแล้ว ในความเป็นจริง นั่นเพียงพอที่คุณจะสามารถนำไปต่อยอดและสร้างโปรแกรมขึ้นมา หลังจากบทนี้ไป คุณจะได้เรียนรู้การเขียนโปรแกรมเชิงวัตถุในภาษา Visual Basic ซึ่งถือว่าเป็นเนื้อหาขั้นสูงในการเขียนโปรแกรม และอย่างไรก็ตามมันจำเป็นสำหรับการเขียนโปรแกรมที่โปรแกรมเมอร์ทุกคนต้องทราบหลักการของมัน เพราะว่ามันมีคุณสมบัติต่างๆ มากมายที่จะทำให้การเขียนโปรแกรมยืดหยุ่นและมีประสิทธิภาพมากขึ้น
การเขียนโปรแกรมเชิงวัตถุภาษา Visual Basic
การเขียนโปรแกรมเชิงวัตถุ หรือ Object-oriented programming (OOP) นั้นเป็นรูปแบบการเขียนโปรแกรมในแนวคิดของออบเจ็ค ซึ่งจะประกอบไปด้วยส่วนที่เป็นข้อมูล (fields) และการกระทำเมธอด (methods) โดยการออกแบบสำหรับการเขียนโปรแกรมเชิงวัตถุนั้น ออบเจ็คแต่ละอ็อบเจ็คจะทำงานและมีปฏิสัมพันธ์กันผ่านเมธอด ออบเจ็คนั้นสร้างมากจากคลาส นั่นหมายความว่าออบเจ็คเป็นตัวแปรของคลาส หรือกล่าวอีกนัยหนึ่ง คลาสเป็นเทมเพลตในการนำมาสร้างออบเจ็ค
ในภาษา Visual Basic เวอร์ชันล่าสุดนั้นคือ Visual Basic .NET 2015 ซึ่งสนับสนุนการเขียนโปรแกรมเชิงวัตถุอย่างสมบูรณ์ เหมือนภาษาอื่นๆ เช่น ภาษา Java ภาษา C# หรือ ภาษา C++ เป็นต้น ภาษาเหล่านี้เป็นภาษาระดับสูงและภาษา Visual Basic ก็เช่นกัน ดังนั้นการเขียนโปรแกรมเชิงวัตถุจึงเป็นแนวคิดที่ออกแบบมาในสภาพแวดล้อมของการเขียนโปรแกรมในโลกแห่งความจริง ซึ่งมองทุกอย่างเป็นเหมือนออบเจ็ค ซึ่งมีคุณสมบัติและการกระทำ
คุณสมบัติของการเขียนโปรแกรมแบบ OOP
เนื่องจากการเขียนโปรแกรมเชิงวัตถุนั้นถูกออกแบบมาเพื่อปรับปรุงรูปแบบการพัฒนาจากแบบเดิม ที่แต่ก่อนเรียกว่าการเขียนโปรแกรมแบบลำดับขั้นตอน (procedural programming) นี่ทำให้เกิดเป็นการเขียนโปรแกรมแบบขึ้นกับเหตุการณ์แทน (event-driven programming) โดยโปรแกรมจะทำงานเป็นอิสระต่อกันขึ้นกับสิ่งที่เกิดขึ้นกับออบเจ็คนั้น อย่างไรก็ตาม มันยังสามารถทำงานได้ดีถึงแม้รูปแบบการเขียนโปรแกรมจะเป็น functional programming และนี่เป็นคุณสมบัติต่างๆ ของการเขียนโปรแกรมเชิงวัตถุ
- Inheritance คือการสืบทอดความสามารถจากคลาสหนึ่งไปยังอีกคลาสหนึ่ง มันเป็นคุณสมบัติที่สำคัญในการที่จะใช้โค้ดเดิมซ้ำโดยที่ไม่ต้องเขียนใหม่
- Polymorphism คือคุณสมบัติของการมีได้หลายรูปแบบของออบเจ็ค ทำให้สามารถเรียกใช้งานออบเจ็คได้อย่างยืดหยุ่น
- Interfaces คือการกำหนดหน้าที่การทำงานให้กับออบเจ็คหรือเรียกกันว่าส่วนติดต่อระหว่างออบเจ็ค ซึ่งจะแตกต่างกันออกไปสำหรับออบเจ็คแต่ละประเภท
- Encapsulation คือการซ่อนข้อมูลของออบเจ็คจากโลกภายนอก (data hiding) และกำหนดขอบเขตในการเข้าถึงข้อมูลของออบเจ็ค
- Operator Overloading คือคุณสมบัติในการเปลี่ยนแปลงการทำงานของ operator ให้ทำงานกับออบเจ็คได้ตรงตามที่ต้องการ
ซึ่งคุณจะได้เรียนในบทต่อไปของบทเรียนภาษา Visual Basic นี้
ตัวอย่างแนวคิดของ OOP
ต่อไปมาดูตัวอย่างแนวคิดของการเขียนโปรแกรมเชิงวัตถุในภาษา Visual Basic เราจะยกตัวอย่างโดยการใช้รถเป็นออบเจ็ค ยกตัวอย่างเช่น รถจะมีคุณสมบัติ เช่น ชื่อของรถ สี จำนวนเชื้อเพลิง และมีการทำงานคือ วิ่ง เติมเชื่อเพลง หรือการดูสี ดังนั้นเรานำมาจำแนกสำหรับนำไปสร้างคลาส จะได้ข้อมูลดังนี้
- Fields: ชื่อของรถ สี และจำนวนเชื้อเพลิง
- Methods: การวิ่ง การเติมเชื้อเพลิง การดูสีของมัน
หลังจากที่เราได้แยกแยะสมาชิกแต่ละแบบ เราจะสามารถเขียนไดอะแกรมของคลาส Car ได้ดังนี้
จากรูปภาพดังกล่าวเป็น UML diagram ที่สร้างโดยเครื่องมือในโปรแกรม Visual Studio เพื่อดูองค์ประกอบของคลาส ซึ่ง UML diagram เป็นการออกแบบคลาสในรูปแบบของรูปภาพ ในทางกลับกันเราสามารถสร้างแผนภาพดังกล่าวจากโค้ดได้เช่นกัน และนี่เป็นโค้ดของจากคลาสจาก diagram ข้างบน
Public Class Car
Dim name As String
Dim color As String
Dim fuel As Double
Sub Run()
' Code to run the car
fuel = fuel - 1
End Sub
Sub AddFuel(ByVal n As Double)
fuel = fuel + n
End Sub
Function GetColor() As String
Return color
End Function
End Class
ในตัวอย่าง ป็นคลาสที่ชื่อว่า Car ซึ่งคลาสก็คือเทมแพลตที่เราสามารถนำไปสร้างออบเจ็คได้ไม่จำกัด โดยออบเจ็คจะมีตัวแปรและการกระทำที่เหมือนกัน แต่สิ่งที่แตกต่างกันคือค่าภายใน เช่น เราสร้างรถที่มีสีแดง รถที่มีสีเขียว หรือสีนำเงิน รถทั้งสามคันนี้คือ 3 ออบเจ็คที่สร้างจากคลาส Car มันจะมีการกระทำของเมธอดที่เหมือนกันคือการวิ่ง การเติมเชื้อเพลง และการดูสีของมัน
ในบทนี้ เราได้แนะนำเกี่ยวให้คุณรู้จักแนวคิดของการเขียนโปรแกรมเชิงวัตถุ และได้ทราบคุณสมบัติที่สำคัญ เช่น Inheritance Encapsulation และ Polymorphism ที่จะเป็นจุดเริ่มต้นของบทต่อๆ ไปในการเขียนโปรแกรมเชิงวัตถุในบทเรียนภาษา Visual Basic นี้