Menu
Coddy logo textTech

Eラーニングプラットフォーム

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

challenge icon

チャレンジ

簡単

このコースで学んだすべての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 FundamentalsAdvanced 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 を再度表示する
}

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