Eラーニングプラットフォーム
CoddyのDartジャーニー「オブジェクト指向プログラミング」セクションの一部 — レッスン 107/110。
チャレンジ
簡単このコースで学んだすべてのOOPコンセプトを統合した、Eラーニングプラットフォームを構築しましょう。抽象クラス、継承、ミックスイン、カプセル化を使用して、ユーザー、コース、登録を管理するシステムを作成します。
プラットフォームは5つのファイルで構成されます:
user.dart:_id(String) と_name(String) のプライベートフィールドを持ち、公開ゲッターを備えた抽象クラスUserを作成します。サブクラスが実装する必要がある抽象メソッドString getRole()を含めてください。toString()をオーバーライドして、[role] name (id)(roleはgetRole()から取得)を返すようにします。student.dart:Userを継承するStudentクラスを作成します。学生は、このファイルで定義されるProgressTrackingミックスインを使用する必要があります。このミックスインは、0から始まるプライベートな_completedLessons整数(ゲッター付き)、それをインクリメントするcompleteLesson()メソッド、およびCompleted X lessonsを返すgetProgressReport()メソッドを提供します。StudentクラスはgetRole()を実装してStudentを返すようにします。instructor.dart:Userを継承するInstructorクラスを作成します。講師はプライベートなリスト_coursesCreated(コースタイトルを表すStringのリスト)を持ちます。リストにタイトルを追加してそのタイトルを返すcreateCourse(String title)メソッドを含めます。getRole()を実装してInstructorを返すようにします。作成されたコースの数を返すゲッターcourseCountを追加します。enrollment.dart: 学生のコースへの登録を追跡するEnrollmentクラスを作成します。studentId(String)、courseName(String)、およびデフォルトが false のプライベートな_isCompletedブール値(ゲッター付き)を持つ必要があります。完了状態を true に設定するmarkComplete()メソッドを含めます。toString()をオーバーライドして、完了ステータスに基づいてstudentId enrolled in "courseName" - Status: CompletedまたはStatus: In Progressを返すようにします。main.dart: すべてをまとめます。講師 (I001,Dr. Smith) を作成し、2つのコースDart FundamentalsとAdvanced OOPを作成させます。講師の情報と、Courses created: Xという形式でコース数を出力します。学生 (S001,Alice) を作成して出力し、3つのレッスンを完了させて進捗レポートを出力します。AliceのDart Fundamentalsへの登録を作成して出力し、完了としてマークしてから再度出力します。
期待される出力:
[Instructor] Dr. Smith (I001)
Courses created: 2
[Student] Alice (S001)
Completed 3 lessons
S001 enrolled in "Dart Fundamentals" - Status: In Progress
S001 enrolled in "Dart Fundamentals" - Status: Completed自分で試してみよう
import 'user.dart';
import 'student.dart';
import 'instructor.dart';
import 'enrollment.dart';
void main() {
// TODO: id "I001"、名前 "Dr. Smith" で instructor を作成する
// TODO: instructor に2つのコース "Dart Fundamentals" と "Advanced OOP" を作成させる
// TODO: instructor を表示する (toString() を使用)
// TODO: "Courses created: X" を表示する(X は courseCount)
// TODO: id "S001"、名前 "Alice" で student を作成する
// TODO: student を表示する
// TODO: student に3つのレッスンを完了させる (completeLesson() を3回呼び出す)
// TODO: student の進捗レポートを表示する
// TODO: Alice (S001) の "Dart Fundamentals" への enrollment を作成する
// TODO: enrollment を表示する
// TODO: enrollment を完了としてマークする
// TODO: enrollment を再度表示する
}
オブジェクト指向プログラミングのすべてのレッスン
4Null Safety
Null Safety 入門Nullable と Non-Nullable? 演算子と ! 演算子late キーワードと Null SafetyNull-Aware 演算子クラスにおける Null Safetyまとめ:ユーザープロフィールシステム10コレクションとジェネリクス
List, Set, Map の概要型安全なコレクションジェネリッククラスジェネリックメソッドジェネリクスの制約Iterable と Iteratorまとめ:ジェネリックなストレージ