見出し画像

[基礎][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の平面的なイメージと比べると、かなり奥行きがあるとでも言えるでしょうか。

ここから先は

1,545字 / 5画像

¥ 110

サポートいただければ、記事をもっと充実することができます