Menu
Coddy logo textTech

まとめ:従業員の階層構造

CoddyのJavaジャーニー「オブジェクト指向プログラミング」セクションの一部 — レッスン 27/87。

challenge icon

チャレンジ

簡単

この章で学んだすべての継承の概念を統合した、完全な従業員階層システムを構築しましょう。異なるタイプの従業員が共通の属性を共有しつつ、独自の専門的な振る舞いを持つ会社構造を作成します。

コードは4つのファイルに分けて構成します:

  • Employee.java: すべての従業員が共有するベースクラスを作成します。すべての従業員は名前と給与を持っています。両方のフィールドを初期化するコンストラクタと、[name] earns $[salary] を返す getDetails() メソッドを含めてください。また、[name] is working と出力する work() メソッドも追加してください。
  • Manager.java: Employeeを継承するクラスを作成します。マネージャーには、管理している人数を表す teamSize フィールドが追加されます。親クラスの初期化を処理するために super を使用してください。work() メソッドをオーバーライドして、[name] is managing a team of [teamSize] と出力するようにします。Manager: [name] earns $[salary], Team size: [teamSize] を返す getManagerDetails() メソッドを追加してください。
  • Developer.java: Employeeを継承する別のクラスを作成します。デベロッパーには、プログラミングの専門分野を表す language フィールドがあります。ここでも、親クラスの部分には super を使用してください。work() をオーバーライドして、[name] is coding in [language] と出力するようにします。Developer: [name] earns $[salary], Language: [language] を返す getDeveloperDetails() メソッドを追加してください。
  • Main.java: ここですべてをまとめます。5つの入力を受け取ります:従業員の名前、給与、マネージャーのチームサイズ、別の名前、そしてデベロッパーのプログラミング言語です。ManagerとDeveloperを作成し、それぞれについて専用の詳細メソッドを呼び出した後、work() メソッドを呼び出してください。

入力は、マネージャーの名前 (String)、マネージャーの給与 (double)、チームサイズ (int)、デベロッパーの名前 (String)、プログラミング言語 (String) の順で5つ受け取ります。デベロッパーの給与には 75000.0 を使用してください。

すべての給与値は、String.format("%.2f", salary) を使用して小数点以下2桁でフォーマットしてください。出力は、マネージャーの詳細と仕事の振る舞い、続いてデベロッパーの詳細と仕事の振る舞いの計4行になるはずです。

自分で試してみよう

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        // 入力を読み込む
        String managerName = scanner.nextLine();
        double managerSalary = scanner.nextDouble();
        int teamSize = scanner.nextInt();
        scanner.nextLine(); // 改行文字を消費する
        String developerName = scanner.nextLine();
        String language = scanner.nextLine();
        
        // Developer の給与は 75000.0 に固定されている
        double developerSalary = 75000.0;
        
        // TODO: managerName、managerSalary、teamSize を使用して Manager オブジェクトを作成する
        
        // TODO: developerName、developerSalary、language を使用して Developer オブジェクトを作成する
        
        // TODO: getManagerDetails() を使用してマネージャーの詳細を表示する
        
        // TODO: マネージャーの work() メソッドを呼び出す
        
        // TODO: getDeveloperDetails() を使用して開発者の詳細を表示する
        
        // TODO: 開発者の work() メソッドを呼び出す
    }
}

オブジェクト指向プログラミングのすべてのレッスン