はじめに
こんにちは🐢みどりがめです。
本記事は「未経験のためのアウトプット道場」の第6回「オブジェクト指向」です。
今回は基本的なクラスの作成と、継承に関する演習問題です!!
理解が重要な本テーマですが、演習問題を解くことで更に理解が深まりますので是非挑戦してください!
また、「未経験のためのアウトプット道場」には多くの演習問題を掲載しています。是非、合わせて学習してください!!
演習問題
今回は2問あります。じっくり考えてどうしても分からない場合、答えを確認しましょう。
演習 6−1
- 下記の情報を持つ、Turtle(日本語:かめ)クラスを作成する。
Turtleクラス | 変数名、メソッド名 | 変数、メソッドの意味 |
変数 | ・String name ・int hp ・int attackPoint | ・名前 ・体力(初期値50) ・攻撃力(初期値:10) |
メソッド | ・sayNameAndHp() ・sleep() ・bite(Turtle turtle) | ・名乗る (自分の名前を名乗った後、現在の体力を言う。) ・寝る(hpを10増やす。) ・噛み付く (引数で受け取った相手のhpを攻撃力分減らす。) |
- mainクラスでTurtleクラスのオブジェクトを2つ生成する。内容は下記とする。
①name:かめたろう、hp:初期値、攻撃力:初期値
②name:かめきち、hp:初期値、攻撃力:初期値 - かめたろうのbiteメソッドを実行し、かめじろうのhpを10減少させる。
- かめじろうのbiteメソッド3回を実行し、かめたろうのhpを30減少させる。
- かめたろうのsleepメソッドを実行する。
- かめたろうのsayNameAndHpメソッドを実行する。
⇒Hpが30であることを確認する。 - かめじろうのsayNameAndHpメソッドを実行する。
⇒Hpが40であることを確認する。
public class Turtle {
String name;
int hp = 50;
int attackPoint = 10;
void sayNameAndHp() {
System.out.println("私の名前は"+this.name+"です。");
System.out.println("現在の体力は"+this.hp+"です。");
}
void sleep() {
this.hp += 10;
}
void bite(Turtle turtle) {
turtle.hp -= this.attackPoint;
}
}
public class Main {
public static void main(String[] args) {
Turtle turtleA = new Turtle();
Turtle turtleB = new Turtle();
turtleA.name = "かめたろう";
turtleB.name = "かめじろう";
// かめたろうのbiteメソッドを実行し、かめじろうのhpを10減少させる。
turtleA.bite(turtleB);
// かめじろうのbiteメソッド3回を実行し、かめたろうのhpを30減少させる。
turtleB.bite(turtleA);
turtleB.bite(turtleA);
turtleB.bite(turtleA);
// かめたろうのsleepメソッドを実行する。
turtleA.sleep();
turtleA.sayNameAndHp();
turtleB.sayNameAndHp();
}
}
演習 6−2
- 下記の情報を持つ、Animal(日本語:動物)クラスを作成する。
Animalクラス | 変数名、メソッド名 | 変数、メソッドの意味 |
変数 | ・String name ・int hp ・int attackPoint | ・名前 ・体力(初期値40) ・攻撃力(初期値:10) |
メソッド | ・sayNameAndHp() ・sleep() | ・名乗る (自分の名前を名乗った後、現在の体力を言う。) ・寝る(hpを10増やす。) |
- Animalクラスを継承したRabbit(日本語:うさぎ)クラスを作成する。
Rabbitクラス | 変数名、メソッド名 | 変数、メソッドの意味 |
変数 | ・String name ・int hp ・int attackPoint | ・名前 ・体力(初期値30) ・攻撃力(初期値:10) |
メソッド | ・sayNameAndHp() ・sleep() ・jump() | ・名乗る (自分の名前を名乗った後、現在の体力を言う。) ・寝る(hpを10増やす。) ・はねる(hpを5減らす。) |
- mainクラスでRabbitクラスのオブジェクトを生成する。内容は下記とする。
①name:うさこ、hp:初期値、攻撃力:初期値 - うさこのsayNameAndHp()メソッドを実行する。
⇒Hpが30であることを確認する。 - うさこのjump()メソッドを実行する。
- うさこのsayNameAndHp()メソッドを実行する。
⇒Hpが25であることを確認する。
public class Animal {
String name;
int hp = 40;
int attackPoint = 10;
void sayNameAndHp() {
System.out.println("私の名前は"+this.name+"です。");
System.out.println("現在の体力は"+this.hp+"です。");
}
void sleep() {
this.hp += 10;
}
}
public class Rabbit extends Animal {
int hp = 30;
//以下を記載してオーバーライドしないと
//sayNameAndHp()実行時にhpが40と表示される。
@Override
void sayNameAndHp() {
System.out.println("私の名前は"+this.name+"です。");
System.out.println("現在の体力は"+this.hp+"です。");
}
void jump() {
this.hp -= 5;
}
}
public class Main {
public static void main(String[] args) {
Rabbit rabbit = new Rabbit();
rabbit.name = "うさこ";
rabbit.sayNameAndHp();
rabbit.jump();
rabbit.sayNameAndHp();
}
}
終わりに
以上で本記事は終了となります。お疲れ様でした。最後までご覧いただきありがとうございました。
本記事の内容を繰り返し学習することで、基本的な文法については思い通りに手を動かして記述することができるようになります。
引き続き、プログラミングについて定期的に発信していきますのでよろしくお願いします!
また、もしよろしければtwitterもフォローしていただけると嬉しいです。
コメント