New Articles

Recent Comments

  1. Storekeeper 設計編(1)
    1. 09/11 : by ?尚男装
    2. 08/04 : by チャンルー
    3. 07/11 : by 男性用水着 ビキニ
    4. 09/12 : by ヒーハー!!!!
    5. 09/05 : by ついつい・・・
  2. Seesaaで自作HTMLカスタムしてみたの
    1. 08/02 : by 吸引力の変わらないただひとつの…
    2. 08/13 : by テレビ電話 エッチな女の子
    3. 10/29 : by Kelvin Perry
    4. 10/26 : by Emma Erickson
    5. 10/24 : by Vince Shepard
  3. 作るモノ・課題 募集中!
    1. 02/11 : by ポロリン
    2. 02/01 : by PC自作男
    3. 01/27 : by タソタソメソ
    4. 01/27 : by ちょろ毛
    5. 01/19 : by まろゆき
  4. トラックバックのテスト
    1. 10/03 : by english amatuer porn
  5. Storekeeper 設計編(3)
    1. 10/03 : by mature women amatuer

Recent TrackBacks

  1. 12/02 : Seesaaで自作HTMLカスタムしてみたのまげフ
  2. 11/29 : Seesaaで自作HTMLカスタムしてみたのふりす
  3. 11/22 : Seesaaで自作HTMLカスタムしてみたの犬コロ
  4. 11/08 : Seesaaで自作HTMLカスタムしてみたの花びら
  5. 10/25 : Seesaaで自作HTMLカスタムしてみたの暴走

Log

  1. May 2005 (1)
  2. Apr 2005 (10)

RSS

22 Apr 2005 :: Storekeeper 設計編(3)

設計編(2)で Field.judgeCleared() を用意する、なんて書いたけど、

よくよく考えてみると、Box→Fieldのメッセージは必要ないか。
つまり、画面を更新する時に、クリアしてるかチェックしちゃえばいいのだった。

そして、画面の更新のタイミングを考えてみると、主人公が動いた時だけだね。
って事は、むしろ必要なのは Keeper→Field のメッセージなのでわ。
ここを、ObservableとObserverにするべきか。

そろそろ整理する必要があるな。Observer と Observable のメッセージ関係。
()が継承、実装してるクラス、インターフェース
[]がメッセージの引数
→がメッセージを送信(Observable→Observer)
←がメッセージを受信(Observer←Observable)

Key(Observable)
→ Keeper [移動方向] : 「入力があったよ」

Field(Observer, Observable)
← Keeper : 「移動したよ」
→ ビュー : 「内部状態が更新したんでビューを更新してくんろ」

Keeper(Observer, Observable)
← Key [移動方向] : 「入力があったよ」
→ Field : 「移動したよ」

…あれ? これだけか。結構シンプルでした。

Key は、ウィンドウ(フレーム)に持たせる予定。
Field のコンストラクタに、ステージデータが書かれたファイル名を渡す。つまり、Field が Keeper や Box を生成するので、Keeper を Key に接続するのは Field の役目。
って事で、Field のコンストラクタは、
public Field(Key key, String filename)
という事になるかな。
Keeper へ Field を接続するのも、Field のコンストラクタでできる。
ビューを、Fieldに接続するのは、Field を生成したクラスに任せるって事で。

改めて UML 勉強しなくちゃいけないなって思った。さすがに。
週末に UML で描いてみます。

Posted at 03:33 / 1 Comments / 0 TrackBacks / Category : Study

22 Apr 2005 :: Storekeeper 設計編(2)+実装編(1)

うー。とりあえずGUI部分は後で考える事にして、Storekeeper のエンジンを書き始めてみたものの。
やっぱり慣れないJava。頭でわかってるつもりでも、書いてみると出てこない!
本に書いてあるコードは読めるのに、自分では書けない!
と、軽いノイローゼと、軽い痴呆症が入りつつ、がむしゃらに書いてみる。

あと、やっぱり実装の段階で、設計を修正する事も何度か。
うぅ… 設計が甘いとこういう事になるのね… この辺は経験値をつむしかなさそうだ…。

開発は eclipse + J2SE 1.5(Tiger) でやっています。
eclipse はすごいなぁ。こんなIDEが無料ってありえなーい。
JDKは、最初1.4.2系で始めたんですが… おおーい! 列挙型無いのかよ!! とすごい勢いでつっこんでしまったので、乗り換えますた。列挙型無しには生きていけない私。

Tigerのenumは、タイプセーフなので Delphi の組み込み型の列挙型に近いですね。
でも、ちゃんと java.lang.Object のサブクラスになってるのがすごい。驚き。

他にも、ジェネリック(C++のテンプレートみたいなモノ)とか、アノテーション(メタなデータを記述できる)とか、オートボクシング(プリミティブ→ラッパの自動変換)などなど、やべーぜTiger!さすが虎!タイガースのファンになっちゃいそう!!

とまあ、Javaリスペクトはこの辺にして。…えっ!? リスペクトって死語なの?
設計で、ObserverとObservableをアフォみたいに使ってたけど、例えばBoxには、コンストラクタでFieldを渡しちゃうので、Observableじゃなくてもいいかな、と。
Fieldに、クリアしたかどうか判定する judgeCleared() メソッドを用意して、Boxが移動した時に呼んでもらう。
Boxのpush(Direction)メソッドは、実際にはprotectedでabstractなdoPush(Direction)メソッドを呼ぶテンプレートメソッドにして、doPush が true を返したら、field.judgeCleared()を呼ぶって事で。

おおお、デザインパターンが自然に出てくるようになってきてちょっとカンドー。
結城 浩先生の「Java言語で学ぶデザインパターン入門」(ソフトバンクパブリッシング)のおかげです。勝手にリスペクト先生!!(死語らしいけど)

Posted at 02:45 / 3 Comments / 0 TrackBacks / Category : Study

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。