1.ゲームを作ることになりスライムを登場させることになった。そこで名前とHP(初期値20)をパラメータとして持つpublicなSlimeクラスを作成せよ。コンストラクタやメソッドの実装は不要でクラス内のアクセス修飾子は無印(パッケージプライベート)とする。

●Slimeクラス

public class Slime {
	String name;
	int hp=20;
}

2.SlimeAppクラスを作成し、2匹のスライムをnewせよ。その際変数名はsurarinとsurakitiとし、名前は「スラリン」と「スラキチ」とすること。

●SlimeAppクラス

public class SlimeApp {
	public static void main(String[] args) {
		Slime surarin=new Slime();
		surarin.name="スラリン";
		Slime surakiti=new Slime();
		surakiti.name="スラキチ";
	}
}

3.スライムクラスに現れた時のメッセージを表示するインスタンスメソッドを作成せよ。
処理内容は実行例を参考にすること。

void appear(){処理}

またSlimeAppクラスで生成した2匹のインスタンスにこのメソッドを実行させること。

[実行例]
スラリンが現れた!!
スラキチが現れた!!

●Slimeクラス

public class Slime {
	String name;
	int hp=20;
	
	void appear(){
		System.out.println(this.name+"が現れた!!");
	}
}

●SlimeAppクラス

public class SlimeApp {
	public static void main(String[] args) {
		Slime surarin=new Slime();
		surarin.name="スラリン";
		Slime surakiti=new Slime();
		surakiti.name="スラキチ";
		
		surarin.appear();
		surakiti.appear();
	}
}

4.Slimeクラスにコンストラクタ追記し、newの際に名前を渡すこともできるようにせよ。
またSlimeAppクラスでこのコンストラクタを用いスラッチをnewせよ。
実行例は以下
[実行例]
スラリンが現れた!!
スラキチが現れた!!
スラッチが現れた!!

●Slimeクラス

public class Slime {
	String name;
	int hp=20;
	Slime(){
		
	}
	Slime(String name){
		this.name=name;
	}
	
	void appear(){
		System.out.println(this.name+"が現れた!!");
	}
}

●SlimeAppクラス

public class SlimeApp {
	public static void main(String[] args) {
		Slime surarin=new Slime();
		surarin.name="スラリン";
		Slime surakiti=new Slime();
		surakiti.name="スラキチ";
		
		surarin.appear();
		surakiti.appear();
		
		Slime surachi=new Slime("スラッチ");
		surachi.appear();
	}
}


5.Slimeクラスにおいてすべてのフィールドはprivate,コンストラクタとメソッドはpublicでアクセス修飾し、
すべてのフィールドに対してgetterとsetterを実装せよ。処理内容は値を得る、値をセットするという標準的な機能だけでよく、値が適正がどうかの検証はなしでよいものとする。
また、SlimeAppクラスもエラーが出ないように修正せよ。
[実行例]
スラリンが現れた!!
スラキチが現れた!!
スラッチが現れた!!
●Slimeクラス

public class Slime {
	private String name;
	private int hp=20;
	public Slime(){
		
	}
	public Slime(String name){
		this.name=name;
	}
	
	public void appear(){
		System.out.println(this.name+"が現れた!!");
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getHp() {
		return hp;
	}
	public void setHp(int hp) {
		this.hp = hp;
	}
	
}

●SlimeAppクラス

public class SlimeApp {
	public static void main(String[] args) {
		Slime surarin=new Slime();
		surarin.setName("スラリン");
		Slime surakiti=new Slime();
		surakiti.setName("スラキチ");
		
		surarin.appear();
		surakiti.appear();
		
		Slime surachi=new Slime("スラッチ");
		surachi.appear();
	}
}

6.Slimeクラスにトータル何匹のスライムを生成したかをカウントするスタティックフィールドを実装する。

private static int totalCount;

totalCountを取得するメソッドを以下のように追加する

public static int getTotalCount(){処理};

Slimeクラスでインスタンスが生成される毎にトータルカウントが増えるように処理を追記し、SlimeAppクラスに以下の実行結果となるように処理を追記せよ。
[実行例]
スラリンが現れた!!
スラキチが現れた!!
スラッチが現れた!!
3匹のスライム軍団が襲いかかってきた!
●Slimeクラス

public class Slime {
	private String name;
	private int hp=20;
	private  static int totalCount;
	public Slime(){
		totalCount++;
	}
	public Slime(String name){
		//this();
		totalCount++;
		this.name=name;		
	}
	
	public void appear(){
		System.out.println(this.name+"が現れた!!");
	}
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getHp() {
		return hp;
	}
	public void setHp(int hp) {
		this.hp = hp;
	}
	public static int getTotalCount(){
		return totalCount;
	}
	
}

●SlimeAppクラス

public class SlimeApp {
	public static void main(String[] args) {
		Slime surarin=new Slime();
		surarin.setName("スラリン");
		Slime surakiti=new Slime();
		surakiti.setName("スラキチ");
		
		surarin.appear();
		surakiti.appear();
		
		Slime surachi=new Slime("スラッチ");
		surachi.appear();
		System.out.println(Slime.getTotalCount()+"匹のスライム軍団が襲いかかってきた!");
		
	}
}

7.
Slimeクラスに攻撃をするインスタンスメソッドを以下のように実装する。


public void attack(){
		System.out.println(this.name+"の攻撃:5ポイントのダメージを与えた!");
	}

SlimeAppクラスで生成済みの3匹のスライムを配列に格納し、以下の処理を実現せよ。
[実行例]
スラリンが現れた!!
スラキチが現れた!!
スラッチが現れた!!
3匹のスライム軍団が襲いかかってきた!
スラリンの攻撃:5ポイントのダメージを与えた!
スラキチの攻撃:5ポイントのダメージを与えた!
スラッチの攻撃:5ポイントのダメージを与えた!

●Slimeクラス

public class Slime {
	private String name;
	private int hp=20;
	private  static int totalCount;
	public Slime(){
		totalCount++;
	}
	public Slime(String name){
		//this();
		totalCount++;
		this.name=name;	
	}
	
	public void appear(){
		System.out.println(this.name+"が現れた!!");
	}
	public void attack(){
		System.out.println(this.name+"の攻撃:5ポイントのダメージを与えた!");
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getHp() {
		return hp;
	}
	public void setHp(int hp) {
		this.hp = hp;
	}
	public static int getTotalCount(){
		return totalCount;
	}
	
}

●SlimeAppクラス

public class SlimeApp {
	public static void main(String[] args) {
		Slime surarin=new Slime();
		surarin.setName("スラリン");
		Slime surakiti=new Slime();
		surakiti.setName("スラキチ");
		
		surarin.appear();
		surakiti.appear();
		
		Slime surachi=new Slime("スラッチ");
		surachi.appear();
		System.out.println(Slime.getTotalCount()+"匹のスライム軍団が襲いかかってきた!");
		
		Slime[] slimes=new Slime[Slime.getTotalCount()];
		slimes[0]=surarin;
		slimes[1]=surakiti;
		slimes[2]=surachi;
		
		for(int i=0;i<slimes.length;i++){
			slimes[i].attack();
		}
	}
}