まとめ:従業員の階層構造
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
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まとめ:ジェネリックなストレージ