Menu
Coddy logo textTech

Plateforme d’apprentissage en ligne

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 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 à l’aide de classes abstraites, de l’héritage, de mixins et de 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), ainsi que des accesseurs publics. Incluez une méthode abstraite String getRole() que les sous-classes doivent implémenter. Surchargez toString() pour qu’elle renvoie [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 accesseur, ainsi que les méthodes completeLesson() pour l’incrémenter et getProgressReport() qui renvoie Completed X lessons. La classe Student doit implémenter getRole() pour renvoyer Student.
  • instructor.dart : créez une classe Instructor qui étend User. Les formateurs disposent d’une liste privée _coursesCreated (une liste de chaînes représentant les titres des cours). Incluez une méthode createCourse(String title) qui ajoute le titre à la liste et renvoie le titre. Implémentez getRole() pour renvoyer Instructor. Ajoutez un accesseur courseCount qui renvoie 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), un courseName (String) et un booléen privé _isCompleted (faux par défaut) avec un accesseur. Incluez une méthode markComplete() qui définit l’état d’achèvement sur vrai. Surchargez toString() pour qu’elle renvoie studentId enrolled in "courseName" - Status: Completed ou Status: In Progress selon l’état d’achèvement.
  • main.dart : assemblez tous les éléments. Créez un formateur (I001, Dr. Smith) et faites-lui créer deux cours : Dart Fundamentals et Advanced OOP. Affichez le formateur et le nombre de ses 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 au cours Dart Fundamentals, affichez-la, marquez-la comme terminée, puis 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: Create an enrollment for Alice (S001) in "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

Entraînez-vous par vous-même : Compilateur Dart en ligne