Menu
Coddy logo textTech

Piattaforma di e-learning

Fa parte della sezione Programmazione orientata agli oggetti del percorso Dart di Coddy. Lezione 107 di 110.

challenge icon

Sfida

Facile

Costruiamo una piattaforma di e-learning che riunisca tutti i concetti di OOP che hai imparato durante questo corso. Creerai un sistema che gestisce utenti, corsi e iscrizioni usando classi astratte, ereditarietà, mixin e incapsulamento.

La tua piattaforma sarà organizzata in cinque file:

  • user.dart: crea una classe astratta User con campi privati per _id (String) e _name (String), con getter pubblici. Includi un metodo astratto String getRole() che le sottoclassi dovranno implementare. Sovrascrivi toString() in modo che restituisca [role] name (id), dove role deriva da getRole().
  • student.dart: crea una classe Student che estende User. Gli studenti dovranno usare un mixin ProgressTracking (definito in questo file) che fornisce un intero privato _completedLessons (inizializzato a 0) con un getter e i metodi completeLesson() per incrementarlo e getProgressReport() che restituisce Completed X lessons. La classe Student dovrà implementare getRole() in modo che restituisca Student.
  • instructor.dart: crea una classe Instructor che estende User. Gli istruttori hanno una lista privata _coursesCreated (una lista di String che rappresentano i titoli dei corsi). Includi un metodo createCourse(String title) che aggiunge il titolo alla lista e lo restituisce. Implementa getRole() in modo che restituisca Instructor. Aggiungi un getter courseCount che restituisce il numero di corsi creati.
  • enrollment.dart: crea una classe Enrollment che tiene traccia dell'iscrizione di uno studente a un corso. Dovrebbe avere studentId (String), courseName (String) e un booleano privato _isCompleted (il cui valore predefinito è false) con un getter. Includi un metodo markComplete() che imposta il completamento su true. Sovrascrivi toString() in modo che restituisca studentId enrolled in "courseName" - Status: Completed oppure Status: In Progress in base allo stato di completamento.
  • main.dart: metti insieme tutti gli elementi. Crea un istruttore (I001, Dr. Smith) e fagli creare due corsi: Dart Fundamentals e Advanced OOP. Stampa l'istruttore e il numero dei suoi corsi come Courses created: X. Crea uno studente (S001, Alice), stampalo, poi fagli completare 3 lezioni e stampa il suo report dei progressi. Crea un'iscrizione per Alice al corso Dart Fundamentals, stampala, segna il completamento e stampala di nuovo.

Output previsto:

[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

Provalo tu

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

void main() {
  // TODO: Crea un insegnante con id "I001" e name "Dr. Smith"
  
  // TODO: Fai creare all'insegnante due corsi: "Dart Fundamentals" e "Advanced OOP"
  
  // TODO: Stampa l'insegnante (usa toString())
  
  // TODO: Stampa "Courses created: X", dove X è courseCount
  
  // TODO: Crea uno studente con id "S001" e name "Alice"
  
  // TODO: Stampa lo studente
  
  // TODO: Fai completare allo studente 3 lezioni (chiama completeLesson() 3 volte)
  
  // TODO: Stampa il resoconto dei progressi dello studente
  
  // TODO: Crea un'iscrizione per Alice (S001) in "Dart Fundamentals"
  
  // TODO: Stampa l'iscrizione
  
  // TODO: Segna l'iscrizione come completata
  
  // TODO: Stampa di nuovo l'iscrizione
}

Tutte le lezioni di Programmazione orientata agli oggetti

Esercitati da solo: Compilatore Dart online