Java/Python 導入ガイド:swing/Jython - JavaBeans
Java プログラマーのための Python 導入ガイド《記事一覧》
Java プログラマーのための Python 導入ガイド〈初級/入門編〉《Jython2.5》
swing/Jython - JavaBeans
《著》小粒ちゃん《監修》小泉ひよ子とタマゴ倶楽部
第1版♪2003/05/23 ● 第2版♪2009/04/03
》作業中です《■ 概要
JavaBeans に準拠したクラスに対して、Jython は便利な機能を提供します。
Java で作成したモジュールを、Jython の世界から覗くと、新たな可能性が広がります。 JavaBeans に準拠したクラスを利用するときに、Jython では洗練された表現が可能になります。 getter/setter メソッドを呼び出すときに(C# のプロパティーと同様に)簡潔なコードを記述できます。
■ 関連記事
- Creating a GUI with JFC/Swing, How to Use Lists
- 実録《19》連結リスト課題《Python3.1》 - 続・ひよ子のきもち, list.append
事例:JavaBeans
public class Person { private String name; public Person(String name) { this.name = name; } public String toString() { return this.name; } public void setName(String name) { this.name = name; } public String getName() { return this.name; } public boolean isId() { return this.name != ""; } }
このクラスは、JavaBeans に準拠したものです。
Jython の世界
Java で作成したモジュールを、Jython の世界から覗くと、新たな可能性が広がります。
#! /usr/bin/jython2.5b3 """Java で作成したクラス Person を、Jython で記述したクラスと同様に扱えます。■ コンストラクター
>>> x = Person("John Doe")コンストラクター Person が規定してあると(メソッド __init__ と同様に)オブジェクトに固有のインスタンス属性値を初期設定します。■ メソッド toString
>>> x John Doeメソッド toString が規定してあると(メソッド __str__ と同様に)オブジェクトに固有の文字列表現が得られます。■ getter メソッド
u'John Doe'単に .name と記述するだけで、メソッド呼び出し .getName() と同じ効果が得られます。すると、初期設定された属性値を確認できます。■ setter メソッド
>>> x.id True >>> x.name = "Jack" >>> x Jack >>> x.name u'Jack'
単に .name = と記述するだけで、メソッド呼び出し .setName() と同じ効果が得られます。すると、更新された属性値を確認できます。■ is.. メソッド
True単に .id と記述するだけで(boolean をリターン値とする)メソッド呼び出し .isId() と同じ効果が得られます。■ misc
>>> x.name = "" >>> x >>> x.name u'' >>> x.id False >>> x.id True >>> None version #1.0.1 """名前を持たない(空の文字列)オブジェクトの属性値 x.id は、偽 False と評価されます。ここで、True とあるのは、エラーケース(不具合)を誘発するためです。モジュール modtest
## ---------------------------------------- import Person_ex module = Person_ex ## ---------------------------------------- from doctest import testmod def ex(): reload(module) testmod(module) ## ---------------------------------------- if __name__=='__main__': testmod(module)■ テスト結果
テストケースを含むモジュール Person_ex.py を実行すると、次のようなテスト結果が出力されます。$ jython2.5b3 -i Person_ex.py ********************************************************************** File "/Users/sketch/home_Jython/_myHome/PyoSwing/_pyoSwing/ex_testmod/Person_ex.py", line 20, in Person_ex Failed example: x Expected nothing Got:ここでは、15 件中に 3 件の不具合が発生しています。たとえば、2件目の不具合を見ると、True が期待されているのに、False が得られたのが分かります。********************************************************************** File "/Users/sketch/home_Jython/_myHome/PyoSwing/_pyoSwing/ex_testmod/Person_ex.py", line 26, in Person_ex Failed example: x.id Expected: True Got: False ********************************************************************** File "/Users/sketch/home_Jython/_myHome/PyoSwing/_pyoSwing/ex_testmod/Person_ex.py", line 28, in Person_ex Failed example: None Expected: #1.0.1 Got nothing ********************************************************************** 1 items had failures: 3 of 15 in Person_ex ***Test Failed*** 3 failures. >>> Tips
モジュール modtest を利用すると、対話モードで試行錯誤した履歴を、そのままテストケースとして再利用できるので、アジャイル開発を促進します。 》作業中です《Last updated♪09/05/11