クラスを使うサンプル
前回の話
前回は、クラスを作成してそれを撃とかして見ました。
しかし、コードと説明だけで実行していませんでした。今回は、それを実行してみようと思います。
メインメソッド
メインメソッドがプログラムの起動する主軸になります。
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String input = scan.next();
FirstCls first = new FirstCls();
first.handleInput(input);
}
}
この処理は、標準入力を受け付け、受け取った文字列をFirstClsのメソッドhandleInput()に渡しています。
String[] args -> プログラム引数
System.in -> 標準入力
System.out -> 標準出力
これを下のような書き方で表現できます。
「FirstCls#handleInput()に受け取った文字列を渡す」
実際に作成したFirstClsの内容は以下のようになっています。
public class FirstCls {
public void handleInput(String input) {
System.out.println("入力値: " + input);
if (isNumberString(input)) {
System.out.println(input + "は、数字です");
} else {
System.out.println(input + "は、数字ではありません");
}
}
public boolean isNumberString(String str) {
// [0-9]は正規表現と言います。
boolean isNumber = str.matches("[0-9]");
return isNumber;
}
/** 使用しないので下のアノテーションをつける */
@Deprecated
public void printSomething(String[] args) {
// プログラム引数に値があるときは表示する
if (args.length != 0) {
for (int i = 0; i < args.length; i++) {
System.out.println("プログラム引数[" + i + "]: " + args[i]);
}
}
System.out.println("1 + 1 = " + (1 + 1));
}
}
呼び出しているメソッドはhandleInputなので、他のメソッドは関係ありません。(影響がありません)
なので、今回は、別のメソッドを呼び出すように変えて見ました。
処理概要
Mainクラス=メインメソッドのあるクラス
FirstCls=入力値を操作するクラス
- 標準入力を受ける
- 入力値に対して何かしらの処理をする
※今回は、入力値が数字かどうか判定する処理
【FirstClsクラスについて】
このクラスには、複数のメソッドを実装しているが、必要なものは使用する。必要ないものは使用しない。
つまり、処理を実装するためのクラスです。
【クラス構成について】
・Mainクラスは、Mainメソッドを起動するためのクラス
・FirstClsクラスは、処理を実装するためのクラス
この実装に対して、処理の結果を変更したいのであれば、FirstCls#handleInput()を修正すれば良いのです。
処理詳細
【メインメソッド】
// 標準入力を受け取る準備
Scanner scan = new Scanner(System.in);
// 標準入力受付と受け取り
String input = scan.next();
// FirstClsのインスタンスを生成
FirstCls first = new FirstCls();
// FirstCls#handleInput()を呼び出す
first.handleInput(input);
// 処理終了
【FirstCls】
実装したメソッドのうち「isNumberString」と「handleInput」を使用しています。
ポイント
クラスといっても結局はメソッド呼び出しを行なっているのと変わりません。
なので、下のようにメソッドを呼び出すのも、クラスのインスタンスを取得してメソッドを呼び出すのも大した違いはありません。
【パターンA】: FirstCls#isNumberString()を使用する
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 + "は数字ではありません。");
}
}
【パターンB】: FirstCls#isNumberString()に実装してある処理をここでも実装する
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String input = scan.next();
FirstCls first = new FirstCls();
boolean isNumber = input.matches("[0-9]{1,}");
if (isNumber) {
System.out.println(input + "は数字です。");
} else {
System.out.println(input + "は数字ではありません。");
}
}
このように、「クラス」と言うオブジェクトの中に様々な処理を実装して、インスタンスを取得すれば、その処理を呼び出すことができます。
インスタンスを取得しなくても、呼び出す方法がありますが、それはまた別の機会にしましょう。
ちなみに、それは「静的呼び出し」といいstatic修飾子を使用します。
ちなみに、このコードにはバグがあります。それはどこでしょうか?
=> 入力した文字列が複数の場合、想定と違う結果が返ってくる
とりあえずは、こんなところで。。。
でわでわ。。。
関連ページ一覧
Eclipse セットアップ
- Java Install Eclipse〜開発ツールのインストール〜
- TensorFlow C++環境〜EclipseにCDTをインストール〜
- Setup OpenGL with Java〜JOGLを使う準備 for Eclipse〜
- Eclipse Meven 開発手順〜プロジェクトの作成〜
- Java OpenCV 環境セットアップ(on Mac)
- Eclipse SceneBuilderを追加する
- JavaFX SceneBuilder 〜EclipseとSceneBuilder連携~
Java Basic一覧
- Java Basic Level 1 〜Hello Java〜
- Java Basic Level2 〜Arithmetic Calculate〜
- Java Basic Level3 〜About String class〜
- Java Basic Level 4〜Boolean〜
- Java Basic Level 5〜If Statement〜
- Java Basic Summary from Level1 to 5
- Java Basic Level 6 〜Traning of If statement〜
- Java Basic Level8 〜How to use for statement〜
- Java Basic Level 8.5 〜Array〜
- Java Basic Level 9〜Training of for statement〜
- Java Basic Level 10 〜While statement 〜
- Java Basic Swing〜オブジェクト指向〜
- Java Basic Swing Level 2〜オブジェクト指向2〜
- サンプル実装〜コンソールゲーム〜
- Java Basic インターフェース・抽象クラスの作り方
- Java Basic クラスとは〜Step2_1〜
- Java Basic JUnit 〜テストスイートの作り方〜
Git関連
- Java Git clone in Eclipse 〜サンプルの取得〜
- Eclipse Gitリポジトリの取得 〜GitからソースをPullしよう〜
- IntelliJ IDEA Git〜Gitリポジトリからクローン〜
JavaFX関連ページ
- Eclipse SceneBuilderを追加する
- JavaFX SceneBuilder 〜EclipseとSceneBuilder連携~
- JavaFX SceneBuilder〜ボタンにメソッドを割り当てるワンポイント〜
- Java プロコンゲーム 〜見た目の作成(SceneBuilderの使用)〜
ステップアップ関連ページ一覧
- Java 初めてでも大丈夫〜ステップアッププログラミングのススメ〜
- ステップアッププログラミング〜Java FxでHelloWorld解説〜
- Java StepUpPrograming〜JavaFX で四則計算〜
- Java StepUpPrograming〜JavaFXで画面切り替えを作る1〜
- Java StepUpPrograming〜JavaFXで画面切り替え2ボタン作成〜
- Java StepUpPrograming〜JavaFXで画面切り替え3アクション〜
- Java StepUpPrograming〜JavaFXで画面切り替え4Pane切り替え〜
- Java StepUpPrograming〜JavaFXで画面切り替え5WebEngine
JavaFX + ND4Jで機械学習準備
- JavaFX + ND4J〜数学への挑戦1:ND4Jのインストール〜
- JavaFX + ND4J〜数学への挑戦2: 行列の計算〜
- Java + ND4J 〜数学への挑戦3: ベクトル(配列)の作成方法〜
オブジェクト指向関連ページ
- [オブジェクト指向の概念1〜OracleDocのチュートリアル1〜](https://zenryokuservice.com/wp/2019/10/301. /%e3%82%aa%e3%83%96%e3%82%b8%e3%82%a7%e3%82%af%e3%83%88%e6%8c%87%e5%90%91%e3%81%ae%e6%a6%82%e5%bf%b5-%e3%80%9coracledoc%e3%81%ae%e3%83%81%e3%83%a5%e3%83%bc%e3%83%88%e3%83%aa%e3%82%a2%e3%83%ab%ef%bc%91/)
- オブジェクト指向の概念2〜クラスとは〜
Java Discord
- IntelliJ IDEA Discord Botを作る〜Gradle環境のセットアップ〜
- Java Discord セットアップ〜Hello Discord〜
- Java Discord ピンポン〜Discordプログラム〜
- Java Discord Listener実装〜コマンドを好きなだけ追加しよう〜