Properties
ในบทนี้ คุณจะได้เรียนรู้เกี่ยวกับการใช้งาน property ในภาษา Visual Basic เพื่ออ่านและเขียนข้อมูลจากสมาชิกภายในคลาส
Property เป็นตัวแปรประเภทหนึ่งของคลาสที่ให้โปรแกรมสามารถอ่านและเขียนค่าภายในคลาสได้อย่างยืดหยุ่น โดย Property นั้นสามารถทำงานได้เหมือนกับตัวแปรและเมธอดในเวลาเดียวกัน ในการใช้ Property นั้นมักจะใช้ร่วมกับการเข้าถึงสมาชิกที่เป็น Private
ภายในคลาส
ในการเข้าถึงผ่าน Property นั้นจะเข้าถึงเมธอดพิเศษที่เรียกว่า accessors
ซึ่งมีดังนี้
- เมธอด Get สำหรับส่งค่ากลับจาก Property มันถูกเรียกใช้เมื่อเราอ่านค่า Property ใน expression ใดๆ
- เมธอด Set สำหรับกำหนด Property ไปยังตัวแปรภายในคลาส หรือเราเรียกว่าการกำหนดค่าให้กับ Property
การใช้งาน Property
ต่อไปมาดูตัวอย่างการใช้งาน Property ในภาษา Visual Basic โดยเราจะใช้ Property สำหรับการกำหนดและเข้าถึงชื่อและนามสกุลให้กับตัวแปรภายในคลาส Person
Class Person
Dim fristName As String
Dim lastName As String
Property Name() As String
Get
Return fristName & " " & lastName
End Get
Set(ByVal Value As String)
Dim name() = Value.Split(" ")
fristName = name(0)
lastName = ""
If name.Count > 1 Then
lastName = name(1)
End If
End Set
End Property
End Class
Module PropertyExample
Sub Main()
Dim person = New Person()
person.Name = "Mateo Marcus"
Console.WriteLine(person.Name)
person.Name = "Danny"
Console.WriteLine(person.Name)
End Sub
End Module
ในตัวอย่างเรามีคลาส Person
ซึ่งภายในมีตัวแปร fristName
และ lastName
โดยเราจะใช้ Property ในการอ่านและกำหนดค่าตัวแปรเหล่านี้แทนการเข้าถึงตัวแปรโดยตรงจากออบเจ็ค
Property Name() As String
Get
Return fristName & " " & lastName
End Get
Set(ByVal Value As String)
Dim name() = Value.Split(" ")
fristName = name(0)
lastName = ""
If name.Count > 1 Then
lastName = name(1)
End If
End Set
End Property
ภายในคลาส เราได้สร้าง Property Name
โดย Property นี้มีคุณสมบัติในการเขียนข้อมูลซึ่งจะผ่านเมธอด Set และอ่านข้อมูลซึ่งจะผ่านเมธอด Set
ภายในเมธอด Set คุณจะเห็นว่าเราสามารถกำหนดชือให้กับตัวแปรผ่าน Property Name ได้ โดยสามารถที่จะใส่แค่ชื่อหรือพร้อมทั้งนามสกุล ซึ่งในเมธอดนี้จะมีพารามิเตอร์หนึ่งตัวสำหรับรับข่อมูลเข้ามาคือ ByVal Value As String
และในเมธอด Get เป็นการส่งค่าชื่อและนามสกุลกลับไปผ่านการเรียกใช้ Property
person.Name = "Mateo Marcus"
Console.WriteLine(person.Name)
คำสั่งต่อมาภายในโมดูล expression person.Name = "Mateo Marcus"
เป็นการเรียกใช้เมธอด Set ของ Property Name และคำสั่ง person.Name
เป็นการรับค่าจากเมธอด Get
Mateo Marcus
Danny
และนี่เป็นผลลัพธ์ของโปรแกรมในการใช้ Property ในภาษา Visual Basic ซึ่งคุณจะเห็นได้ว่าเราไม่ได้เข้าถึงตัวแปรภายในคลาสโดยตรง แต่เราเข้าถึงผ่าน Property แทนและไม่จำเป็นต้องทราบว่าภายในคลาสมีโครงสร้างเป็นยังไง นี่ถือเป็นส่วนหนึ่งของคุณสมบัติ Encapsulation ในการเขียนโปรแกรมเชิงวัตถุ
จากตัวอย่างการใช้งาน Property คุณจะเห็นว่ามันสามารถทำงานได้เหมือนกับเมธอด แต่การใช้งานของมันนั้นเหมือนกับตัวแปรซึ่งง่ายต่อการเข้าถึง
Read-only property
โดยทั่วไปแล้ว Property นั้นจะมีสองเมธอดคือ Get และ Set ซึ่งในบางครั้ง เราจำเป็นที่จะกำหนดให้มันสามารถอ่านได้เพียงอย่างเดียว ซึ่งสามารถทำได้ในภาษา Visual Basic
Class Temperature
Public fahrenheitce As Double
ReadOnly Property Celsius() As String
Get
Return Math.Round((fahrenheitce - 32) / 1.8, 2)
End Get
End Property
End Class
Module Module1
Sub Main()
Dim f = New Temperature()
f.fahrenheitce = 56
Console.WriteLine(f.fahrenheitce & " degree F is " &
f.Celsius & " in degree C")
f.fahrenheitce = 32
Console.WriteLine(f.fahrenheitce & " degree F is " &
f.Celsius & " in degree C")
End Sub
End Module
ในตัวอย่างเป็นการใช้ Property กับการกำหนดอุณหภูมิให้กับตัวแปรภายในคลาส Temperature
โดยปกติอุณหภูมินั้นจะแสดงในรูปแบบขององศาฟาเรนไฮต์ เราใช้สร้าง Property Celsius
ซึ่งมีคุณสมบัติอ่านได้อย่างเดียว โดยการใส่คำสั่ง ReadOnly
ไว้หน้าการประกาศ Property
ถึงแม้คลาสของเราจะเป็นหน่วยองศาแบบองศาฟาเรนไฮต์ แต่เราสามารถอ่านค่าของเซลเซียสได้ผ่าน Property Celsius ที่เราได้กำหนดการทำงานไว้ในเมธอด Get ของมัน
ในบทนี้ คุณได้เรียนรู้เกี่ยวกับ Property ในภาษา Visual Basic และเข้าใจในการใช้เมธอด Get และ Set ของ Property โดยการใช้งาน Property นั้นถูกนำไปใช้อย่างหลากหลายในการเขียนโปรแกรมภาษา Visual Basic โดยเฉพาะอย่างยิ่งในการเขียนโปรแกรมเชิงวัตถุ