学習8日目:急がば回れ。

学習時間について。

  • Day:8
  • Today:7h
  • Total:59h

学習内容について。

今朝は開館直後の図書館に行ってJavaの本を借りてきました(下)。もっと基礎の本があるかと思っていたけど、実践で使う難し目のものしかなかった。。とはいえ、練習のための練習をしても仕方がないので応用として使えそうな技術は満遍なく習得したいと思います。右の本の内容が何を書いてあるのか全く理解できなかったけど、これが分からないと仕事にならないということだよね。。俄然やる気が出てきた!

昨日の続きで今日は5時間、以前学習したことの総おさらい。説明を見てから、模写ではなく自分でコードを書いてみる練習に集中しました。すると、断然理解の進み具合が全然違うことに自分でも驚いた。やっぱり、疑問点はそのままにしておくと後から大変なことになるね。コンストラクタもコードを書き換えたりすれば、何のためにあるのかが浮かび上がってきて納得。意味ないとか思ってたけど勘違いも甚だしい。。

あと、箱に例えてコードを書いてみるとイメージが湧いて、全体を俯瞰できる感じがしました。例えば、通常の箱=変数は動かせないけど、引数は動かせる箱のイメージ。戻り値はその箱を元の場所に戻す機能。。で合ってますよね?抽象的なイメージは具体的なモノに例えてみると良いかもね。

「継承」の練習。

一昨日カプセル化したファイルがあったので、それに関連する子クラスを作成する。

package test;

public class Hero extends Character {
    private Integer weapon;

    public Integer getWeapon() {
        return weapon;
    }

    public void setWeapon(Integer weapon) {
        this.weapon = weapon;
    }

    public Hero() {
    }

    public Hero(String name, Integer hp, Integer offense, Integer defense, Integer weapon) {
        super(name, hp, offense, defense); // 親クラス(Character)のコンストラクタを呼び出し
        this.weapon = weapon;
    }

}
package test;

public class Enemy extends Character {
    private String type;

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public Enemy() {
    }

    public Enemy(String name, Integer hp, Integer offense, Integer defense, String type) {
        super(name, hp, offense, defense);
        this.type = type;
    }

}

以前のクラスでは勇者と敵にも関わらず、同じクラス内にまとめていた。しかし、プレーヤーが操作するのは勇者だけで敵を操作することはない。そもそも性質が大きく異なるので両者に共通するプロパティ、メソッドは残しつつ(継承)、クラスを分割した。具体的には勇者には武器のプロパティ(整数)を子クラスに追加、敵には属性を加えて差別化。また、コンストラクタの継承はされないのでそれぞれに記述した。子クラスから親クラスのコンストラクタを呼び出していることに注意。

package test;

public class RPG {

    public static void main(String[] args) {
        Hero hero = new Hero("勇者", 9, 4, 5, 2);
        Enemy metal = new Enemy("はぐれメタル", 6, 3, 1, "スライム");

        hero.attack(metal);
        metal.attack(hero);
    }
}

/* 実行結果

勇者 は はぐれメタル に 3 のダメージを与えた!
ミス! はぐれメタル は 勇者 にダメージを与えられない!

*/

実行結果自体は前回と変わらないが、より拡張できるようになった。さらに要素を加えていけばゲームが作れるかな?恐らく途方もない道のりだと思うけど楽しそう。

今日の反省と明日の目標。

Java本を読んでいるけど、カリキュラムよりも深く知識が身に付く感じがします。しかし、知らない単語ばかりで1ページ理解するのにも時間がかかってしまう。。今やってるカリキュラムがいかに初心者向けかということかね。。約4ヶ月後には自力で調べて役立てていかないといけないから、その練習だと思って辛抱強く続けていきたいところです。

今日は復習がほとんどで新しいことはしてないけど、明日からはバリバリ行けそう。やっぱり、早めに申し込んでてよかったよ。メンターの方に基礎のことで質問するのはもったいないから、開始時までにポートフォリオ制作まで行くのが目標。そのためにも明日はデータベースの作成まで行かなきゃね。

閉じる