Menu
Coddy logo textTech

Platforma e-learningowa

Część sekcji Programowanie obiektowe ścieżki Dart w Coddy. Lekcja 107 z 110.

challenge icon

Wyzwanie

Łatwy

Zbudujmy platformę e-learningową, która łączy wszystkie koncepcje OOP opanowane przez Ciebie w trakcie tego kursu. Stworzysz system zarządzający użytkownikami, kursami i zapisami na kursy, wykorzystujący klasy abstrakcyjne, dziedziczenie, mixiny i enkapsulację.

Twoja platforma będzie składać się z pięciu plików:

  • user.dart: Utwórz abstrakcyjną klasę User z prywatnymi polami _id (String) i _name (String) oraz publicznymi getterami. Dodaj metodę abstrakcyjną String getRole(), którą muszą implementować podklasy. Nadpisz toString(), aby zwracała [role] name (id), gdzie wartość role pochodzi z getRole().
  • student.dart: Utwórz klasę Student, która rozszerza klasę User. Studenci powinni używać mixina ProgressTracking (zdefiniowanego w tym pliku), który udostępnia prywatną liczbę całkowitą _completedLessons (początkowo równą 0) z getterem oraz metody completeLesson(), która ją zwiększa, i getProgressReport(), która zwraca Completed X lessons. Klasa Student powinna implementować getRole(), aby zwracała Student.
  • instructor.dart: Utwórz klasę Instructor, która rozszerza klasę User. Instruktorzy mają prywatną listę _coursesCreated (listę wartości String reprezentujących tytuły kursów). Dodaj metodę createCourse(String title), która dodaje tytuł do listy i go zwraca. Zaimplementuj getRole(), aby zwracała Instructor. Dodaj getter courseCount, który zwraca liczbę utworzonych kursów.
  • enrollment.dart: Utwórz klasę Enrollment, która śledzi zapis studenta na kurs. Powinna mieć pola studentId (String), courseName (String) oraz prywatne pole logiczne _isCompleted (domyślnie ustawione na false) z getterem. Dodaj metodę markComplete(), która ustawia status ukończenia na true. Nadpisz toString(), aby zwracała studentId enrolled in "courseName" - Status: Completed lub Status: In Progress, w zależności od statusu ukończenia.
  • main.dart: Połącz wszystkie elementy. Utwórz instruktora (I001, Dr. Smith) i spraw, aby utworzył dwa kursy: Dart Fundamentals i Advanced OOP. Wypisz instruktora oraz liczbę jego kursów w formacie Courses created: X. Utwórz studentkę (S001, Alice) i ją wypisz, a następnie spraw, aby ukończyła 3 lekcje, po czym wypisz raport jej postępów. Utwórz zapis Alice na kurs Dart Fundamentals, wypisz go, oznacz jako ukończony i wypisz ponownie.

Oczekiwany wynik:

[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

Spróbuj swoich sił

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

void main() {
  // TODO: Utwórz instruktora o id "I001" i imieniu "Dr. Smith"
  
  // TODO: Niech instruktor utworzy dwa kursy: "Dart Fundamentals" i "Advanced OOP"
  
  // TODO: Wyświetl instruktora (używa toString())
  
  // TODO: Wyświetl "Courses created: X", gdzie X to courseCount
  
  // TODO: Utwórz studenta o id "S001" i imieniu "Alice"
  
  // TODO: Wyświetl studenta
  
  // TODO: Niech student ukończy 3 lekcje (wywołaj completeLesson() 3 razy)
  
  // TODO: Wyświetl raport postępów studenta
  
  // TODO: Utwórz zapis na kurs dla Alice (S001) in "Dart Fundamentals"
  
  // TODO: Wyświetl zapis na kurs
  
  // TODO: Oznacz zapis na kurs jako ukończony
  
  // TODO: Wyświetl zapis na kurs ponownie
}

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Kompilator Dart online