- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
!!!オブジェクト指向プログラミング 第11回
!!コンポジットパターンの例題と演習
配布プリントのプログラムを入力、実行し、コンポジットパターンについて理解する。
!!演習
OSのファイルシステムを真似たプログラムを例題を参考に作成する。クラス図は次の通り。
{{ref_image ex04-1.png}}
,クラス名,役割
,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();
}
----
{{category オブジェクト指向プログラミング(C317-2)}}