คลาส

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

คลาส คืออะไร

ในการเขียนโปรแกรมเชิงวัตถุ (Object-oriented programming) คลาส คือโค้ดของโปรแกรมที่เป็นต้นแบบในการนำไปสร้างออบเจ็ค โดยมีการกำหนดค่าเริ่มต้นสำหรับตัวแปร (fields) และการกำหนดการกระทำของออบเจ็ค (methods) และคลาสอาจจะประกอบไปด้วยคอนสตรัคเตอร์ ซึ่งเป็นเมธอดพิเศษที่จะทำงานในตอนที่ออบเจ็คถูกสร้าง คลาสใช้สำหรับการนำไปสร้างออบเจ็ค เราเรียกออบเจ็คว่าตัวแปรของคลาส (instance of class) หรือกล่าวอีกนัยหนึ่งคลาสเป็นประเภทข้อมูลของออบเจ็ค

ในการสร้างคลาสในภาษา Visual Basic จะใช้คำสั่ง Class และจบด้วย End Class ภายในบล็อคคำสั่ง จะเป็นการกำหนดสมาชิกของคลาส เช่ย ตัวแปร เมธอด และคอนสตรัคเตอร์ มาดูตัวอย่างการสร้างคลาส

Public Class Person

    Public name As String
    Public birthYear As Integer

    Sub SetName(ByVal s As String)
        name = s
    End Sub

    Function GetName()
        Return name
    End Function

    Function GetAge()
        Return Date.Today.Year - birthYear
    End Function

End Class

ในตัวอย่างเราได้สร้างคลาสที่ชื่อว่า Person โดยกำหนดการเข้าถึงของคลาสนี้เป็นแบบ Public ซึ่งคำสั่งนี้เป็น access specifier แบบสาธารณะ นั่นหมายความว่ามันสามารถเข้าถึงได้จากทุกที่ในโปรแกรม คุณจะได้เรียนในบทของ Encapsulation

Dim name As String
Dim birthYear As Integer

ภายในคลาส เราได้ประกาศสมาชิกตัวแปรสองตัวสำหรับคลาสนี้ ภายในบล็อคคำสั่งของคลาสเราประกาศตัวแปร name เป็นตัวแปร String สำหรับในการเก็บชื่อ และตัวแปร birthYear เป็นตัวแปร Integer สำหรับเก็บปีเกิด และมีระดับการเข้าถึงเป็น Public โดยพื้นฐาน

Sub SetName(ByVal s As String)
    name = s
End Sub

Function GetName()
    Return name
End Function

Function GetAge()
    Return Date.Today.Year - birthYear
End Function

เราได้สร้างสามเมธอดสำหรับการทำงานของคลาสนี้ เมธอด SetName() ใช้สำหรับการกำหนดชื่อ เมธอด GetName() ส่งค่าของชื่อกลับไป และเมธอด GetAge() เป็นการรับค่าอายุโดยคำนวณจากปีเกิดและปีปัจจุบัน

ในตอนนี้เรายังไม่ได้ทำอะไรกับคลาส ซึ่งมันจะทำงานได้ก็ต่อเมื่อเราได้นำไปสร้างออบเจ็ค ซึ่งตัวแปรและเมธอดเหล่านี้จะถูกเรียกใช้ผ่านออบเจ็ค หรือ instance ของคลาส

คอนสตรัคเตอร์

คอนสตรัคเตอร์ (constructor) เป็นเมธอดชนิดพิเศษในการเขียนโปรแกรมเชิงวัตถุ โดยมันจะถูกเรียกใช้อัตโนมัติเมื่อออบเจ็คถูกสร้าง ในภาษา Visual Basic คอนสตรัคเตอร์นั้นจะใช้คำสั่ง New สำหรับชื่อของมัน และคอนสตรัคเตอร์มักจะใช้สำหรับการกำหนดค่าเริ่มต้นให้กับออบเจ็ค และคอนสตรัคเตอร์จะไม่มีการส่งค่ากลับ

มาดูตัวอย่างการประกาศคลาสพร้อมกับคอนสตรัคเตอร์

Public Class Person

    Dim name As String
    Dim birthYear As Integer

    Sub New()

    End Sub

    Sub New(ByVal n As String)
        name = n
    End Sub

    Sub New(ByVal n As String, ByVal b As Integer)
        name = n
        b = b
    End Sub

    Sub SetName(ByVal s As String)
        name = s
    End Sub

    Function GetName()
        Return name
    End Function

    Function GetAge()
        Return Date.Today.Year - birthYear
    End Function

End Class

ในโค้ดตัวอย่าง เราได้ทำการสร้างคลาสพร้อมกัน 3 คอนสตรัคเตอร์ ซึ่งจะถูกใช้สำหรับการกำหนดค่าให้กับออบเจ็คในตอนที่มันถูกสร้าง

Sub New()

End Sub

Sub New(ByVal n As String)
    name = n
End Sub

Sub New(ByVal n As String, ByVal b As Integer)
    name = n
    b = b
End Sub

นี่เป็นส่วนของการสร้างคอนสตรัคเตอร์ คุณสามารถเลือกสร้างออบเจ็คด้วยคอนสตรัคเตอร์อันไหนก็ได้ ในตัวอย่างคุณจะเห็นคอนสตรัคเตอร์อันแรกที่ว่างปล่าว ในความเป็นจริงเมื่อเราสร้างคลาสและไม่ได้สร้างคอนสตรัคเตอร์ ภาษา Visual Basic จะสร้างคอนสตรัคเตอร์ที่ว่างเปล่ามาให้เราด้วย ซึ่งคอนสตรัคเตอร์หรือเมธอดที่มีชื่อเหมือนกันแต่พารามิเตอร์ต่างกันเรียกว่า Constructor Overloading

ในบทนี้ คุณได้เรียนรู้เกี่ยวกับคลาสและการสร้างคลาสในภาษา Visual Basic รวมถึงการสร้างคอนสตรัคเตอร์ และในบทต่อไปเราจะนำคลาสไปสร้างออบเจ็ค