2014年01月17日
JavaEEの前に復習をしてみる その9 メソッドを分けてみる。
JavaEEの前に復習をしてみる その6で、Shadeがスイッチ文で行動を分岐しました。
それを一つのメソッドの中に処理を全部書くと、とても見づらいですし、
1つの処理を直すために、全部の処理を書き直す。なんてことになります。
なので、まず、メソッドを分けることについて考えます。
今までだと、1つのクラスの中に、1つのメソッドでしたが、
1つのクラスに4つのメソッドを入れてみます。
mainメソッドと、attackメソッドと、defenceメソッドと、recoveryメソッドです。
package test;
public class Renshu3{
String job = "勇者" ;
static String name = "Shade" ;
static int hitpoint = 10;
static int maxHitpoint = 20;
int at = 5;
static int df = 5;
public static void main (String [] args){
System. out .println( "1.攻撃 / 2.防御 /3.回復" );
int select = new java.util.Scanner(System. in ).nextInt();
switch (select){
case 1:attack( "ゴブリン" );
break ;
case 2:defence();
break ;
case 3:recovery();
default :System.out .println ("なにもしなかった。" );
}
}
public static void attack(String enemyName){
System. out .println(enemyName+ "に攻撃!" );
}
public static void defence(){
System. out .println( name +"は身を守っている。" );
df = df * 2;
}
public static void recovery(){
System. out .println( name +"は、けがの治療に専念した。" );
hitpoint = maxHitpoint ;
}
}
その6ではケースごとに、コンソールへ結果を出力していましたが。
ケースごとに、メソッドを呼び出すことによって、そのメソッドの内部のコードを処理させています。
それぞれ役割が別れているため、コードも見やすいですし、対象メソッドの中身だけ修正すれば、
mainメソッドの中身は変える必要がないのです。
また、
case 1:attack( "ゴブリン" );
メソッドを実行させる際に、値を持たせることができます。
public static void attack(String enemyName){
System. out .println(enemyName+ "に攻撃!" );
メソッド側で、その値を受け取って処理を継続させることもできます。
結果は、下記のように。
1.攻撃 / 2.防御 /3.回復
1
ゴブリンに攻撃!
ここまでの知識で、ある程度のプログラムは組めるような気がしてきますが、
このプログラムはJavaらしさ0です。上司にこのプログラムを見せて、プラグラミングやらせてください!
とか言ったら、お前はインフラにずっといるがよい。フハハハハ!!という魔王並みの発言をされますね。(※ そんな上司はいません)
正直、オブジェクト指向は、あまり得意ではありません。復習と同時に得意にならねばならないな・・・。
それを一つのメソッドの中に処理を全部書くと、とても見づらいですし、
1つの処理を直すために、全部の処理を書き直す。なんてことになります。
なので、まず、メソッドを分けることについて考えます。
今までだと、1つのクラスの中に、1つのメソッドでしたが、
1つのクラスに4つのメソッドを入れてみます。
mainメソッドと、attackメソッドと、defenceメソッドと、recoveryメソッドです。
package test;
public class Renshu3{
String job = "勇者" ;
static String name = "Shade" ;
static int hitpoint = 10;
static int maxHitpoint = 20;
int at = 5;
static int df = 5;
public static void main (String [] args){
System. out .println( "1.攻撃 / 2.防御 /3.回復" );
int select = new java.util.Scanner(System. in ).nextInt();
switch (select){
case 1:attack( "ゴブリン" );
break ;
case 2:defence();
break ;
case 3:recovery();
default :System.out .println ("なにもしなかった。" );
}
}
public static void attack(String enemyName){
System. out .println(enemyName+ "に攻撃!" );
}
public static void defence(){
System. out .println( name +"は身を守っている。" );
df = df * 2;
}
public static void recovery(){
System. out .println( name +"は、けがの治療に専念した。" );
hitpoint = maxHitpoint ;
}
}
その6ではケースごとに、コンソールへ結果を出力していましたが。
ケースごとに、メソッドを呼び出すことによって、そのメソッドの内部のコードを処理させています。
それぞれ役割が別れているため、コードも見やすいですし、対象メソッドの中身だけ修正すれば、
mainメソッドの中身は変える必要がないのです。
また、
case 1:attack( "ゴブリン" );
メソッドを実行させる際に、値を持たせることができます。
public static void attack(String enemyName){
System. out .println(enemyName+ "に攻撃!" );
メソッド側で、その値を受け取って処理を継続させることもできます。
結果は、下記のように。
1.攻撃 / 2.防御 /3.回復
1
ゴブリンに攻撃!
ここまでの知識で、ある程度のプログラムは組めるような気がしてきますが、
このプログラムはJavaらしさ0です。上司にこのプログラムを見せて、プラグラミングやらせてください!
とか言ったら、お前はインフラにずっといるがよい。フハハハハ!!という魔王並みの発言をされますね。(※ そんな上司はいません)
正直、オブジェクト指向は、あまり得意ではありません。復習と同時に得意にならねばならないな・・・。