トップ 差分 一覧 Farm ソース 検索 ヘルプ PDF RSS ログイン

オブジェクト指向プログラミング(C317-2 2005/11/21)

オブジェクト指向プログラミング 第11回

 コンポジットパターンの例題と演習

配布プリントのプログラムを入力、実行し、コンポジットパターンについて理解する。

 演習

OSのファイルシステムを真似たプログラムを例題を参考に作成する。クラス図は次の通り。

クラス 役割
Entry ファイルやディレクトリの持つ機能を規定
File ファイルを表す。

Directory,ディレクトリを表す

Entryクラス

Fileクラス

  • フィールドはString型のファイル名を示すname、int型のファイルサイズを示すsize
メソッド名 戻り値 引数 動作
getName() void なし 名前を表示
getSize() int なし ファイルサイズを取得
printList() void なし ファイル名を表示

Directoryクラス

  • フィールドにはString型でディレクトリ名を示すnameと、ディレクトリエントリの配列リストdirectories
メソッド名 戻り値 引数 動作
getName() void なし ディレクトリ名を示す
getSize() int なし 配列リストdirectoriesからサイズを取得し、加算する
printList() void なし 配列リストdirectoriesの内容を表示する
add void Entry型のオブジェクト ファイルやディレクトリを配列リストに追加する

テストクラス

このクラスでディレクトリ構造の内容を配列リストに追加し、それを表示する。

public static void main(String[] args) {
  // ディレクトリオブジェクトの作成
  Directory rootdir = new Directory("root");
  Directory bindir = new Directory("bin");
  Directory homedir = new Directory("home");
  // ファイルをディレクトリに追加
  bindir.add(new File("ls", 100));
  bindir.add(new File("vi", 200));
  otakidir.add(new File("sample.c", 100));
  // ディレクトリにディレクトリを追加
  rootdir.add(bindir);
  rootdir.add(homedir);
  // ディレクトリリストの表示
  rootdir.printList();
 }

[オブジェクト指向プログラミング(C317-2)]