2020年02月13日

師匠のVB.NETどたばた塾~第6回

sisyo.gif
師匠T:さて。前回はちょっとしたミスで、予定が変わってしまったが、今回は改めてクラスについて説明していくことにするぞ。

deshi.gif
弟子D:師匠ももう年……いてっ。

sisyo.gif
余計なことは言わんでいい。ではさっそくはじめていくとするぞ!

【 クラスとは? 】

sisyo.gif
さて。まずはクラスとは何かについてじゃ。これについては、以前のJava道場で説明したが、改めて復習しておくとしようぞ。弟子よ、クラスとはなんぞや?

deshi.gif
あ、はい。オブジェクトというものの設計図のようなもので、それをもとにして作られたのがインスタンスですよね。ザクに例えるなら、ザクの設計図がクラスで、作られたザクがインスタンスと。

sisyo.gif
うむ、その通りじゃ。さらに、クラスに別の機能を付与して新しいクラスを作る『継承』ができるのも、クラスの特徴であったな。

deshi.gif
そうでしたっけ。

sisyo.gif
お主の記憶容量は、数十年前のPC並みしかないのか? こほん。では次の項目では、クラスの作り方、そしてインスタンスの作り方について説明していくぞ!

【 クラスの作り方、そしてインスタンスの作り方じゃ! 】

sisyo.gif
さて。VB.NETでは、クラスを作るにはちょっとした手間をかけなくてはならぬ。まずは、『プロジェクト』メニューから、『クラスの追加』を選ぶ。

deshi.gif
ふむふむ。

sisyo.gif
すると、次のウィンドウが開くので、クラス名を入力してOKを押す。これだけでOKじゃ。

vb0202-i01.png

deshi.gif
なるほど!

sisyo.gif
なお、この方法で作るだけではなく、モジュール内にコードを書いて作ることもできるぞ。その場合は次のように宣言部分を書く。

--------------------
Class クラス名
End Class
--------------------

deshi.gif
~の部分に動作などのコードを書くわけですね。もしかして、このクラスをどこからでも使えるようにしたい場合には、Classの前にPublicをつけるのですか?

sisyo.gif
おぉ、よくぞそれに気づいたのう。その通りじゃ。さすが我が弟子。

deshi.gif
俺だってバカなままじゃありませんよ!

sisyo.gif
ほほう。それでは、クラスのメソッドやセッター・ゲッターを作りたい時にはどうすればいいのか述べてみよ。

deshi.gif
え? えーと、えーと……。

sisyo.gif
メソッドを作りたい場合には、そのクラスにサブルーチンを作ってやればよいのだ。ゲッターを作りたいなら関数を作ってやればよい。セッターを作りたいなら、やはりサブルーチンを作ればよいぞ。

--------------------
Class Sisyo
   Sub Method()←メソッドになる
   ~
   End Sub

   Public Function Getter() As Integer←ゲッターになる
   ~
   End Function

   Public Sub Setter(p As Integer)←セッターになる
   ~
   End Sub
End Class
--------------------


sisyo.gif
なお注意点として、上の例のようにゲッター、セッターにする関数・サブルーチンを作るときにはPublicをつけること。さもないと、外から使うことができずに、ゲッター・セッターの役割をすることができなくなってしまうからの。

deshi.gif
はい。

sisyo.gif
そしてそれと同じようにメソッドも、外から使えるメソッドにする場合には、Publicをつけることを忘れずに。

deshi.gif
わかりました、師匠!

sisyo.gif
うむ。さて、コンストラクタを作る場合には、次のように宣言する。

--------------------
Public Sub New(~)
End Sub
--------------------

deshi.gif
Newという名のサブルーチンを、Publicをつけて作るわけですね。

sisyo.gif
その通りじゃ。さて、いよいよインスタンスを作る方法じゃが、まずは変数の宣言からじゃ。
といっても難しいことはない。ほれ、この通り。

-------------------------
Dim 変数名 As クラス名

例:
Dim s1 As Sisyo
-------------------------

sisyo.gif
どこからでも使えるパブリック変数にする場合には、DimをPublicに変えればよい。さて、そしてインスタンス化じゃ。

---------------------------
変数名 = New クラス名(~)

例:
s1 = new Sisyo()
---------------------------

deshi.gif
なるほど。Newをつけた上で変数に代入してやればいいんですね。

sisyo.gif
うむ、そのとおりじゃ。それほど難しくはなかろう。では次は継承についてやっていくとするぞ!

【 継承 】

sisyo.gif
さて、次は継承についてじゃ。Javaでは継承のさいには、extendsをつけて宣言しておったな。

deshi.gif
はい。

sisyo.gif
VB.NETも、それと似たようなものじゃ。このように、Class文の下にInheritsをつけて宣言する。

---------------------------
Class Deshi
   Inherits Sisyo
End Class
---------------------------

deshi.gif
なるほど。そういえば継承と聞いて、オーバーライドやオーバーロードのことを思い出したのですが、VB.NETでもそれらは可能なのでしょうか?

sisyo.gif
うむ。可能じゃぞ。まずはオーバーライドからじゃ。まず、オーバーライドするにあたっては、元となるクラス(これを基底クラスと呼ぶぞ)の該当するメソッド・関数をOverridableで宣言する必要がある。

---------------------------
Class ●●●
   Public Overridable Sub ▲▲▲←これでこのメソッドはオーバーライドできるようになる
   ~
   End Sub
End Class
---------------------------

sisyo.gif
このように宣言したメソッド・関数は、作られたクラス(これを派生クラスという)側で、Overridesをつけて宣言することで、オーバーライドすることができるようになる。

---------------------------
Class XXX
   Inherits ●●●

   Public Overrides Sub ▲▲▲←オーバーライドしたメソッド
   ~
   End Sub
End Class
---------------------------

deshi.gif
なるほど。基底クラスの内容を実行させるにはどうすれば?

sisyo.gif
うむ。その時は、MyBase.メソッド名を実行させればよい。なお、通常はOverridesをつけると、これが自動的に追加されるので、それほど意識する必要はないぞ。

---------------------------
Class XXX
   Inherits ●●●

   Public Overrides Sub ▲▲▲
      MyBase.▲▲▲()←基底クラスの▲▲▲メソッドの内容を実行する
      ~
   End Sub

End Class
---------------------------

sisyo.gif

さて、次はオーバーロードじゃ。こちらも難しいことはない。
そのメソッドや関数を、Overloadsをつけて宣言するだけじゃ。

---------------------------

Class AAA

   Public Overloads Sub BBB(kin As Integer)←オーバーロードしたメソッド1
   ~
   End Sub

   Public Overloads Sub BBB(kin As Integer, zei As Integer)←オーバーロードしたメソッド2
   ~
   End Sub
End Class
---------------------------

deshi.gif
なるほど!

sisyo.gif
うむ。さて、基本編はこれでおしまいじゃ。次回からはさらに発展して、ウィンドウアプリの作成からやっていくとするぞ!
これまでの復習と、これからすることの予習を忘れてはならぬ!



※次の更新は、『レトロゲーレビュー』の予定です。お楽しみに!
posted by 裏編 at 09:51| Comment(0) | 師匠のVB.NETどたばた塾 | 更新情報をチェックする
この記事へのコメント
コメントを書く
コチラをクリックしてください