คลาส
ในบทนี้ คุณจะได้เรียนรู้เกี่ยวกับคลาสและการสร้างคลาสในภาษา 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 รวมถึงการสร้างคอนสตรัคเตอร์ และในบทต่อไปเราจะนำคลาสไปสร้างออบเจ็ค