VBオブジェクト指向プログラミング講座 第4回 クリックして分かるオブジェクトのありがたさ
VBプログラムの名物はメッセージボックスです。WPFでメッセージボックスを出してみましょう。
Imports System
Imports System.Windows
Imports System.Windows.Controls
Public Class HelloWindow
Inherits Window
Public Sub New()
'HelloWindow
Me.Title = "Hello World"
Me.Height = 300
Me.Width = 300
Me.WindowStartupLocation = WindowStartupLocation.CenterScreen
'ボタン
Dim btn As Button = New Button()
btn.Content = Me.Title 'ここに注目!
Me.Content = btn 'ここに注目!
AddHandler btn.Click, Sub() MessageBox.Show(Me.Title)
End Sub
End Class
このプログラムは、「Hello World」と書かれたメッセージボックスを表示するボタンを、用意して配置しています。Contentプロパティの部分に注目して下さい。一行で凄い事をしています。その凄さは、プログラムを付け加えていけば明確になります。任意の文字列をメッセージボックスで表示するように変更します。
Imports System
Imports System.Windows
Imports System.Windows.Controls
Public Class HelloWindow
Inherits Window
Public Sub New()
'HelloWindow
Me.Title = "Hello World"
Me.Height = 300
Me.Width = 300
Me.WindowStartupLocation = WindowStartupLocation.CenterScreen
'テキストボックス
Dim box As New TextBox()
box.Width = 200
'ボタン
Dim btn As New Button()
btn.Content = box
Me.Content = btn
AddHandler btn.Click, Sub() MessageBox.Show(box.Text)
End Sub
End Class
このサンプルを見れば、Contentプロパティは非常に柔軟である事が分かります。まるで魔法です。これを可能とするのが、オブジェクト指向プログラミングです。Contentプロパティの凄さをじっくり考えてみましょう。オブジェクト指向プログラミングを使わない場合、ウインドウやボタンの上に何かを置こうとすれば、非常に複雑な事を考えねばなりませんでした。C言語でWin32プログラミングを行えば、ウインドウ1つ出すだけでも200行ぐらい必要となります。この原因は、OSのウインドウシステムに依存しているからです。つまり、細かい情報と深く結び付いているのです。
一方、オブジェクト指向プログラミングで出来ているWPFプログラミングモデルでは、コンテンツというオブジェクトを設定するという、抽象的な捉え方でプログラミング出来ます。その効果は絶大です。
今回は、クラスからオブジェクトへと、少し高度な概念を解説しました。プログラミングでよくある間違いは、コードや文法だけで考える事です。コードはあくまでも概念を表すものです。コードが概念なのではありません。VBそのものを覚えるのではなく、VBを使ったオブジェクト指向プログラミングの概念を覚えて下さい。この差がプログラマーの実力差を生みだします。十分に注意して下さい。