Menu
Coddy logo textTech

Plateforme d'E-Learning

Fait partie de la section Programmation Orientée Objet du Journey Dart de Coddy — leçon 107 sur 110.

challenge icon

Défi

Facile

Construisons une plateforme d'apprentissage en ligne qui rassemble tous les concepts de la POO que vous avez maîtrisés tout au long de ce cours. Vous allez créer un système qui gère les utilisateurs, les cours et les inscriptions en utilisant des classes abstraites, l'héritage, les mixins et l'encapsulation.

Votre plateforme sera organisée sur cinq fichiers :

  • user.dart : Créez une classe abstraite User avec des champs privés pour _id (String) et _name (String), avec des getters publics. Incluez une méthode abstraite String getRole() que les sous-classes doivent implémenter. Surchargez toString() pour retourner [role] name (id) où role provient de getRole().
  • student.dart : Créez une classe Student qui étend User. Les étudiants doivent utiliser un mixin ProgressTracking (défini dans ce fichier) qui fournit un entier privé _completedLessons (commençant à 0) avec un getter, et des méthodes completeLesson() pour l'incrémenter et getProgressReport() qui retourne Completed X lessons. La classe Student doit implémenter getRole() pour retourner Student.
  • instructor.dart : Créez une classe Instructor qui étend User. Les instructeurs ont une liste privée _coursesCreated (liste de Strings représentant les titres des cours). Incluez une méthode createCourse(String title) qui ajoute le titre à la liste et retourne le titre. Implémentez getRole() pour retourner Instructor. Ajoutez un getter courseCount qui retourne le nombre de cours créés.
  • enrollment.dart : Créez une classe Enrollment qui suit l'inscription d'un étudiant à un cours. Elle doit avoir un studentId (String), courseName (String), et un booléen privé _isCompleted (par défaut à false) avec un getter. Incluez une méthode markComplete() qui définit la complétion à true. Surchargez toString() pour retourner studentId enrolled in "courseName" - Status: Completed ou Status: In Progress selon le statut de complétion.
  • main.dart : Rassemblez le tout. Créez un instructeur (I001, Dr. Smith) et faites-lui créer deux cours : Dart Fundamentals et Advanced OOP. Affichez l'instructeur et son nombre de cours sous la forme Courses created: X. Créez un étudiant (S001, Alice), affichez-le, puis faites-lui terminer 3 leçons et affichez son rapport de progression. Créez une inscription pour Alice à Dart Fundamentals, affichez-la, marquez-la comme terminée, et affichez-la à nouveau.

Résultat attendu :

[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

Essayez vous-même

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

void main() {
  // TODO: Créer un instructeur avec l'id "I001" et le nom "Dr. Smith"
  
  // TODO: Faire en sorte que l'instructeur crée deux cours : "Dart Fundamentals" et "Advanced OOP"
  
  // TODO: Afficher l'instructeur (utilise toString())
  
  // TODO: Afficher "Courses created: X" où X est le courseCount
  
  // TODO: Créer un étudiant avec l'id "S001" et le nom "Alice"
  
  // TODO: Afficher l'étudiant
  
  // TODO: Faire en sorte que l'étudiant termine 3 leçons (appeler completeLesson() 3 fois)
  
  // TODO: Afficher le rapport de progression de l'étudiant
  
  // TODO: Créer une inscription pour Alice (S001) au cours "Dart Fundamentals"
  
  // TODO: Afficher l'inscription
  
  // TODO: Marquer l'inscription comme terminée
  
  // TODO: Afficher à nouveau l'inscription
}

Toutes les leçons de Programmation Orientée Objet