まとめ:カウンターとユーティリティ
CoddyのJavaジャーニー「オブジェクト指向プログラミング」セクションの一部 — レッスン 19/87。
チャレンジ
簡単インスタンスを追跡するための Counter クラスと、MathUtils ユーティリティクラスを組み合わせた完全なシステムを構築しましょう。これにより、静的変数、静的メソッド、静的ブロック、および定数について学んだすべてを統合します。
コードを整理するために、3つのファイルを作成します:
Counter.java: 作成されたインスタンスの数を追跡するクラスを作成します:- 総インスタンス数をカウントするための private な静的変数
- 各カウンターの一意の識別子を格納する private なインスタンス変数
id - 総カウントをインクリメントし、現在のカウントをこのインスタンスの id として割り当てるコンストラクタ
- このカウンターの一意の id を返すメソッド
getId() - これまでに作成された Counter オブジェクトの数を返す静的メソッド
getTotalCount()
MathUtils.java: 静的メンバーのみを持つ(インスタンス化されない)ユーティリティクラスを作成します:- 値が
3.14159の public 定数PI - 値が
0.5の public 定数HALF - n の2乗を返す静的メソッド
square(int n) - n の3乗を返す静的メソッド
cube(int n) - PI * radius * radius を返す静的メソッド
circleArea(double radius)
- 値が
Main.java: 両方のクラスが連携して動作することを示します。数学演算用の数値と、作成する Counter オブジェクトの数の2つの入力を受け取ります。以下を出力してください:Square: [value]Cube: [value]Circle area (radius=[number]): [value](面積は小数点以下2桁にフォーマット)- 作成された各 Counter について、次を出力:
Counter [id] created - 最後に:
Total counters: [count]
数学の計算に使用する数値 (int) と、作成する Counter オブジェクトの数 (int) の2つの入力を受け取ります。
静的メンバーにはクラス名を通じてアクセスすること(MathUtils.PI や Counter.getTotalCount() など)、および小数のフォーマットには String.format("%.2f", value) を使用することを忘れないでください。
自分で試してみよう
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int number = scanner.nextInt();
int count = scanner.nextInt();
// TODO: MathUtils の static メソッドを使用して、以下を計算し出力してください:
// - Square: [value]
// - Cube: [value]
// - Circle area (radius=[number]): [value] (小数点以下2桁にフォーマット)
// TODO: `count` の数だけ Counter オブジェクトを作成してください
// 各 Counter が作成されるごとに、次のように出力してください:Counter [id] created
// TODO: 作成されたカウンタの総数を出力してください
// Total counters: [count]
}
}
オブジェクト指向プログラミングのすべてのレッスン
4継承
継承の基本 (extends)super キーワードメソッドのオーバーライド (@Override)コンストラクタチェーンObject クラス単一継承と多段階継承なぜ多重継承ができないのかまとめ:従業員の階層構造