Menu
Coddy logo textTech

E-Learning-Plattform

Teil des Abschnitts Objektorientierte Programmierung der Dart-Journey von Coddy. Lektion 107 von 110.

challenge icon

Aufgabe

Einfach

Lass uns eine E-Learning-Plattform entwickeln, die alle OOP-Konzepte zusammenführt, die du im Laufe dieses Kurses gemeistert hast. Du erstellst ein System, das Benutzer, Kurse und Einschreibungen mithilfe abstrakter Klassen, Vererbung, Mixins und Kapselung verwaltet.

Deine Plattform wird auf fünf Dateien aufgeteilt:

  • user.dart: Erstelle eine abstrakte User-Klasse mit privaten Feldern für _id (String) und _name (String) sowie öffentlichen Gettern. Füge eine abstrakte Methode String getRole() hinzu, die von Unterklassen implementiert werden muss. Überschreibe toString(), sodass [role] name (id) zurückgegeben wird, wobei role aus getRole() stammt.
  • student.dart: Erstelle eine Student-Klasse, die User erweitert. Studierende sollen ein in dieser Datei definiertes ProgressTracking-Mixin verwenden, das eine private Ganzzahl _completedLessons (beginnend bei 0) mit einem Getter sowie die Methoden completeLesson() zum Erhöhen dieses Werts und getProgressReport() bereitstellt, die Completed X lessons zurückgibt. Die Student-Klasse soll getRole() implementieren und Student zurückgeben.
  • instructor.dart: Erstelle eine Instructor-Klasse, die User erweitert. Dozenten haben eine private Liste _coursesCreated (eine Liste von Strings, die Kurstitel darstellen). Füge eine Methode createCourse(String title) hinzu, die den Titel zur Liste hinzufügt und den Titel zurückgibt. Implementiere getRole(), sodass Instructor zurückgegeben wird. Füge einen Getter courseCount hinzu, der die Anzahl der erstellten Kurse zurückgibt.
  • enrollment.dart: Erstelle eine Enrollment-Klasse, die die Einschreibung eines Studierenden in einen Kurs verfolgt. Sie soll über eine studentId (String), einen courseName (String) und einen privaten booleschen Wert _isCompleted (standardmäßig false) mit einem Getter verfügen. Füge eine Methode markComplete() hinzu, die den Abschlussstatus auf true setzt. Überschreibe toString(), sodass abhängig vom Abschlussstatus entweder studentId enrolled in "courseName" - Status: Completed oder Status: In Progress zurückgegeben wird.
  • main.dart: Führe alles zusammen. Erstelle einen Dozenten (I001, Dr. Smith) und lasse ihn zwei Kurse erstellen: Dart Fundamentals und Advanced OOP. Gib den Dozenten und seine Kursanzahl als Courses created: X aus. Erstelle einen Studierenden (S001, Alice), gib ihn aus, lasse ihn anschließend 3 Lektionen abschließen und gib seinen Fortschrittsbericht aus. Erstelle eine Einschreibung für Alice in Dart Fundamentals, gib sie aus, markiere sie als abgeschlossen und gib sie erneut aus.

Erwartete Ausgabe:

[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

Probier es selbst

import 'user.dart';
import 'student.dart';
import 'instructor.dart';
import 'enrollment.dart';

void main() {
  // TODO: Erstelle einen Instructor mit der id "I001" und dem Namen "Dr. Smith"
  
  // TODO: Lasse den Instructor zwei Kurse erstellen: "Dart Fundamentals" und "Advanced OOP"
  
  // TODO: Gib den Instructor aus (verwendet toString())
  
  // TODO: Gib "Courses created: X" aus, wobei X der courseCount ist
  
  // TODO: Erstelle einen Student mit der id "S001" und dem Namen "Alice"
  
  // TODO: Gib den Student aus
  
  // TODO: Lasse den Student 3 Lektionen abschließen (rufe completeLesson() 3-mal auf)
  
  // TODO: Gib den Fortschrittsbericht des Students aus
  
  // TODO: Erstelle eine Einschreibung (enrollment) für Alice (S001) in "Dart Fundamentals"
  
  // TODO: Gib die Einschreibung aus
  
  // TODO: Markiere die Einschreibung als abgeschlossen
  
  // TODO: Gib die Einschreibung erneut aus
}

Alle Lektionen in Objektorientierte Programmierung

Übe selbstständig: Online-Dart-Compiler