クラスの定義
それではクラスの定義を行ってみましょう。Visual Studio CodeのワークスペースにDriveDemo/Dataというフォルダを作成し、「新しいファイル」ボタンでCarLatest.clsを新規に作成してください(次図)。
そして、エディタ画面で次のように入力してください。このクラスは、車のIDをキーとして最新の情報(時刻、緯度・経度、速度、方位、加速度など)を保持するものです。
Class DriveDemo.Data.CarLatest Extends %Persistent { Property CarId As %String; Property Tm As %TimeStamp; Property RelativeTm As %Integer; Property Longitude As %Float; Property Latitude As %Float; Property Azimuth As %Float; Property Speed As %Float; Property EngineRPM As %Float; Property AccelPos As %Float; Property BrakeSW As %Boolean; Property AcumDistance As %Float; Property AcumFuel As %Float; Property FuelInjection As %Float; Property aX As %Float; Property aY As %Float; Property aZ As %Float; Index MainIdx On CarId; Index TmIdx On Tm; }
IRISでクラスを定義する際の基本的な事項を、いくつか説明します。
クラス宣言
1行目でClassキーワードで始まるのはクラス宣言です。クラス名は、パッケージ名と名称から構成されます。パッケージ名は複数階層を”.”でつなげることができます。ここでは、DriveDemo.Dataがパッケージ名、CarLatestが名称です。
Extends %Persistentでは、継承するクラスを指定しています。%PersistentはIRISのライブラリに用意されたもので、クラスのインスタンスデータをデータベースに保存する機能を提供します。つまり、DriveDemo.Data.CarLatestクラスは、インスタンスをデータベースに保存できることになります。
プロパティ宣言
定義本体で宣言しているのはPropertyキーワードで始まるプロパティ宣言です。プロパティは、クラスのインスタンスが保持するデータ項目で、As句でそのデータ型を宣言します。ここでは、
- %String:文字列
- %TimeStamp:日付
- %Integer:整数
- %Float:浮動小数
といった単純型のみを使用していますが、他のクラスのインスタンスを参照するプロパティや、コレクション(配列やリスト)プロパティも定義できます。
インデックス宣言
他のRDBMSなどと同様、IRISではクラスのプロパティにインデックスを張ることができます。Indexキーワードで始まり、インデックス名を指定し、On句でインデックスの対象となるプロパティを宣言します。
コンパイル
Visual Studio Codeの「表示」メニューもしくは左下のアイコン(次図)をクリックして、「コマンド パレット」を呼び出し、そこで”ObjectScript: Import and compile current file”を実行します(次図)。
“Compile succeeded”というメッセージが出たらコンパイル成功です。この操作により、IRISにクラスが定義されました。
IRISでは、クラス定義を行うと同時にテーブルも定義され、SQL文による操作も可能になります。これについては後述します。