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 โดยเฉพาะอย่างยิ่งในการเขียนโปรแกรมเชิงวัตถุ