104 ステップアップ問題 「static修羅道」

「クラスに属する設計を掴め」


この問題集について

このステップアップ問題集では、static 修飾子の基本概念から、実践的な使用例(定数、ユーティリティクラス、ID発行、共有データなど)までを段階的に学び、Javaにおける「クラスに属するメンバ」の設計意図を理解することを目的としています。

対象は、static の意味を「便利そうだけどよくわからない」と感じているJava初学者。

「いつ、なぜ static を使うのか」を、設計視点で身につける問題集です。


取り扱う主な構文と概念

  • static変数とインスタンス変数の違い
  • staticメソッドの定義と呼び出し方
  • public static final による定数の定義
  • ユーティリティクラス設計(Mathクラス的構造)
  • インスタンス生成に基づくstatic変数の更新
  • static初期化ブロック
  • staticと非staticのスコープと依存関係の理解

最終的なゴール

以下のような要素を含むスコア管理システムを、static の理解に基づいて自力で設計・実装できることを目標とします:

  • 全プレイヤーに共有される highScorestatic 変数で保持
  • 各プレイヤーごとの score はインスタンス変数で保持
  • setScore のたびに highScore を自動更新
  • 設計上の「共有する意図」をコードに反映させる
  • 設計上「newしなくていい」ものをstaticで書けるようになる

進め方

問題は Step01 〜 StepFinal まで、順に進む形式で構成されています。
1ステップごとに、static を使ったコードの書き方だけでなく、「なぜそう設計するか」という視点を養っていきましょう。


書け。設計を体で覚えろ。
これがJava道場、static修羅道だ。


ステップアップ問題

104-step01問題解答例
104-step02問題解答例
104-step03問題解答例
104-step04問題解答例
104-step05問題解答例
104-step06問題解答例
104-step07問題解答例
104-step08問題解答例
104-step09問題解答例
104-stepFinal問題解答例

Just Keep Typing, Baby! static修羅道:その変数、本当に new する必要ある?