Platform E-learning
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan C# di Coddy. Pelajaran 68 dari 70.
Tantangan
MudahMari bangun platform e-learning yang mengelola kursus, siswa, dan pendaftaran! Tantangan ini menyatukan semua yang sudah kamu pelajari tentang OOP: class, pewarisan, antarmuka, enkapsulasi, dan layanan yang bekerja bersama dalam arsitektur yang rapi.
Kamu akan mengatur kodemu dalam lima file:
Lesson.cs: Buat classLessondalam namespaceELearning.Models. Setiap pelajaran memiliki property hanya-bacaTitle(string) danDurationMinutes(int) yang ditetapkan melalui konstruktor.Course.cs: Buat classCoursedalam namespaceELearning.Models. Kursus memiliki property hanya-bacaId(string),Title(string), danInstructor(string), serta sebuah listLessons. Sertakan methodAddLesson(Lesson lesson)dan property hanya-bacaTotalDurationyang menghitung jumlah durasi semua pelajaran.Student.cs: Buat classStudentdalam namespaceELearning.Modelsdengan property hanya-bacaId(int) danName(string). Siswa melacak progresnya melalui dictionary privat yang memetakan ID kursus ke jumlah pelajaran yang telah diselesaikan. Sertakan methodCompleteLesson(string courseId)untuk menambah progres danGetProgress(string courseId)untuk mengembalikan jumlah pelajaran yang telah diselesaikan (atau 0 jika belum terdaftar).EnrollmentService.cs: Buat classEnrollmentServicedalam namespaceELearning.Services. Layanan ini mengelola kursus dan pendaftaran menggunakan koleksi privat. Implementasikan:AddCourse(Course course): menambahkan kursus ke platformEnroll(Student student, string courseId): mengembalikantruejika pendaftaran berhasil,falsejika kursus tidak ada atau siswa sudah terdaftarGetEnrolledCourses(Student student): mengembalikan list ID kursus tempat siswa terdaftarGetCourse(string courseId): mengembalikan kursus ataunulljika tidak ditemukan
Program.cs: Satukan semuanya dengan membuat kursus beserta pelajarannya, mendaftarkan siswa, melacak progres, dan menampilkan hasil berdasarkan input.
Kamu akan menerima input berikut:
- Jumlah kursus yang akan dibuat
- Untuk setiap kursus: ID, judul, instruktur, jumlah pelajaran, lalu untuk setiap pelajaran: judul dan durasi (menit)
- ID dan nama siswa
- Jumlah operasi yang akan dilakukan
- Untuk setiap operasi: tindakan (
enroll,complete,progress, atauinfo) yang diikuti ID kursus
Format output:
enroll: CetakEnrolled in: {CourseTitle}atauEnrollment failed: {courseId}complete: CetakCompleted lesson in {CourseTitle}(tambahkan progres sebesar 1)progress: Cetak{CourseTitle}: {completed}/{total} lessonsinfo: Cetak{CourseTitle} by {Instructor} - {TotalDuration} minutes
Misalnya, jika inputnya adalah:
2
CS101
Intro to Programming
Dr. Smith
3
Variables
30
Loops
45
Functions
60
CS102
Data Structures
Dr. Jones
2
Arrays
40
Lists
50
1
Alice
6
enroll
CS101
info
CS101
complete
CS101
complete
CS101
progress
CS101
enroll
CS999Outputnya adalah:
Enrolled in: Intro to Programming
Intro to Programming by Dr. Smith - 135 minutes
Completed lesson in Intro to Programming
Completed lesson in Intro to Programming
Intro to Programming: 2/3 lessons
Enrollment failed: CS999Perhatikan bagaimana layanan mengelola hubungan antara siswa dan kursus, sementara setiap class menangani tanggung jawabnya masing-masing. Siswa melacak progresnya sendiri, kursus menghitung durasi totalnya, dan layanan pendaftaran mengoordinasikan semuanya. Inilah pemisahan tanggung jawab yang rapi!
Coba sendiri
using System;
using System.Collections.Generic;
using ELearning.Models;
using ELearning.Services;
class Program
{
public static void Main(string[] args)
{
// Baca jumlah kursus
int numCourses = Convert.ToInt32(Console.ReadLine());
// TODO: Buat instance EnrollmentService
// TODO: Baca dan buat setiap kursus beserta pelajarannya
// Untuk setiap kursus: baca ID, judul, pengajar, dan jumlah pelajaran
// Untuk setiap pelajaran: baca judul dan durasinya
// Tambahkan pelajaran ke kursus, lalu tambahkan kursus ke layanan
// Baca informasi siswa
int studentId = Convert.ToInt32(Console.ReadLine());
string studentName = Console.ReadLine();
// TODO: Buat instance Student
// Baca jumlah operasi
int numOperations = Convert.ToInt32(Console.ReadLine());
// TODO: Proses setiap operasi
// Untuk setiap operasi: baca tindakan dan courseId
// Tangani: enroll, complete, progress, info
// Tampilkan pesan yang sesuai berdasarkan tindakan tersebut
}
}
Semua pelajaran di Pemrograman Berorientasi Objek
1Dasar-Dasar OOP
File EksternalNamespace & DirektifPengantar class & objectKata Kunci 'this'Method dan ParameterField vs PropertyKonstruktorInisialisasi objectRingkasan: Kalkulator Sederhana4Pewarisan
Sintaks Dasar Pewarisan (:)Kata Kunci 'base'Kata Kunci Virtual & OverrideClass SealedBase Class 'object'Rangkuman: Hierarki Karyawan7Fitur Lanjutan
Overloading OperatorIndexer (this[])Penimpaan ToString()Extension methodRingkasan: Custom list2Property & Anggota Statis
Property yang Diimplementasikan OtomatisProperty Hanya Baca dan Hanya TulisField dan method StatisClass StatisAnggota Berbentuk Ekspresi5Polimorfisme & Antarmuka
Polimorfisme saat kompilasi vs runtimeAntarmuka vs kelas abstrakBeberapa antarmukaAntarmuka eksplisitUpcasting & DowncastingRingkasan, Kalkulator Bentuk8Konsep OOP Lanjutan
Komposisi daripada PewarisanGenerics (class dan method)Delegate dan EventAtribut dan ReflectionIDisposable dan Pernyataan usingDasar-Dasar Dependency Injection11Pola Desain Bagian 2
Pola PerintahPola AdapterPola DecoratorPola Template MethodPola StatePola CompositeLatihan sendiri: Compiler C# online