オブジェクト指向(基本4)

Java

お題

一般クラスGunとアプリケーションクラスGunAppを作成し、以下の処理を実現する。

実行例

実行例の中の
———->
は弾丸を発射している様子を表している。

---------->
[P38, ***********_]
---------->
[P38, **********__]
---------->
---------->
---------->
---------->
---------->
---------->
弾切れだ!
弾切れだ!
弾切れだ!
弾切れだ!
[44マグナム, ______]
6発装弾しました。
[44マグナム, ******]

手順

◯新規ファイルGunApp.javaを作成する。内容は以下

public class GunApp {
	public static void main(String[] args) {
		

	}
}

◯GunAppクラスの下にGunクラスを作成する。記述は以下

public class GunApp {

	public static void main(String[] args) {
		

	}

}
class Gun{
	
}

以下はGunクラスに記述していくこと

◯フィールド変数
ガンの名前 String name;
ガンの最大装弾数 int maxBullet;
現在の装弾数 int bullet;

◯コンストラクタ
1. 引数2つのコンストラクタ -> String name と int maxBulletを引数に受取
this.nameとthis.maxBullettとthis.bulletを初期化する。この際、this.bulletはmaxBulletと同じにすること
 2.引数なしのコンストラクタ->名前をP38 最大装弾数12,装弾数12で初期化する。この際、1のコンストラクタを呼び出すようにすること

◯メソッド(メソッドの挙動は実行例を参考にすること)
void shot() 弾を発射する。ただし、弾がないときは[弾切れだ!]と表示する

void loading(int bullet) 引数の数だけ装弾数を増やす。最大装弾数を超える場合は最大装弾数とする。
void displayInfo() 現在のガンの情報を表示する。

インスタンスの作成

◯上部にあるmainメソッドの中でGunクラスのインスタンスを引数なしで作成し、Gun型の変数g1に代入する

◯g1がshot()する

◯g1がdisplayInfo()を行う

◯g1がshot()する

◯g1がdisplayInfo()を行う

◯Gunクラスのインスタンスを[名前を44マグナム,最大装填数を6]で作成し、Gun型変数g2に代入する。

◯10回まわるforループを作成し、その中でg2がshot()する

◯g2がdisplayInfo()する

◯g2がloading(10)する

◯g2がdisplayInfo()する

解答例


public class GunApp {

	public static void main(String[] args) {
		Gun g1 = new Gun();
		g1.shot();
		g1.displayInfo();
		g1.shot();
		g1.displayInfo();

		Gun g2 = new Gun("44マグナム",6);
	
		for(int i=0;i<10;i++){
			g2.shot();
		}
		g2.displayInfo();
		g2.loading(10);
		g2.displayInfo();

	}

}
class Gun{
	//フィールド
	String name;
	int maxBullet;
	int bullet;
	//コンストラクタ
	Gun(){
		this("P38",12);
	}
	Gun(String name,int maxBullet){
		this.name = name;
		this.maxBullet = maxBullet;
		this.bullet = maxBullet;
	}
	//メソッド
	void shot(){
		if(this.bullet == 0){
			System.out.println("弾切れだ!");
			return;
		}
		this.bullet--;
		System.out.println("---------->");
	}
	void loading(int bullet){
		int loaded = 
			Math.min(this.maxBullet-this.bullet,bullet);
		this.bullet += loaded;
		System.out.printf("%d発装弾しました。%n",loaded);
	}
	void displayInfo(){
		System.out.printf("[%s, ",this.name);
		for(int i =0;i<this.maxBullet;i++){
			if( i < this.bullet){
				System.out.print("*");
			}else{
				System.out.print("_");
			}
		}
		System.out.println("]");
	}
}
Java
スポンサーリンク
シェアする
mjpurinをフォローする
ジョイタスネット

コメント

タイトルとURLをコピーしました