《Jython2.5》JTree〈GoF〉Command を導入する

前の記事記事一覧次の記事

Java プログラマーのための Python 導入ガイド〈初級/応用編〉《Jython2.5》
JTree〈GoF〉Command を導入する

《著》小粒ちゃん《監修》小泉ひよ子とタマゴ倶楽部
第1版♪2003/05/23 ● 第2版♪2009/04/03

■ 概要

フォルダー/ファイルの階層構造を Swing/GUI を利用して「簡単に」閲覧できるツールがあると便利です。

 この課題では、Swing/GUI を使って階層構造を持つ情報を提示します。
 また〈GoF〉Composite/Iterator/Visitor/Command パターンを導入することで、
 構造化プログラミングには必須の if/for が不要になるので、簡潔で見通しが良く、
 要求仕様の変更にも柔軟に対処できる、プログラム(コード)を作成する方法を紹介します。

 《Note》JPython1.1.x/Jython2.1.x 用に作成したセミナー課題を、Jython2.5 で再構成しました。

事例:モジュールを起動する

モジュールを起動すると、次のようなウィンドウが現れます。

$ jython2.5b3 -i TreeEx.py


ボタンによって、テキスト表示〔Text〕とツリー表示〔Tree〕を選択できます。
⇒ 続きはこちら コードの解説

■ 事例:テキスト表示

ボタン〔Text〕を押すと、次のようなウィンドウが現れます。


これは、選択したノードの傘下を、テキスト(JTextArea)で表現したものです。この表示は普通の「文字列」なので、これを転記して、レポート作成などに再利用できます。
⇒ 続きはこちら コードの解説

■ 事例:ツリー表示

ボタン〔Tree〕を押すと、次のようなウィンドウが現れます。


これは、選択したノードの傘下を、ツリー(JTree)で表現したものです。
⇒ 続きはこちら コードの解説

考察:作成したツールを使って

Command を導入後のモジュール構成を、作成したツール自身で解析すると次のようになります。

■ 導入前
dpJTree
+-- class
+-- TreeComposite$py.class (12697)
+-- TreeEx$py.class (8015)
+-- TreeView$py.class (11890)
+-- TreeVisitor$py.class (6365)
+-- src
+-- TreeComposite.py (3236)
+-- TreeEx.py (2544)
+-- TreeView.py (4308)
+-- TreeVisitor.py (1119)
■ 導入後
$ jython2.5b3 -i TreeEx.py /Users/sketch/home_Jython/swing/dpJTree 
dpJTree
+-- class
+-- TreeCommand$py.class (7156)
+-- TreeComposite$py.class (12697)
+-- TreeEx$py.class (8048)
+-- TreeView$py.class (10549)
+-- TreeVisitor$py.class (6365)
+-- src
+-- TreeCommand.py (1587)
+-- TreeComposite.py (3236)
+-- TreeEx.py (2570)
+-- TreeView.py (3698)
+-- TreeVisitor.py (1119)
モジュール TreeCommand として独立した分だけ、TreeView のサイズが
>>> "%d%%"%(3698/4308*100)    # TreeView.py
'85%'
>>> "%d%%"%(10549/11890*100)    # TreeView.class
'88%'
小さく(ソースコード 85%, バイトコード 88%)なっているのが分かります。

Tips

》作業中です《
Last updated♪09/05/26