Özet - Öğrenci Kayıtları
Coddy'nin C# Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası — ders 35 / 70.
Görev
KolayBu 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:Recordsad alanı (namespace) içinde, doğru kapsüllemeyi gösteren birStudentsınıfı oluşturun. Öğrenciniz şunlara sahip olmalıdır:- Genel olarak erişilebilen ancak yalnızca oluşturma sırasında ayarlanabilen bir
readonlyalanName(string) - Öğrenci kimliği (string) için özel (private) bir
readonlyalan - 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
0döndüren genel (public) bir salt okunur özellikAverage - 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 metotGetStudentInfo()- kimliğin yalnızca maskelenmiş bir versiyonunu paylaştığınıza dikkat edin!
- Genel olarak erişilebilen ancak yalnızca oluşturma sırasında ayarlanabilen bir
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.5150 ş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
1OOP Temelleri
Harici Dosyalarİsim Alanları ve YönergelerSınıf ve Nesnelere Giriş'this' Anahtar KelimesiMetotlar ve ParametrelerAlanlar ve ÖzelliklerYapıcı MetotlarNesne BaşlatıcılarÖzet - Basit Hesap Makinesi4Kalıtım
Temel Kalıtım (:) Sözdizimi'base' Anahtar KelimesiVirtual ve Override Anahtar KelimeleriSealed Sınıflar'object' Temel SınıfıÖzet - Çalışan Hiyerarşisi7İleri Düzey Özellikler
Operatör Aşırı Yüklemeİndeksleyiciler (this[])ToString() Geçersiz KılmaGenişletme MetotlarıÖzet - Özel Liste10Tasarım Kalıpları Bölüm 1
Tasarım Kalıplarına GirişThread-Safe SingletonFactory KalıbıObserver Kalıbı (Olaylar)Strategy Kalıbı2Özellikler ve Statik Üyeler
Otomatik Uygulanan ÖzelliklerSadece Okunur/Yazılır ÖzelliklerStatik Alanlar ve MetotlarStatik Sınıflarİfade Gövdeli Üyeler5Polimorfizm ve Arayüzler
Derleme vs Çalışma Zamanı PolimorfizmiArayüz vs Soyut SınıfÇoklu ArayüzlerBelirgin ArayüzlerUpcasting ve DowncastingÖzet - Şekil Hesaplayıcı8İleri Düzey OOP Kavramları
Kalıtım yerine KompozisyonGenerics (Sınıflar ve Metotlar)Delegates ve EventlerAttributes ve ReflectionIDisposable ve using İfadesiDependency Injection Temelleri11Tasarım Kalıpları Bölüm 2
Komut KalıbıAdaptör KalıbıDekoratör KalıbıŞablon Metot KalıbıDurum KalıbıKompozit Kalıbı3Sınıf Mimarisi
Örnek vs Statik Veri'readonly' ve 'const' Anahtar KelimeleriDestekleyici Alanlar (Backing Fields)Özet - Banka Hesabı Yöneticisi6Kapsülleme
Erişim BelirleyicilerKapsülleme için ÖzelliklerVeri Gizleme UygulamasıDeğişmezlik KalıplarıÖzet - Öğrenci Kayıtları