Menu
Coddy logo textTech

Özet - Öğrenci Kayıtları

Coddy'nin C# Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası — ders 35 / 70.

challenge icon

Görev

Kolay

Bu bölümde öğrendiğiniz tüm kapsülleme (encapsulation) tekniklerini bir araya getiren bir öğrenci kayıt sistemi oluşturalım. Öğrenci verilerinin uygun şekilde korunduğu, notların doğrulandığı ve belirli bilgilerin oluşturulduktan sonra değiştirilemez (immutable) kaldığı güvenli bir sistem oluşturacaksınız.

Kodunuzu iki dosya halinde düzenleyeceksiniz:

  • Student.cs: Records ad alanı (namespace) içinde, doğru kapsüllemeyi gösteren bir Student sınıfı oluşturun. Öğrenciniz şunlara sahip olmalıdır:
    • Genel olarak erişilebilen ancak yalnızca oluşturma sırasında ayarlanabilen bir readonly alan Name (string)
    • Öğrenci kimliği (string) için özel (private) bir readonly alan - bu alana dışarıdan asla doğrudan erişilememelidir
    • Notları (tam sayılar) saklamak için özel (private) bir liste
    • Tüm notların ortalamasını hesaplayıp döndüren veya hiç not yoksa 0 döndüren genel (public) bir salt okunur özellik Average
    • Yalnızca 0 ile 100 (dahil) arasındaki notları kabul eden genel bir metot AddGrade(int grade) - geçersiz notlar sessizce yoksayılmalıdır
    • Kaç tane geçerli notun kaydedildiğini döndüren genel bir metot GetGradeCount()
    • "{Name} (ID: {last 4 characters of student ID})" formatında bir dize döndüren genel bir metot GetStudentInfo() - kimliğin yalnızca maskelenmiş bir versiyonunu paylaştığınıza dikkat edin!
    Yapıcı metot (constructor), sırasıyla adı ve öğrenci kimliğini kabul etmelidir.
  • Program.cs: Ana dosyanızda, bir öğrenci oluşturun ve kapsüllemenin nasıl çalıştığını göstermek için birkaç not ekleyin. Geçerli notların kabul edildiğini, geçersiz notların reddedildiğini ve ortalamanın doğru hesaplandığını göstereceksiniz.

Beş girdi alacaksınız:

  • Öğrenci adı
  • Öğrenci kimliği (en az 4 karakter)
  • Eklenecek ilk not (tam sayı)
  • Eklenecek ikinci not (tam sayı, -5 veya 150 gibi geçersiz olabilir)
  • Eklenecek üçüncü not (tam sayı)

Çıktıyı şu formatta yazdırın:

{GetStudentInfo() result}
Grades recorded: {GetGradeCount()}
Average: {Average}

Örneğin, girdiler Emma Wilson, STU12345, 85, 150 ve 90 ise çıktı şöyle olmalıdır:

Emma Wilson (ID: 2345)
Grades recorded: 2
Average: 87.5

150 şeklindeki geçersiz notun nasıl sessizce reddedildiğine ve böylece yalnızca iki notun kaydedildiğine dikkat edin. Öğrenci kimliği korunmaktadır; dış kod tam kimliği asla göremez, yalnızca GetStudentInfo() aracılığıyla maskelenmiş versiyonunu görebilir. İsim okunabilir ancak değiştirilemezdir. Bu, sağlam ve iyi korunmuş bir sınıf oluşturmak için birlikte çalışan kapsüllemedir!

Kendin dene

using System;
using Records;

class Program
{
    public static void Main(string[] args)
    {
        // Girdileri oku
        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: name ve studentId ile bir Student nesnesi oluşturun

        // TODO: AddGrade metodunu kullanarak her üç notu da ekleyin

        // TODO: Çıktıyı istenen formatta yazdırın:
        // {GetStudentInfo() sonucu}
        // Grades recorded: {GetGradeCount()}
        // Average: {Average}
    }
}

Nesne Yönelimli Programlama bölümündeki tüm dersler