JavaFXをマスターしよう:より深いJavaFXの世界へ - (page 3)

沖林正紀

2007-08-06 12:33

 insert, deleteはトリガーと組み合わせることもできる。これにより、配列に要素が追加/削除されたときの処理を別ブロックで記述することができる。リスト4-7は買い物カートに商品を入れたり、取り消したりする操作を行う際に、カート内の商品の合計金額を計算するなどに応用した例だが、ほかにもさまざまな利用例が考えられるだろう。

リスト4-7 カートに購入する商品を入れて合計を計算

// カート
class Cart  {
  attribute tempTotal : Number;
  attribute items : Item*;
}

// 商品
class Item  {
  attribute name : String;
  attribute price : Number;
  function toString() : String;
}
function Item.toString() : String  {
  return "{name} {price format as <<###,###>>}円";
}

// トリガー(合計金額の計算と記録)
trigger on insert item into Cart.items  {
  tempTotal += item.price;
  println( "購入 : {item.toString()} | 合計 {tempTotal format as <<###,###>>}円" );
}
trigger on delete item from Cart.items  {
  tempTotal -= item.price;
  println( "取消 : {item.toString()} | 合計 {tempTotal format as <<###,###>>}円" );
}
trigger on Cart.items[old] = value  {
  tempTotal = tempTotal + value.price - old.price;
  println( "変更前 : {old.toString()}" );
  println( "変更後 : {value.toString()} | 合計 {tempTotal format as <<###,###>>}円" );
}

// カートに商品を入れてみる
var items = [
  // ..... Itemの配列 .....
];
var c = new <>();
insert items[0] into c.items;
insert items[2] into c.items;
delete c.items[1];
c.items[0] = items[1];
insert items[3] into c.items;

実行例

購入 : 音楽プレーヤー 15,000円 | 合計 15,000円
購入 : メモリーカード 5,000円 | 合計 20,000円
取消 : メモリーカード 5,000円 | 合計 15,000円
変更前 : 音楽プレーヤー 15,000円
変更後 : ワンセグチューナー 10,000円 | 合計 10,000円
購入 : USBメモリ 3,000円 | 合計 13,000円

 4回にわたって説明したとおり、JavaFXはJavaにはないさまざまな構文や演算子が揃っており、Javaとは一味違ったプログラミングが楽しめる。まだ説明しきれていない部分があるのは残念だが、詳細はJavaFXのリファレンスを参照していただきたい。

 また、JavaFXコンポーネントのソースコード(%JFX_HOME%\trunk\src\javafx以下の*.fxファイル)には、さまざまなテクニックが盛り込まれているので、こちらも参考にして、真のJavaFXマスターを目指していただきたい。

ZDNET Japan 記事を毎朝メールでまとめ読み(登録無料)

ホワイトペーパー

新着

ランキング

  1. セキュリティ

    「デジタル・フォレンジック」から始まるセキュリティ災禍論--活用したいIT業界の防災マニュアル

  2. 運用管理

    「無線LANがつながらない」という問い合わせにAIで対応、トラブル解決の切り札とは

  3. 運用管理

    Oracle DatabaseのAzure移行時におけるポイント、移行前に確認しておきたい障害対策

  4. 運用管理

    Google Chrome ブラウザ がセキュリティを強化、ゼロトラスト移行で高まるブラウザの重要性

  5. ビジネスアプリケーション

    技術進化でさらに発展するデータサイエンス/アナリティクス、最新の6大トレンドを解説

ZDNET Japan クイックポール

注目している大規模言語モデル(LLM)を教えてください

NEWSLETTERS

エンタープライズ・コンピューティングの最前線を配信

ZDNET Japanは、CIOとITマネージャーを対象に、ビジネス課題の解決とITを活用した新たな価値創造を支援します。
ITビジネス全般については、CNET Japanをご覧ください。

このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]