Menu
CoddyTech

Ulasan: Data Siswa

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan C# di Coddy. Pelajaran 35 dari 70.

challenge icon

Tantangan

Mudah

Mari 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 class Student di namespace Records yang menunjukkan enkapsulasi yang tepat. Class siswa ini harus memiliki:
    • Field readonly Name (string) yang dapat diakses secara publik, tetapi hanya dapat diatur saat konstruksi
    • Field readonly privat 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 Average yang menghitung dan mengembalikan rata-rata semua nilai, atau 0 jika 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!
    Constructor harus menerima nama dan ID siswa dalam urutan tersebut.
  • 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.5

Perhatikan 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

Latihan sendiri: Compiler C# online