前回、Hito2というHitoクラスを引き継いだ新しいクラスを作成しました。
使用方法は、
使用方法は、
'変数宣言、
Dim A As New Hito2
Dim A As New Hito2
'変数に値の代入(初期化)です。
With A
.Shincho=170
.Taijyu=50
.Age=25
End With
With A
.Shincho=170
.Taijyu=50
.Age=25
End With
というところまで前回説明しました。
しかし、Hito2クラスを使う変数が数多く必要な場合、
例えば、A~Eまでの5つの変数を使用する場合、
Dim A As New Hito2
Dim B As New Hito2
Dim C As New Hito2
Dim D As New Hito2
Dim E As New Hito2
例えば、A~Eまでの5つの変数を使用する場合、
Dim A As New Hito2
Dim B As New Hito2
Dim C As New Hito2
Dim D As New Hito2
Dim E As New Hito2
として、その後メンバー変数の初期化を
With A
.Shincho=170
.Taijyu=50
.Age=25
End With
以降、BCDEの順番に
・・・・・・・
With E
.Shincho=180
.Taijyu=65
.Age=35
End With
というように記述していくのは、とてもだるい話です。
With A
.Shincho=170
.Taijyu=50
.Age=25
End With
以降、BCDEの順番に
・・・・・・・
With E
.Shincho=180
.Taijyu=65
.Age=35
End With
というように記述していくのは、とてもだるい話です。
そこで、メンバー変数の初期化という処理を実行してくれるメソッド、コンストラクタの登場です。
コンストラクタを設定すれば、変数宣言とメンバー変数の初期化を一回ですることが可能になります。
コンストラクタを設定すれば、変数宣言とメンバー変数の初期化を一回ですることが可能になります。
例えば、こんな感じです。
Dim A As New Hito2(身長の値、体重の値、年齢の値)
Dim A As New Hito2(身長の値、体重の値、年齢の値)
これを可能にするのが、クラス内にSub Newプロシージャの追加です。
前回作成したクラスHito2に、下記のように追加します。
Public Class Hito2
Inherits Hito
Public Age As Integer '年齢
Inherits Hito
Public Age As Integer '年齢
' ***** ここからがコンストラクタの記述 *****
' 変数宣言がなされる時に渡される値の変数をNewの後の括弧内に書く
Public Sub New(身長 As Single, 体重 As Single, 年齢 As Integer)
Me.Shicho=身長 ' 渡された値 「身長」 の代入
Me.Taijyu=体重 ' 渡された値 「体重」 の代入
Me.Age=年齢 ' 渡された値 「年齢」 の代入
End Sub
End Class
' 変数宣言がなされる時に渡される値の変数をNewの後の括弧内に書く
Public Sub New(身長 As Single, 体重 As Single, 年齢 As Integer)
Me.Shicho=身長 ' 渡された値 「身長」 の代入
Me.Taijyu=体重 ' 渡された値 「体重」 の代入
Me.Age=年齢 ' 渡された値 「年齢」 の代入
End Sub
End Class
上記のようにコンストラクタを追加した後、変数宣言とメンバー変数の初期化を一回でできるようになります。
Dim A As New Hito2(170, 50, 25)
クラス内の記述が増えましたが、プログラム本体側の記述は大幅に減少させることができます。
SharpDevelopでは、コード入力時に下記のような入力支援が出てきます。
SharpDevelopでは、コード入力時に下記のような入力支援が出てきます。
ちなみに、上記例ではコード内に変数の定義で日本語を使いましたが、個人的には何か問題が起きそうな気がして、日本語を使わないようにしています。