Platform E-Learning
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Dart di Coddy. Pelajaran 107 dari 110.
Tantangan
MudahMari 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 abstractUserclass dengan field privat untuk_id(String) dan_name(String), serta getter publik. Sertakan method abstrakString getRole()yang harus diimplementasikan oleh subclass. OverridetoString()agar mengembalikan[role] name (id), dengan role berasal darigetRole().student.dart: BuatStudentclass yang memperluasUser. Student harus menggunakan mixinProgressTracking(yang didefinisikan di file ini) yang menyediakan integer privat_completedLessons(dimulai dari 0) dengan getter, serta methodcompleteLesson()untuk menambah nilainya dangetProgressReport()yang mengembalikanCompleted X lessons.Studentclass harus mengimplementasikangetRole()agar mengembalikanStudent.instructor.dart: BuatInstructorclass yang memperluasUser. Instructor memiliki list privat_coursesCreated(list String yang mewakili judul kursus). Sertakan methodcreateCourse(String title)yang menambahkan judul ke list dan mengembalikan judul tersebut. ImplementasikangetRole()agar mengembalikanInstructor. Tambahkan gettercourseCountyang mengembalikan jumlah kursus yang dibuat.enrollment.dart: BuatEnrollmentclass yang melacak pendaftaran student dalam kursus. Class ini harus memilikistudentId(String),courseName(String), dan boolean privat_isCompleted(nilai awalnya false) dengan getter. Sertakan methodmarkComplete()yang mengatur status selesai menjadi true. OverridetoString()agar mengembalikanstudentId enrolled in "courseName" - Status: CompletedatauStatus: In Progress, bergantung pada status penyelesaian.main.dart: Satukan semuanya. Buat seorang instructor (I001,Dr. Smith) dan minta dia membuat dua kursus:Dart FundamentalsdanAdvanced OOP. Cetak instructor dan jumlah kursusnya dalam formatCourses created: X. Buat seorang student (S001,Alice), cetak student tersebut, lalu minta dia menyelesaikan 3 pelajaran dan cetak laporan progresnya. Buat pendaftaran untuk Alice diDart 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: CompletedCoba 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
1Dasar-Dasar OOP
file Eksternallibrary dan ImporPengantar OOPClass dan ObjectKata kunci thismethodVariabel InstanceDasar-Dasar ConstructorRingkasan: Kalkulator Sederhana4Keamanan Null
Pengantar Keamanan NullBisa Null vs Tidak Bisa NullOperator ? dan !Kata Kunci late dan Keamanan NullOperator Penanganan NullKeamanan Null dalam classRangkuman: Sistem Profil Pengguna7class Abstrak & Antarmuka
class AbstrakMethod abstrakAntarmuka di DartAntarmuka ImplisitMengimplementasikan vs MemperluasBeberapa AntarmukaRingkasan: Kalkulator Bentuk10Koleksi dan Generik
Gambaran Umum list, set, dan MapKoleksi dengan Tipe AmanKelas GenerikMetode GenerikBatasan GenerikIterable dan IteratorUlasan: Penyimpanan Generik2Konstruktor dalam Dart
Konstruktor DefaultKonstruktor BernamaInitializer ListsKonstruktor KonstanKonstruktor FactoryKonstruktor RedirectingRangkuman, Pembuat Bentuk5Enkapsulasi
Member Publik vs PrivatKonvensi Prefiks _Privasi Tingkat libraryPendalaman Getter & SetterPenyembunyian InformasiRingkasan: Catatan Siswa8Mixin
Pengantar MixinMembuat MixinMenggunakan Beberapa MixinKata Kunci on pada MixinMixin vs. PewarisanMixin vs. InterfaceRangkuman: Sistem Hewan3Property Class
Anggota Instance vs StaticField Final dan ConstVariabel LateMethod dan Field StaticGetter dan SetterRangkuman: Pengelola Rekening Bank6Pewarisan
Pewarisan DasarKata Kunci superPenimpaan methodAnotasi @overrideKata Kunci class finalKonstruktor dan PewarisanRangkuman, Hierarki Karyawan9Polimorfisme
Dasar-Dasar PolimorfismePolimorfisme melalui AntarmukaPemeriksaan Tipe saat RuntimeOperator is & asKata Kunci KovarianRangkuman: Pemroses PembayaranLatihan sendiri: Compiler Dart online