การเขียนโปรแกรมเชิงวัตถุ

1 October 2016

ในบทก่อนหน้า คุณได้เรียนรู้พื้นฐานการเขียนโปรแกรมของภาษา 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 of class Car in Visual Studio

จากรูปภาพดังกล่าวเป็น 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 นี้

บทความนี้เป็นประโยชน์หรือไม่? Yes · No