[基礎][LotusScript]クラスの包含関係の考え方
はじめに
プログラミング初心者はノーツにはじめて触った時、次のようなコードに大きな困難を感じます。
Sub Click(Source As Button)
Dim ws As New NotesUIWorkspace
Dim uiview As NotesUIView
Dim dc As NotesDocumentCollection
Dim doc As NotesDocument
Dim total As Double
Set uiview = ws.CurrentView
Set dc = uiview.Documents
Set doc = dc.GetFirstDocument
'以下省略
いきなり膨大なDimとSet行の羅列で、意味不明になってしまうのです。上記は公式ヘルプ「Documents プロパティ」の「例」から引用しました。
例えばExcel VBAで動作するマクロは、次のようにシンプルに記述できます。
Sub Macro1()
ActiveCell.FormulaR1C1 = "=SUM(1+1)"
Range("A3").Select
End Sub
Excelは列(タテ)と行(ヨコ)で構成された表が、操作の基本となる平面的構造です。ユーザーがExcelを操作するときの見た目と、VBで書かれたコードの対応関係は、直感的にとても把握しやすいものであると言えます。
ノーツの場合も同様にイメージすします。NotesUIWorkspaceやNotesUIViewといったノーツクラスと、ユーザーが「対話的に」Notesのアイコンやボタンを操作する際の見た目との「対応関係」はどうなっているでしょうか。
またクラスとクラスの関係を理解する必要もあります。これは「包含関係」と呼ばれます。
二種類の関係を考える必要があり、なかなかややこしいですね。
二種類の関係を図示する
「包含関係」は例えば、「動物という概念は、人間という概念を包含する」といった風に使われます。これは、いうなれば「止まっている」「静止した」イメージです。しかしユーザー操作と対応付けるときは、クラス間の関係を上から下に流れる形で、動きとしてイメージすると分かりやすいです。
図で考えると、クラス間の包含関係は、クラス同士が上から下に矢印で繋がっていて、上から下に流れる形です。
またユーザー操作との対応関係は、横に並べて対比した図を描くと分かりやすくなります。
例えば次の図。左の赤文字の列がユーザーの操作、右の青文字の列がクラス。またクラスとクラスの包含関係が矢印だとすれば、次のように図示できます。先述したExcelの平面的なイメージと比べると、かなり奥行きがあるとでも言えるでしょうか。
ここから先は
¥ 110
サポートいただければ、記事をもっと充実することができます