Linux(mono)でVB、プロパティ(その5)

オブジェクト指向らしくと考え始めると、何も作れなくなるので、素直にプロパティを使ってAnimalに名前も保持することにします。

takk@deb9:~/vbtest$ cat -n test.vb
     1  Imports System.Console
     2
     3  Public Class Animal
     4          Private _classname As String = "哺乳類"
     5          Public ReadOnly Property Classname() As String
     6                  Get
     7                          Return _classname
     8                  End Get
     9          End Property
    10          Private _name As String
    11          Public Property Name() As String
    12                  Get
    13                          Return _name
    14                  End Get
    15                  Set(ByVal value As String)
    16                          _name = value
    17                  End Set
    18          End Property
    19
    20          Sub WhatIsThis()
    21                  WriteLine( _classname & "です")
    22                  WriteLine( "名前は" & _name & "と言います")
    23          End Sub
    24  End Class
    25
    26  Public Class TestClass
    27          <STAThread()> _
    28          Shared Sub Main()
    29                  Dim animal As New Animal()
    30                  animal.Name = "動物ちゃん"
    31                  animal.WhatIsThis()
    32          End Sub
    33
    34  End Class
takk@deb9:~/vbtest$

あと、Tellメソッドも何をするメソッドか分かりにくいので、WhatIsThisという名前にしました。
ビルドして実行。

takk@deb9:~/vbtest$ vbnc test.vb

~省略~

mtakk@deb9:~/vbtest$ mono test.exe
哺乳類です
名前は動物ちゃんと言います
takk@deb9:~/vbtest$

次は、プロパティにチェック処理を追加します。

    10          Private _name As String
    11          Public Property Name() As String
    12                  Get
    13                          Return _name
    14                  End Get
    15                  Set(ByVal value As String)
    16                          If value <> "" Then
    17                                  _name = value
    18                          Else
    19                                  WriteLine("名前をつけてください")
    20                          End If
    21                  End Set
    22          End Property
    23

~省略~

    30  Public Class TestClass
    31          <STAThread()> _
    32          Shared Sub Main()
    33                  Dim animal As New Animal()
    34                  animal.Name = ""
    35          End Sub
    36
    37  End Class

文字列が””だったら、名前をつけてくださいのメッセージを表示する処理を追加しました。

takk@deb9:~/vbtest$ vbnc test.vb

~省略~

takk@deb9:~/vbtest$ mono test.exe
名前をつけてください
takk@deb9:~/vbtest$

名前に文字列を指定した場合は、

    30  Public Class TestClass
    31          <STAThread()> _
    32          Shared Sub Main()
    33                  Dim animal As New Animal()
    34                  animal.Name = "動物ちゃん"
    35          End Sub
    36
    37  End Class

このように実行時に、メッセージが出ません。

takk@deb9:~/vbtest$ vbnc test.vb

~省略~

takk@deb9:~/vbtest$ mono test.exe
takk@deb9:~/vbtest$

チェック処理が使えるってのが、プロパティを使うメリットの一つですね。

コメント

タイトルとURLをコピーしました