日記帳

日記です。

30分でわかるわけがない Java プログラマのための JavaFX Script 入門

http://d.hatena.ne.jp/sa-y/20090204 の続き.

JavaFX Script は宣言型構文でオブジェクトの性質を記述できるという説明を見かけます.しかしほとんどの場合に例としてオブジェクトリテラルでオブジェクトの階層を記述できてうれしいね的な話な気がします.普通プログラミング言語の文脈で宣言的とか宣言型といったら宣言型プログラミング的な話だと思うのですがどうしたものなんでしょうね?

ということでバインディングの話.

バインディングで何ができるのか?

class Circle{
	def PI = 3.14159265358;
	var radius:Number;                      // 半径
	def diameter = bind radius * 2;         // 直径: 半径×2
	def circumference = bind diameter * PI; // 円周: 直径×円周率
	def area = bind radius * radius * PI;   // 面積: 半径×半径×円周率

	function print():Void{
		println("----- Circle -----");
		println("radius        : {radius}");
		println("diameter      : {diameter}");
		println("circumference : {circumference}");
		println("area          : {area}");
	}
}

var c = Circle{ radius : 10; } // 半径10の円を作成
c.print();

c.radius = 20; // 半径を20に変更
c.print();

直径とは何か?円周とは何か?円の面積とは何か?ということを宣言しておけばOK.

----- Circle -----
radius        : 10.0
diameter      : 20.0
circumference : 62.8318530716
area          : 314.159265358
----- Circle -----
radius        : 20.0
diameter      : 40.0
circumference : 125.6637061432
area          : 1256.637061432

こんなことができるのがバインディングです.