ページの先頭行へ戻る
NetCOBOL V11.0 入門ガイド
FUJITSU Software

6.18 オブジェクト指向プログラム(中級編)(Sample17)

ここでは、本製品で提供するサンプルプログラム-Sample17-について説明します。

Sample17では、集約、シングルトン、イテレータといったオブジェクト指向の一般的なデザインパターンを使用したプログラムの例を示します。

このプログラムでは、“6.17 コレクションクラス(クラスライブラリ)(Sample16)”で作成したDictクラスとListクラスを使用しています。

また、このプログラムを動作させるためには、以下の製品が必要です。

概要

会議室の予約処理(予約、予約取消、予約参照)および会議室管理処理(会議室情報の一覧表示、追加、更新、削除)を行います。これらの処理において、以下のデザインパターンを使用しています。

集約

集約関係とは、クラスの間に「全体-部分」の関係があることをいいます。

このSampleでは、日付ごとの予約状況を管理するために、以下のようなクラス関係を持っています。

“予約状況-日付”クラスは複数の“予約状況-会議室”クラスを含み、“予約状況-会議室”クラスは複数(この場合は2つ)の“予約状況-時間枠”クラスを含んでいます。そのため、以下の集約関係があるといえます。

また、予約できる会議室の情報を管理するために、以下のようなクラス関係も持っています。

“会議室管理”クラスは“会議室情報”クラスを含んでいます。そのため、これらのクラスの間にも集約関係があるといえます。

シングルトン

シングルトンは、あるクラスのインスタンスが1つしか存在しないことを保証するための機構を提供します。このSampleでは、シングルトンクラスでこの機構を実装しています。シングルトンクラスはインスタンスを1つしか持たない以下のクラスを継承し、使用しています。

  • 予約管理クラス

  • 会議室情報管理クラス

イテレータ

イテレータは、集約オブジェクトの内部構造を意識せずにその要素に順にアクセスする方法を提供します。このSampleでは、リストイテレータクラスでこれを実装しています。リストイテレータオブジェクトは1つのリストオブジェクトに対して複数作成することができます。このSampleでは、以下の処理でイテレータを使用しています。

  • 予約状況の表示

  • 予約状態オブジェクト(日付、会議室、時間枠)の削除

  • 会議室情報、予約情報の検索

このSampleでは、これらの機能に加えて、会議室情報オブジェクトおよび予約情報オブジェクトをExcelファイルに格納し、永続化する機能を追加しています。

提供プログラム

以下は、Sample16で作成されたファイルを使用します。

使用しているCOBOLの機能

使用しているオブジェクト指向の文/段落/定義

プログラムを実行する前に

Excelファイルのファイル名の下線部分を、NetCOBOLをインストールしたフォルダーの名前に書き換えてください。

R_CONST.cbl
会議室ファイル名  IS  "C:\COBOL\SampleS\COBOL\Sample17\RoomList.XLS"
予約ファイル名    IS  "C:\COBOL\SampleS\COBOL\Sample17\RsvList.XLS"

なお、RoomList.XLSおよびRsvList.XLSは、本プログラムの動作時には随時書き換えが行われます。必要に応じてバックアップをお取りください。

注意

プログラムの仕様から、システムの現在日付より古い日付のデータはExcelファイルからの復元時に自動的に破棄されます。プログラム終了時に保存されるExcelファイルには破棄されたデータは反映されませんので注意してください。