
今回は、クラスについて紹介していきます。クラスはとても大切なので是非理解しておきましょう。
クラスは少し奥が深いので今回は簡単な例をもとに記載していきます。
使用しているうちにだんだんわかってくると思うので是非理解しながら使ってみてください。
クラスとは
「クラス」を説明するには同時に「インスタンス」と呼ばれるものもセットで考えたほうが理解しやすいと思いますので
ここではクラスとインスタンスの関係について少し見てみましょう。
「クラス」は、プログラムを作る際の「型」もしくは「部品の設計図」と考えてみましょう。
「インスタンス」は、プログラムを作る際の「部品」です。
言葉で表すとこんな感じなのですが、よくわからないと思うので例を見ていきます。
クラスファイルの作り方
今回は、新しくクラスファイルを作成してみましょう。
プロジェクトを右クリック→「追加」→「新しい項目」
「クラス」→名前を付ける→「追加」
今回はClsHuman.vbというファイルを作成してみました。開いてみましょう。
Public Class ClsHuman
End Class
このように、クラスを作成するときは、
Class クラス名称
End Class
で囲むことで作成することができます。
プロパティを作成
次にクラスのプロパティを作成していきます。
プロパティは、フィールドの値の設定や取得をするものなのですが、ざっくりClassで使用する変数みたいなものと覚えておきましょう。
書き方は下記のようになります。
Public Property プロパティ名As 型
今回は、RPGっぽくこんなプロパティにしてみました。
Public Class ClsHuman
Public Property Name As String
Public Property Level As Integer
Public Property Hp As Integer
Public Property Mp As Integer
End Class
4つのプロパティを宣言しました。
メソッドの作成
メソッドとは、ざっくり関数みたいなものです。
これも言葉より例を見てみましょう。
先ほどのClsHumanにlevelUpメソッドを独自に追加してみましょう。
Public Class ClsHuman
'プロパティの作成
Public Property Name As String
Public Property Level As Integer
Public Property Hp As Integer
Public Property Mp As Integer
'メソッドの作成
Public Sub levelUp()
MsgBox(Name & "のレベルが上がった。" & vbCrLf & "LV" & Level.ToString & "→" & (Level + 1).ToString)
Level = Level + 1
End Sub
End Class
こんな感じで作成してみました。
メッセージを表示してから、値のカウントをアップしています。
メソッドは、このように関数みたいな感じで作成することができます。
それでは、さっそくクラスを使ってプログラムを書いてみましょう。
クラスの呼び出し
フォームを作成し、ロード処理で先ほど作成したクラスを使って処理を作りました。
Public Class frmClass
Private Sub FrmClass_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'インスタンスの作成(ClsHuman型)
Dim human1 As New ClsHuman
'プロパティに値を設定
human1.Name = "ひろにも"
human1.Level = 1
'メソッドの呼び出し
human1.levelUp()
End Sub
End Class
解説
5行目:先ほど作成したクラス(ClsHuman)からインスタンスを作成する。
8行目~9行目:プロパティに値を設定する。
12行目:作成したメソッド(levelUp)を呼び出す。
結果
メソッドが呼び出されて、メッセージボックスを出力しています。
コンストラクタ
クラスには、必ず「コンストラクタ」という特殊なメソッドが存在します。
コンストラクタとは、クラスからインスタンスを作成する時に、自動で呼び出される初期化用のメソッドです。
コンストラクタの書き方は下記のようになります。
Sub New()
処理
End Sub
先ほどのClsHuman.vbに、例を記載しました。
Public Class ClsHuman
'プロパティ
Public Property Name As String
Public Property Level As Integer
Public Property Hp As Integer
Public Property Mp As Integer
'コンストラクタ
Sub New()
Name = "主人公"
Level = 1
Hp = 10
Mp = 0
End Sub
'メソッド
Public Sub levelUp()
MsgBox(Name & "のレベルが上がった。" & vbCrLf & "LV" & Level.ToString & "→" & (Level + 1).ToString)
Level = Level + 1
End Sub
End Class
フォームのロード処理で、クラスを呼び出してみましょう。
Public Class frmClass
Private Sub FrmClass_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'インスタンスの作成(ClsHuman型)
Dim human1 As New ClsHuman
'メソッドの呼び出し
human1.levelUp()
End Sub
End Class
解説
4行目:インスタンスを作成しているところで、コンストラクタ呼び出されています。
結果
コンストラクタが呼びだされ、「Name」プロパティに「主人公」が入力されているのが確認できましたね。
コンストラクタでは、主に初期化処理を記載していきましょう。
ちなみにコンストラクタは省略することができ、裏で何も処理が記載されていないコンストラクタが実行されています。
クラスを利用した記事を追加しましたので、ぜひ合わせて読んでみてください。
まとめ
今回は、とても大切な内容で、クラスとインスタンスの使い方について紹介しました。
この辺はオブジェクト指向といってとても大切な考え方なのでゆっくり時間をかけて理解するようにしましょう。
- クラスとは、プログラムを作成するための「部品の設計図」
- インスタンスとは、プログラムを作成するための「部品」