はじめまして。
株式会社PRUMでエンジニアをしている人見です。
日々、プログラミング学習や実務の中で
つまずきやすいポイントを整理して発信しています。
PRUMについて気になった方は、
コーポレートサイトもご覧ください。
▶ コーポレートサイト
前回をまだ読んでない方はこちら
👉 【ポケモン×Java】Lv14:『立ちはだかるライバル、ヌル!』
🎮 作戦タイム
ヌル「そんなもんか、ひとみん……」
ヌル「ピカチュウしか攻撃できないようじゃ、この先進めないぜ?」
ひとみん博士「焦る必要はない。あいつも昨日までキミと同じだったんだから」
ヌル「!!」
ひとみん博士「さぁ、次のステージへレベルアップだ!」
💡 技術テーマ:抽象クラス(共通化)
▷ ヒトカゲ、ピカチュウ、ゼニガメの違いを確認
📖 博士ポイント①
ゼニガメとヒトカゲとピカチュウって何が違う?
| 種類 | データ型 | ピカチュウクラス | ヒトカゲクラス | ゼニガメクラス |
|---|---|---|---|---|
| 情報 | 名前 | ピカチュウ | ヒトカゲ | ゼニガメ |
| 情報 | タイプ | でんき | ほのお | 水 |
| 情報 | HP | 100 | 100 | 100 |
| 情報 | 技 | 4つ | 4つ | 4つ |
| 情報 | 技の威力 | 4つ | 4つ | 4つ |
| 命令 | 登場 | Pikachu() | Hitokage() | Zenigame() |
| 命令 | 鳴く | cry() | cry() | cry() |
| 命令 | 攻撃 | attack(Hitokage,No) | attack(Pikachu,No) | attack(???,No) |
ポケモンたちは、名前やタイプなどそれぞれ個性があるけど、
同じような情報(フィールド)・命令(メソッド)を持っているだろう!
ヒトカゲ、ゼニガメ、ピカチュウ……みんな仲間だね!
みんなまとめて、ポケモンって呼べるようにしてあげよう
▷ 共通の型 Pokemon を作ろう!
📖 博士ポイント②
同じ情報を整理してみよう
abstract class Pokemon {
String name;
String type;
int hp;
String[] moves;
int[] powers;
abstract void cry();
void attack(Pokemon target, int moveIndex) {
System.out.println(name + " の " + moves[moveIndex] + "!");
target.hp = target.hp - powers[moveIndex];
System.out.println(target.name + " に " + powers[moveIndex] + " のダメージ!");
System.out.println(target.name + " の HP は " + target.hp + " になった!");
}
}
📒 トレーナーメモ①
abstract「処理を決めていないよ」という意味- こんな情報や、命令があるのがポケモンだよ!ってまとめてあるんだ。
ちなみに、、、抽象化ってなに?(覚えなくていい)
「抽象化」って聞くと難しそうだけど、
実はこういうことなんだ:
名前も姿も違っても、やってることは同じなら、
まとめて“仲間”って呼べばいい!
例:
- カレー・パスタ・うどん → 食べ物
- ネコ・イヌ・ウマ → 動物
- ヒトカゲ・ピカチュウ・ゼニガメ → ポケモン
共通点を見つけてひとつにまとめる。
それがプログラミングにおける「抽象化」だよ!
次回:『ヒトカゲも、ピカチュウも、同じポケモン!?』
ポケモンたちを仲間として扱えるようになったことで、
どんなポケモンとも戦うことができるぞ!
次は、ポケモンの仲間という情報*に
ピカチュウという個性**を付けていこう
次の投稿まで――
ピッピカチュウ!!
PRUMのエンジニアの95%以上は、未経験からの採用です。
よければ、HP遊びに来てください!