ここでは、本製品で提供するサンプルプログラム-Sample17-について説明します。
Sample17では、集約、シングルトン、イテレータといったオブジェクト指向の一般的なデザインパターンを使用したプログラムの例を示します。
このプログラムでは、“6.17 コレクションクラス(クラスライブラリ)(Sample16)”で作成したDictクラスとListクラスを使用しています。
また、このプログラムを動作させるためには、以下の製品が必要です。
Microsoft(R) Excel(以降、Excelと略します。)
概要
会議室の予約処理(予約、予約取消、予約参照)および会議室管理処理(会議室情報の一覧表示、追加、更新、削除)を行います。これらの処理において、以下のデザインパターンを使用しています。
集約関係とは、クラスの間に「全体-部分」の関係があることをいいます。
このSampleでは、日付ごとの予約状況を管理するために、以下のようなクラス関係を持っています。
“予約状況-日付”クラスは複数の“予約状況-会議室”クラスを含み、“予約状況-会議室”クラスは複数(この場合は2つ)の“予約状況-時間枠”クラスを含んでいます。そのため、以下の集約関係があるといえます。
また、予約できる会議室の情報を管理するために、以下のようなクラス関係も持っています。
“会議室管理”クラスは“会議室情報”クラスを含んでいます。そのため、これらのクラスの間にも集約関係があるといえます。
シングルトンは、あるクラスのインスタンスが1つしか存在しないことを保証するための機構を提供します。このSampleでは、シングルトンクラスでこの機構を実装しています。シングルトンクラスはインスタンスを1つしか持たない以下のクラスを継承し、使用しています。
予約管理クラス
会議室情報管理クラス
イテレータは、集約オブジェクトの内部構造を意識せずにその要素に順にアクセスする方法を提供します。このSampleでは、リストイテレータクラスでこれを実装しています。リストイテレータオブジェクトは1つのリストオブジェクトに対して複数作成することができます。このSampleでは、以下の処理でイテレータを使用しています。
予約状況の表示
予約状態オブジェクト(日付、会議室、時間枠)の削除
会議室情報、予約情報の検索
このSampleでは、これらの機能に加えて、会議室情報オブジェクトおよび予約情報オブジェクトをExcelファイルに格納し、永続化する機能を追加しています。
提供プログラム
Sample17_EXE\Main.cob(COBOLソースプログラム)
Sample17_EXE\Exceledt.cob(COBOLソースプログラム)
Sample17_EXE\RsvCtrl.cob(COBOLソースプログラム)
Sample17_EXE\RoomCtrl.cob(COBOLソースプログラム)
Sample17_EXE\DataSta.cob(COBOLソースプログラム)
Sample17_EXE\Roomspec.cob(COBOLソースプログラム)
Sample17_EXE\RoomSta.cob(COBOLソースプログラム)
Sample17_EXE\Timesta.cob(COBOLソースプログラム)
Sample17_EXE\Reserve.cob(COBOLソースプログラム)
Sample17_DLL\SpecCtrl.cob(COBOLソースプログラム)
Sample17_DLL\Spec.cob(COBOLソースプログラム)
Sample17_DLL\Singletn.cob(COBOLソースプログラム)
Sample17_DLL\listier.cob(COBOLソースプログラム)
Sample17_DLL\ErrorPut.cob(COBOLソースプログラム)
Sample17_LIB\RsvInfo.cbl(登録集ファイル)
Sample17_LIB\RoomInfo.cbl(登録集ファイル)
Sample17_LIB\r_const.cbl(登録集ファイル)
Sample17_LIB\Specinfo.cbl(登録集ファイル)
Sample17_LIB\RoomList.xls(Excelファイル)
Sample17_LIB\RsvList.xls(Excelファイル)
Makefile(メイクファイル)
以下は、Sample16で作成されたファイルを使用します。
DICT.REP(リポジトリファイル)
LIST.REP(リポジトリファイル)
COLLECT.dll(DLLファイル)
COLLECT.lib(インポートライブラリ)
COLLECT.REP(リポジトリファイル)
使用しているCOBOLの機能
使用しているオブジェクト指向の文/段落/定義
INVOKE文
SET文
オブジェクトプロパティ
メソッドの行内呼出し
リポジトリ段落
クラス定義、ファクトリ定義、オブジェクト定義、メソッド定義
型定義
プログラムを実行する前に
Excelファイルのファイル名の下線部分を、NetCOBOLをインストールしたフォルダーの名前に書き換えてください。
会議室ファイル名 IS "C:\COBOL\SampleS\COBOL\Sample17\RoomList.XLS" 予約ファイル名 IS "C:\COBOL\SampleS\COBOL\Sample17\RsvList.XLS"
なお、RoomList.XLSおよびRsvList.XLSは、本プログラムの動作時には随時書き換えが行われます。必要に応じてバックアップをお取りください。
注意
プログラムの仕様から、システムの現在日付より古い日付のデータはExcelファイルからの復元時に自動的に破棄されます。プログラム終了時に保存されるExcelファイルには破棄されたデータは反映されませんので注意してください。