Menu
Coddy logo textTech

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

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

challenge icon

チャレンジ

簡単

この章で学んだすべての継承の概念を統合した、完全な従業員階層システムを構築しましょう。基本となる従業員クラスを作成し、それを拡張して、それぞれ独自の動作を持つ専門的な役割を作成します。

コードを2つのファイルに整理します。

  • employee.dart: ここに従業員の階層を定義します。
    • String namedouble salaryint id プロパティを持つ Employee 基本クラス。コンストラクタと、'[name] (ID: [id]) - Salary: $[salary]' を返す getDetails() メソッドを含めます。
    • Employee を継承し、int teamSize プロパティを追加した Manager クラス。継承されたフィールドには super パラメータを使用します。getDetails() をオーバーライドして、親の詳細の後に ', Team: [teamSize] members' を続けて返すようにします。
    • Employee を継承し、String language プロパティを追加した Developer クラス。getDetails() をオーバーライドして、親の詳細の後に ', Specializes in [language]' を続けて返すようにします。
    • Developer を継承し、int projectCount プロパティを追加した TeamLead クラス。getDetails() をオーバーライドして、Developer のバージョンに基づき、末尾に ', Leading [projectCount] projects' を追加します。
  • main.dart: 従業員ファイルをインポートし、各従業員タイプのインスタンスを作成します。
    • 名前 'Alice'、給与 50000.0、ID 101Employee を作成します。
    • 名前 'Bob'、給与 75000.0、ID 102、チームサイズ 8Manager を作成します。
    • 名前 'Carol'、給与 65000.0、ID 103、言語 'Dart'Developer を作成します。
    • 名前 'David'、給与 80000.0、ID 104、言語 'Python'、プロジェクト数 3TeamLead を作成します。
    • 各従業員に対して getDetails() を呼び出した結果を、1行に1つずつ出力します。

TeamLead がどのように多段階継承(Employee を継承した Developer をさらに継承)を示しているかに注目してください。各レベルで super を使用して親クラスの情報を保持しながら、独自の詳細を追加しています。

期待される出力:

Alice (ID: 101) - Salary: $50000.0
Bob (ID: 102) - Salary: $75000.0, Team: 8 members
Carol (ID: 103) - Salary: $65000.0, Specializes in Dart
David (ID: 104) - Salary: $80000.0, Specializes in Python, Leading 3 projects

自分で試してみよう

import 'employee.dart';

void main() {
  // TODO: name 'Alice'、salary 50000.0、id 101 を持つ Employee を作成する

  // TODO: name 'Bob'、salary 75000.0、id 102、teamSize 8 を持つ Manager を作成する

  // TODO: name 'Carol'、salary 65000.0、id 103、language 'Dart' を持つ Developer を作成する

  // TODO: name 'David'、salary 80000.0、id 104、language 'Python'、projectCount 3 を持つ TeamLead を作成する

  // TODO: 各従業員の getDetails() を1行ずつ出力する
}

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