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

Lassen Sie uns eine E-Learning-Plattform bauen, die alle OOP-Konzepte vereint, die Sie in diesem Kurs gemeistert haben. Sie werden ein System erstellen, das Benutzer, Kurse und Einschreibungen unter Verwendung von abstrakten Klassen, Vererbung, Mixins und Kapselung verwaltet.

Ihre Plattform wird über fünf Dateien organisiert sein:

  • user.dart: Erstellen Sie eine abstrakte Klasse User mit privaten Feldern für _id (String) und _name (String) sowie öffentlichen Gettern. Fügen Sie eine abstrakte Methode String getRole() hinzu, die Unterklassen implementieren müssen. Überschreiben Sie toString(), um [role] name (id) zurückzugeben, wobei role von getRole() stammt.
  • student.dart: Erstellen Sie eine Klasse Student, die User erweitert. Studenten sollten ein ProgressTracking-Mixin verwenden (in dieser Datei definiert), das eine private Ganzzahl _completedLessons (beginnend bei 0) mit einem Getter bereitstellt, sowie die Methoden completeLesson() zum Inkrementieren und getProgressReport(), die Completed X lessons zurückgibt. Die Klasse Student sollte getRole() implementieren, um Student zurückzugeben.
  • instructor.dart: Erstellen Sie eine Klasse Instructor, die User erweitert. Instruktoren haben eine private Liste _coursesCreated (Liste von Strings, die Kurstitel darstellen). Fügen Sie eine Methode createCourse(String title) hinzu, die den Titel zur Liste hinzufügt und den Titel zurückgibt. Implementieren Sie getRole(), um Instructor zurückzugeben. Fügen Sie einen Getter courseCount hinzu, der die Anzahl der erstellten Kurse zurückgibt.
  • enrollment.dart: Erstellen Sie eine Klasse Enrollment, die die Einschreibung eines Studenten in einen Kurs verfolgt. Sie sollte eine studentId (String), einen courseName (String) und einen privaten Boolean _isCompleted (Standardwert false) mit einem Getter haben. Fügen Sie eine Methode markComplete() hinzu, die den Abschluss auf true setzt. Überschreiben Sie toString(), um studentId enrolled in "courseName" - Status: Completed oder Status: In Progress basierend auf dem Abschlussstatus zurückzugeben.
  • main.dart: Bringen Sie alles zusammen. Erstellen Sie einen Instruktor (I001, Dr. Smith) und lassen Sie ihn zwei Kurse erstellen: Dart Fundamentals und Advanced OOP. Geben Sie den Instruktor und seine Kursanzahl als Courses created: X aus. Erstellen Sie eine Studentin (S001, Alice), geben Sie sie aus, lassen Sie sie dann 3 Lektionen abschließen und geben Sie ihren Fortschrittsbericht aus. Erstellen Sie eine Einschreibung für Alice in Dart Fundamentals, geben Sie diese aus, markieren Sie sie als abgeschlossen und geben Sie 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