メインメソッドを変更しない
表題にある子の文言の意味は、下のように実行する処理をクラスに任せてしまうという方法です。
その他にも、アイディアの数だけあるのでよりよい方法を考えるのも面白いと思います。
- 処理の内容を分割してやる
- 処理を引数、入力値でハンドルする
数え上げればきりがありませんが、今回の「処理をクラスに任せてしまう」という方法は極端ですが、下のような方法です。
public static void main(String[] args) {
SomeClassA clsA = new SomeClassA();
clsA.execute();
}
これで、メインメソッドを修正する必要がありません。
クラスを使用すると
メインメソッドを変更しなくても処理を変更できます。
具体的に、下のようにやります。
以前作成したメインメソッド
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String input = scan.next();
FirstCls first = new FirstCls();
boolean isNumber = first.isNumberString(input);
if (isNumber) {
System.out.println(input + "は数字です。");
} else {
System.out.println(input + "は数字ではありません。");
}
}
}
このクラスから呼び出しているFirstClsを修正してやれば、Mainクラスは修正する必要がありません。
なんか「とんち」のような話ですが(笑)
応用レベル1
現段階では、応用幅が小さいのでMainメソッドを修正します。
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String input = scan.next();
FirstCls first = new FirstCls();
if ("exe".equals(input)) {
first.execute();
}
boolean isNumber = first.isNumberString(input);
if (isNumber) {
System.out.println(input + "は数字です。");
} else {
System.out.println(input + "は数字ではありません。");
}
}
}
FirstClsのexecuteメソッドを起動するように修正しました。
クラスに処理を追加する
はじめの入力で「exe」と入力するとFirdtClsのexecuteメソッドが起動します。
単純に、FirstClsの中に、適当な処理を実装しただけです。
public void execute(Scanner scan) {
System.out.println("*** EXECUTEを起動します ***");
Map<String, String> map = new HashMaplt;>();
map.put("test", "Testing this program!");
map.put("prac", "Practice this program!");
map.put("try", "Try this program!");
while(true) {
System.out.print("コマンドを入力してください: ");
String str = scan.next();
if (map.containsKey(str) == false) {
break;
}
System.out.println(map.get(str));
}
}
今回は、Mapインターフェースを使用して見ました。
キーと値がセットになって、データの取り出し、保存を行うことができます。
ここで言う保存はJavaが起動している間だけの保存です。
このままでは、大した発展があったようには思えませんので、一捻り加えます。ちなみに、execute()の処理が終わった後に、何かしらの文言が出ます。
一捻り
単純ですが、FirstClsにあるメソッドisNumberString()
を呼び出すように修正します。
public void execute(Scanner scan) {
System.out.println("*** EXECUTEを起動します ***");
Map<String, String> map = new HashMap<>();
map.put("test", "Testing this program!");
map.put("prac", "Practice this program!");
map.put("try", "Try this program!");
while(true) {
System.out.print("コマンドを入力してください: ");
String str = scan.next();
if (map.containsKey(str) == false) {
break;
}
isNumberString(str);
System.out.println(map.get(str));
}
}
こんな感じです。
今日のところは、ここまでにしておきます。
でわでわ。。。
関連ページ
- Java はじめて 1 〜メインメソッド〜
- Java はじめて2 〜メソッドを呼び出す〜
- Java はじめて3 〜コメントの書き方〜
- Java はじめて4〜練習問題をやってみる〜
- Java はじめて5 〜変数について〜
- Java はじめて6 〜変数について2、byte, char, boolean型〜
- Java はじめて7 〜配列とは、配列の使い方〜
- Java はじめて8 〜booleanとif~
- Java はじめて 9 〜switch文〜
- Java はじめて 10 〜ループ処理A: for文1〜
- Java はじめて 11 〜ループ処理A: for文2 拡張for文〜
- Java はじめて12 〜ループ処理B: while文〜
- Java はじめて13 〜ループ処理C: do-while文〜
- Java はじめて14 〜クラスの作り方〜
- Java はじめて15 〜クラス型変数の使い方〜
- Java はじめて16 〜クラス設計から実装〜
- Java はじめて17 〜設計後の部品を実装する1〜
- Java はじめて18 〜設計後の部品を実装する2〜
- Java はじめて19 〜コンストラクタの役割を見る〜
- Java はじめて20 〜チェック処理クラスを作る〜
- Java はじめて21 〜オブジェクト指向的分析、アプリの拡張をする〜
- Java はじめて22 〜オブジェクト指向的分析、アプリ拡張の実装とテスト〜
- Java はじめて23 〜テスト駆動型開発を行う〜
- Java はじめて24 〜JUnitでのテスト駆動型開発1〜
- Java はじめて25 〜JUnitでのテスト駆動型開発2: テストケース作成〜
- Java はじめて26 〜JUnitでのテスト駆動型開発3: クラスの実装〜
- Java はじめて27 〜JUnitでのテスト駆動型開発4: 追加修正と実装〜
- Java はじめて28 〜JUnitでのテスト駆動型開発5: ファイル出力の実装〜
- Java はじめて29 〜JUnitでのテスト駆動型開発6: ファイル読み込みのテスト〜
- Java はじめて30 〜JUnitでのテスト駆動型開発7: テストクラスの実装方法〜
- Java はじめて31 〜JUnitでのテスト駆動型開発8: 処理をつなげたテスト〜