第4回.UMLで勉強しなおし。
ほるえ:
・・・うーん。やっぱりこっちのメッセージは、こうした方がいいかな〜。でも、そうするとクラス図のここは、こう書き直してっと・・・
Masa:
おっ、やってるな。調子はどうかな?
ほるえ:
あ、マスター。なんかこうグルグル回ってるって感じですぅ。
Masa:
ぐるぐる?
ほるえ:
んと、シーケンス図かていると、どうしてもクラス図とあわなくなって・・・。それで、クラス図をいじってみて、またシーケンス図にいって・・でまた戻るって感じになってます。
Masa:
うん。そういうのも【イタレーション】の一部なんだろうな。
ほるえ:
イタレーションってなに?
Masa:
まあ平たく言えば、UMLをごちゃごちゃいじくり回して、どんどん改良していくってことだ。
ほるえ:
ふーん。
「インベーダー」のシーケンス図。
ほ:はー。はじめは、前回のままでシーケンス図作ってたんですが、どうも同じことを繰り返している部分が多かったので思い切って変更したら、結局
的な変更になっちゃいました。あと、人方マークですが、これはUMLで決められている記述方法で決してほるえのいたずら書きじゃありません。
もとのコードは、こちら↑
シーケンス記述
@
ユーザーは、スタートキーによりインベーダーゲームスタートを指示す。
A
gameMasterは、Myship,Missile,Totikaをインスタンス化します。あと、enemyとUfoはComputerクラスからインスタンス化しておきます。(ほ:一様、それで大丈夫なはずさっ)
B
ユーザーからのマウス操作で、位置とミサイル発射判定をします。
C
(次に、コンピュータ側の処理に移ります。)gameMasterは、Computerを読み出します。
D
Computerは、enemyの移動と攻撃、UFO出現、移動処理を行います。enemyがTotikaに接触した場合、Totika側が消滅します。
E
gameMasterは、missileを読み出します。
F
missileは、myship,Totika,enemy,UFOとの接触判定を行います。
Masa:
なかなか、良く出来てるんじゃないの?いっちょまえに分岐とか使ってるし・・・
ほるえ:
んでも、前回のクラス図に出てたのを大分消しちゃいましたよ。
Masa:
ん。例えば?
ほるえ:
例えば、前回のクラス図だとEnemyになっているやつが、computerになってますし、インベーダのタイプ別にクラスを分けてたのを、やっぱり元に戻したり。それから・・・・
Masa:
わかった、わかった。さっきも言ったように、イタレーションした結果だから、今の段階だと、このクラス図が最良だとおもうよ。
ほるえ:
今の段階って?
Masa:
つまりは、実装をはじめると、また手直しがしたくなるってこと。そうやって、クラス図、シーケンス図を管理しておけば、後で見直す時に楽になるから。
ほるえ:
てことは、まだまだこのグルグル状態が続くってことじゃないですかっ。
Masa:
ま、そうとも言うな。
クラス図を整理する。
@アクティブクラスの名前がhina17では、あんまりなのでgameMasterにしました。かっこいいでしょ?
ACharacterをいろんなところから継承していたんですが、Myship,Enemy,Ufoだけにしました。
BMissileについても、自分が発射したミサイルとインベーダが発射したミサイルを同じクラスで処理します。
Cコンピュータ側の処理を行うクラス、Computerを入れました。
でこんなクラス図になりましたです。
Masa:
こう思うと、やっぱ動的な分析って大事だな。
ほるえ:
そうですね。多分あのまま実装に入ってたら、大変なことになってました。
Masa:
おほん。でいよいよ、次回は実装に入るか。この感じだとかなり作り直しなので覚悟するように。
ほるえ:
は〜い。がんばりマース。
Copyright (C) 錬金術師Masa
新規:2005年12月10日
http://www.katch.ne.jp/~mh524-1997/