第2回.UMLで勉強しなおし。
Masa:
前回は、ツールを使って、これまでのコードを【リバースエンジニアリング】してUMLを書いてみました。今回は、もう少し【勉強し直し】の方をやります。
ほるえ:
あ、この企画2回目あったんですね。あれで終わりかと思ってました。でなにを勉強するんですか?
Masa:
とりあえず前回の【クラス図】で、各変数の可視性を考えていないので、この部分を考えてみます。あと、前回通常のクラスから継承しているところを【抽象クラス】にしますでその後、いよいよJBuilderに持っていってコンパイルするところまで行きます。
ほるえ:
ずいぶん盛りだくさんですが、大丈夫ですか?(小声:あとで、ネタに困ってもしりませんよっ)
Masa:
むっ。そ、そっかちょっと減らそうかなー。
いやいや、できるだけゲーム製作本編に入れるように、がんばらんと。
ほるえ:
大丈夫かなー
「抽象クラスを使ってみる」
クラス図の基本は前回のものとそんなに変わっていません。変更した部分は、Characterクラスを【抽象クラス】にしたことです。
EAでは、クラス名が斜体で表示され、クラスの右下に{abstract}と表示されます。
【抽象メソッド】pilotを作りました。
Enemyクラス側pilotメソッド:Myshipの座標を受けとり、それを追いかけるようにしています。
Myshipクラス側pilotメソッド:マウスの座標を受け取り、それを追っかけるようにしています。
ってそんなに差がありませんか・・・まっ今回は練習なので、使ってみることが先決です。
用語集
1)抽象クラスとは
処理本体を持っていないメソッドがもてるクラスのことを抽象クラス、そのメソッドを抽象メソッドといいます。実際に処理を持っていないのでそれ自体をインスタンス化することは出来ず、サブクラスで使用することになります。この時、【属性の可視性】は、protectedにします。
Javaコードとしては次のようなものになります。
抽象クラス
abstract class Sample{・・・・・}
抽象メソッド
abstract public void sample();
ここで、注意することは、【抽象クラス】はインスタンス化できないということです。つまり、【抽象クラス】内にコンストラクタは出来ないはず・・・なんですがEAはなぜだか作ってくれます。(^-^;なんか裏技があるのかなー。
2)属性の可視性
EAでは、属性となって今いすが、一般的にはフィールド変数が正しい言い方でしょう。これには他からのアクセス性で主に次の3つに分けられます。
public
クラス外部から自由にアクセス可能
private
クラス外部からのアクセス不可
protected
同じパッケージないならばアクセス自由
フィールド変数にpublicを使用していると、簡単なのですが他からアクセス自由なので安全なプログラムとはいえません。でもすべてprivateでやってしまうと継承先からのアクセスが不可になってしまい不便です。で、protectedにします。こうしておくと同一パッケージからのアクセスはpublicになり、違うパッケージからはprivateになります。
Masa:
まあ、とりあえずはこんなところで、コンパイルかけてみましょ。
ほるえ:
むー。せんせーコンパイルかけるって行ってもファイルがいっぱいあってどうすればいいのかわかりませーん。こんなところに、入れた覚えのないものがありますですぅ。
Masa:
あぁ。それはパッケージの指定をしているやつでEAを使うと自動的に吐き出してくれているんだよ。
ほるえ:
吐き出すってなんかやだ。
Masa:
中田や小野だって試合途中で「ぺっ」てやってるだろ。同じだ。同じ。
ほるえ:
あれは許す。
Masa:
なんやそれっ。
「JBuilderでコンパイルをかけてみる」
ファイルの新規プロジェクトでパッケージ名を指定してプロジェクトを作ります。
プロジェクトのプラスマーク
を押してクラスを追加していきます。
HTMLファイル
game(pakege名と同じ名前のフォルダ)
鷲ina22.class
HTML内のコードは、次のように書きます。
<applet code="game.hina22.class" width=300 height=400>
</applet>
こんな感じになります。
Masa:
はーなんか駆け足だったけど、とりあえず公約どおり、コンパイルまでいったぜ。
ほるえ:
ふーん。結局パッケージっていうのはフォルダーみたいなもので、JBuilderもHTMLもそれにあわせてやればいいわけですね。今回は、そんなに眠くなかったです。免疫できたかなですぅ。
Masa:
免疫って・・・
Copyright (C) 錬金術師Masa
新規:2005年11月13日
http://www.katch.ne.jp/~mh524-1997/