列車発車時刻表示アプリのプログラム構成


今回のアプリケーションでは、複雑なアルゴリズムは全く使っていません。

どちらかといえば、ソースファイルが複数あるために構成の方が複雑となっています。

今回は、プログラムの構成について解説します。

1.3層アーキテクチャ構造


3層アーキテクチャ構造とは、アプリケーションを機能別に3つの層に分け、独立したプログラムとして開発するための構造のことです。

こうすることで、層ごとに開発がしやすいだけでなく、変更や修正をしたい場合に、全てを変更せずとも各層だけで変更をすればよいので、保守もしやすいという利点があります。

 

3層アーキテクチャ構造での3層については、以下の通り。

  • プレゼンテーション層
    ユーザインタフェース(UI)を設計する。GUI等を用いて、使いやすい画面を設計する。
  • ビジネスロジック層
    プレゼンテーション層からの入力値や、データアクセス層からのデータを基に処理を行う。
  • データアクセス層
    データベースにアクセスし、データの入出力を行う。データベースには、関係リレーション(表)形式がよく使われる。

2.列車時刻表示アプリと3層アーキテクチャ


今回のアプリケーションのプログラム構成図を以下に示します。

 

javaのクラスと3層アーキテクチャ構造を対応させています。

  • プレゼンテーション層・・・TimeForm
    PanelやActionListener等を用いて、フォームウィンドウを表示。
  • ビジネスロジック層・・・・TimeLogic
    TimeForm・TimeTableからのデータを基に時刻を検索。
  • データアクセス層・・・・・TimeTable
    時刻表ファイルからデータを読み込む。今回のデータベースはテキストファイル。

これらに加えて、層の間にTimeDTOやTimeDataというのがありますね。

これは、「Data Transfer Object」というもので、各層間でデータをやり取りしたい時に使います。

このクラス内のフィールド(変数)にデータを入れてやり取りを行うのですが、直接データを書き換えられないようになっています。

setter(データのセット)とgetter(データの取得)というメソッドを用いることで、データの変更や取得を行います。

 

TimeValidatorは、バリデーションといって、入力値が適切なものか検証を行うものです。

 

そして、これらを呼び出すメインメソッドを持つのが、TimeMainであり、これを実行することでアプリを起動できます。