エンジニア成長日記 swaponQ

コンピュータサイエンス専攻の一般人のブログです。

新・明解 Java 入門 演習 14-2 解答

Hello, Terminal!swaponQです!

今回は演習 14-2 に取り組んでいこうと思います。

  • 演習 14-2

ロボット型ペットクラスRobotPet(p.407)を拡張した、着せかえ可能なロボット型ペットクラスを作成せよ。インタフェースSkinnableを実装すること。


・Pet.java

class Pet {
  private String name;

  public Pet(String name) {
    this.name = name;
  }
  public String getName() {
    return name;
  }

  public void introduce() {
    System.out.println("■僕の名前は" + name + "です!");
  }
}

class RobotPet extends Pet {
  public RobotPet(String name) {
    super(name);
  }
  public void introduce() {
    System.out.println("◇私はロボット。名前は" + getName() + "。");
  }
}

・Skinnable.java

public interface Skinnable {
  int BLACK = 0;
  int RED = 1;
  int GREEN = 2;
  int BLUE = 3;
  int LEOPARD = 4;
  void changeSkin(int skin);
}

・SkinnableRobotPet.java

class SkinnableRobotPet extends RobotPet implements Skinnable {
  private int skin;

  public SkinnableRobotPet(int skin, String name) {
    super(name);
    this.skin = skin;
  }

  public void changeSkin(int skin) {
    System.out.print("スキンを");
    switch(skin) {
      case BLACK: System.out.print("漆黒"); break;
      case RED: System.out.print("深紅"); break;
      case GREEN: System.out.print("柳葉"); break;
      case BLUE: System.out.print("露草"); break;
      case LEOPARD: System.out.print("豹柄"); break;
      default: System.out.print("無地"); break;
    }
    System.out.println("に変更しました。");
  }
}

・PetTester.java

import java.util.Scanner;

class PetTester {
  public static void main(String[] args) {
    SkinnableRobotPet p = new SkinnableRobotPet(0, "クロ");
    p.introduce();
    p.changeSkin(Skinnable.RED);
  }
}

・実行結果

◇私はロボット。名前はクロ。
スキンを深紅に変更しました。

今回は以上です。お疲れ様でした!

さて、次回は演習 14-3 です。

Goodbye, Terminal… swaponQでした!