VBオブジェクト指向プログラミング講座 第3回 クラスで情報を隠蔽する
前回、モジュールを使うよりも、クラスを使った方がお得だと書きました。しかし、定義が面倒だからクラスを使うというのであれば、本当のオブジェクト指向プログラミングとは言えません。まだまだ、オブジェクト指向プログラミングの利点があります。
解説のためにサンプルを提示します。
'EntryPoint.vb
Imports System
Imports System.Windows
Module EntryPoint
<STAThread()>
Sub Main(ByVal args As String())
Dim app As MyApplication = New MyApplication()
app.Run()
End Sub
End Module
'MyApplication.vb
Imports System
Imports System.Windows
Public Class MyApplication
Inherits Application
Public Sub New()
Dim win As HelloWindow = New HelloWindow()
win.Show()
End Sub
End Class
'HelloWindow.vb
Imports System
Imports System.Windows
Public Class HelloWindow
Inherits Window
Public Sub New()
Me.Title = "Hello World"
Me.Height = 300
Me.Width = 300
Me.WindowStartupLocation = WindowStartupLocation.CenterScreen
End Sub
End Class
前回のサンプルよりも、MyApplicationクラスが増えています。これが、オブジェクト指向の概念と関係があります。オブジェクト指向プログラミングを行う理由の一つが、ロジックが分割されてソースコードが読みやすくなるというものです。サンプルコードの場合、スタートアップロジックが分割され、役割分担が明確になっています。つまり、処理を開始するモジュール、アプリケーションの定義、ウインドウがはっきりと分かれています。
これは情報隠蔽(カプセル化)の概念を表しています。オブジェクト指向プログラミングでは、クラス(オブジェクト)単位でロジックを考え、他のオブジェクトの細かい情報を気にしません。こうすることにより、一つの物事に集中してプログラミングを行えます。
意図的に情報を隠蔽することにより、ロジックやコード等の情報の結合度を弱めているのです。情報隠蔽の利点は、WPFのプログラミングをすれば分かると思います。もし情報が隠蔽されていなければ、1画面を表示するだけでも大量のプログラミングが毎回必要になります。誰しもそれは避けたいでしょう。オブジェクト指向プログラミングの利点は、普段意識しないレベルにまで浸透していると言えます。
ちなみに、Applicationクラスを継承した独自の子オブジェクトを、定義するのはWPFプログラミングでよくやる事です。Applicationの子クラスを定義することにより、アプリケーションの管理を行いやすくできます。こういったオブジェクト指向プログラミングの手法は、慣れない人はコードが増えるだけだと感じるでしょう。しかし、本格的なプログラミングを行うと、自然とありがたみが分かります。続く。