Menu
CoddyTech

Platform E-Learning

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Dart di Coddy. Pelajaran 107 dari 110.

challenge icon

Tantangan

Mudah

Mari kita bangun platform pembelajaran elektronik yang menyatukan semua konsep OOP yang telah kamu kuasai sepanjang kursus ini. Kamu akan membuat sistem yang mengelola pengguna, kursus, dan pendaftaran menggunakan abstract class, inheritance, mixin, dan enkapsulasi.

Platformmu akan disusun dalam lima file:

  • user.dart: Buat abstract User class dengan field privat untuk _id (String) dan _name (String), serta getter publik. Sertakan method abstrak String getRole() yang harus diimplementasikan oleh subclass. Override toString() agar mengembalikan [role] name (id), dengan role berasal dari getRole().
  • student.dart: Buat Student class yang memperluas User. Student harus menggunakan mixin ProgressTracking (yang didefinisikan di file ini) yang menyediakan integer privat _completedLessons (dimulai dari 0) dengan getter, serta method completeLesson() untuk menambah nilainya dan getProgressReport() yang mengembalikan Completed X lessons. Student class harus mengimplementasikan getRole() agar mengembalikan Student.
  • instructor.dart: Buat Instructor class yang memperluas User. Instructor memiliki list privat _coursesCreated (list String yang mewakili judul kursus). Sertakan method createCourse(String title) yang menambahkan judul ke list dan mengembalikan judul tersebut. Implementasikan getRole() agar mengembalikan Instructor. Tambahkan getter courseCount yang mengembalikan jumlah kursus yang dibuat.
  • enrollment.dart: Buat Enrollment class yang melacak pendaftaran student dalam kursus. Class ini harus memiliki studentId (String), courseName (String), dan boolean privat _isCompleted (nilai awalnya false) dengan getter. Sertakan method markComplete() yang mengatur status selesai menjadi true. Override toString() agar mengembalikan studentId enrolled in "courseName" - Status: Completed atau Status: In Progress, bergantung pada status penyelesaian.
  • main.dart: Satukan semuanya. Buat seorang instructor (I001, Dr. Smith) dan minta dia membuat dua kursus: Dart Fundamentals dan Advanced OOP. Cetak instructor dan jumlah kursusnya dalam format Courses created: X. Buat seorang student (S001, Alice), cetak student tersebut, lalu minta dia menyelesaikan 3 pelajaran dan cetak laporan progresnya. Buat pendaftaran untuk Alice di Dart Fundamentals, cetak, tandai selesai, lalu cetak lagi.

Output yang diharapkan:

[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

Coba sendiri

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

void main() {
  // TODO: Buat instruktur dengan id "I001" dan nama "Dr. Smith"
  
  // TODO: Minta instruktur membuat dua kursus: "Dart Fundamentals" dan "Advanced OOP"
  
  // TODO: Cetak instruktur (menggunakan toString())
  
  // TODO: Cetak "Courses created: X" dengan X adalah courseCount
  
  // TODO: Buat siswa dengan id "S001" dan nama "Alice"
  
  // TODO: Cetak siswa
  
  // TODO: Minta siswa menyelesaikan 3 pelajaran (panggil completeLesson() 3 kali)
  
  // TODO: Cetak laporan kemajuan siswa
  
  // TODO: Buat pendaftaran untuk Alice (S001) in "Dart Fundamentals"
  
  // TODO: Cetak pendaftaran
  
  // TODO: Tandai pendaftaran sebagai selesai
  
  // TODO: Cetak pendaftaran lagi
}

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler Dart online