Ulasan: Data Siswa
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan C# di Coddy. Pelajaran 35 dari 70.
Tantangan
MudahMari kita bangun sistem catatan siswa yang menggabungkan semua teknik enkapsulasi yang telah kamu pelajari di bab ini. Kamu akan membuat sistem aman yang melindungi data siswa dengan baik, memvalidasi nilai, dan menjaga informasi tertentu agar tidak berubah setelah dibuat.
Kamu akan menyusun kodemu dalam dua file:
Student.cs: Buat classStudentdi namespaceRecordsyang menunjukkan enkapsulasi yang tepat. Class siswa ini harus memiliki:- Field
readonlyName(string) yang dapat diakses secara publik, tetapi hanya dapat diatur saat konstruksi - Field
readonlyprivat untuk ID siswa (string). Field ini tidak boleh dapat diakses secara langsung dari luar - List privat untuk menyimpan nilai (bilangan bulat)
- Property hanya-baca publik
Averageyang menghitung dan mengembalikan rata-rata semua nilai, atau0jika belum ada nilai - Method publik
AddGrade(int grade)yang hanya menerima nilai antara 0 dan 100 (inklusif). Nilai yang tidak valid harus diabaikan tanpa pemberitahuan - Method publik
GetGradeCount()yang mengembalikan jumlah nilai valid yang telah dicatat - Method publik
GetStudentInfo()yang mengembalikan string dengan format"{Name} (ID: {last 4 characters of student ID})". Perhatikan bahwa kamu hanya menampilkan ID dalam bentuk tersamarkan!
- Field
Program.cs: Di file utama, buat siswa dan tambahkan beberapa nilai untuk menunjukkan cara kerja enkapsulasi. Kamu akan menunjukkan bahwa nilai yang valid diterima, nilai yang tidak valid ditolak, dan rata-rata dihitung dengan benar.
Kamu akan menerima lima input:
- Nama siswa
- ID siswa (setidaknya 4 karakter)
- Nilai pertama yang akan ditambahkan (bilangan bulat)
- Nilai kedua yang akan ditambahkan (bilangan bulat, mungkin tidak valid seperti -5 atau 150)
- Nilai ketiga yang akan ditambahkan (bilangan bulat)
Cetak output dengan format ini:
{GetStudentInfo() result}
Grades recorded: {GetGradeCount()}
Average: {Average}Misalnya, jika inputnya adalah Emma Wilson, STU12345, 85, 150, dan 90, outputnya akan seperti ini:
Emma Wilson (ID: 2345)
Grades recorded: 2
Average: 87.5Perhatikan bahwa nilai tidak valid 150 diabaikan tanpa pemberitahuan, sehingga hanya dua nilai yang tercatat. ID siswa dilindungi. Kode eksternal tidak dapat melihat ID lengkap, hanya versi tersamarkan melalui GetStudentInfo(). Nama dapat dibaca, tetapi tidak dapat diubah. Inilah cara enkapsulasi bekerja bersama untuk membuat class yang tangguh dan terlindungi dengan baik!
Coba sendiri
using System;
using Records;
class Program
{
public static void Main(string[] args)
{
// Baca input
string name = Console.ReadLine();
string studentId = Console.ReadLine();
int grade1 = Convert.ToInt32(Console.ReadLine());
int grade2 = Convert.ToInt32(Console.ReadLine());
int grade3 = Convert.ToInt32(Console.ReadLine());
// TODO: Buat object Student dengan name dan studentId
// TODO: Tambahkan ketiga nilai menggunakan method AddGrade
// TODO: Cetak output dalam format yang diminta:
// {hasil GetStudentInfo()}
// Grades recorded: {GetGradeCount()}
// Rata-rata: {Average}
}
}
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