まとめ:従業員の階層構造
CoddyのDartジャーニー「オブジェクト指向プログラミング」セクションの一部 — レッスン 42/110。
チャレンジ
簡単この章で学んだすべての継承の概念を統合した、完全な従業員階層システムを構築しましょう。基本となる従業員クラスを作成し、それを拡張して、それぞれ独自の動作を持つ専門的な役割を作成します。
コードを2つのファイルに整理します:
employee.dart: ここに従業員の階層を定義します:String name、double salary、int 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、ID101のEmployeeを作成します。 - 名前
'Bob'、給与75000.0、ID102、チームサイズ8のManagerを作成します。 - 名前
'Carol'、給与65000.0、ID103、言語'Dart'のDeveloperを作成します。 - 名前
'David'、給与80000.0、ID104、言語'Python'、プロジェクト数3のTeamLeadを作成します。 - 各従業員に対して
getDetails()を呼び出した結果を、1行に1つずつ出力します。
- 名前
TeamLead がどのように多段階継承(Employee を継承した Developer をさらに継承)を示しているかに注目してください。各レベルで独自の詳細を追加しつつ、super を使用して親クラスからの情報を保持しています。
期待される出力:
Alice (ID: 101) - Salary: $50000.0, Team: 8 members
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行ずつ出力してください
}
オブジェクト指向プログラミングのすべてのレッスン
4Null Safety
Null Safety 入門Nullable と Non-Nullable? 演算子と ! 演算子late キーワードと Null SafetyNull-Aware 演算子クラスにおける Null Safetyまとめ:ユーザープロフィールシステム10コレクションとジェネリクス
List, Set, Map の概要型安全なコレクションジェネリッククラスジェネリックメソッドジェネリクスの制約Iterable と Iteratorまとめ:ジェネリックなストレージ