Ö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ğin tüm kapsülleme 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 kaldığı güvenli bir sistem oluşturacaksın.
Kodunu iki dosya arasında düzenleyeceksin:
Student.cs: Uygun kapsüllemeyi gösteren birStudentsınıfınıRecordsad alanında oluştur. Öğrencinin şunlara sahip olması gerekir:- Herkese açık olan, ancak yalnızca oluşturulurken ayarlanabilen bir
readonlyalanıName(string) - Öğrenci kimliği için özel bir
readonlyalan (string) — bu alana dışarıdan hiçbir zaman doğrudan erişilememelidir - Notları depolamak için özel bir liste (tamsayılar)
- Tüm notların ortalamasını hesaplayıp döndüren veya hiç not yoksa
Averagedöndüren, herkese açık salt okunur bir özellik0 - Yalnızca 0 ile 100 (dahil) arasındaki notları kabul eden herkese açık bir yöntem
AddGrade(int grade)— geçersiz notlar sessizce yok sayılmalıdır - Kaydedilmiş kaç geçerli not olduğunu döndüren herkese açık bir yöntem
GetGradeCount() GetStudentInfo()biçiminde bir dize döndüren herkese açık bir yöntem"{Name} (ID: {last 4 characters of student ID})"— kimliğin yalnızca maskelenmiş bir sürümünü nasıl gösterdiğine dikkat et!
- Herkese açık olan, ancak yalnızca oluşturulurken ayarlanabilen bir
Program.cs: Ana dosyanda bir öğrenci oluştur ve kapsüllemenin nasıl çalıştığını göstermek için birkaç not ekle. Geçerli notların kabul edildiğini, geçersiz notların reddedildiğini ve ortalamanın doğru hesaplandığını göstereceksin.
Beş girdi alacaksın:
- Öğrenci adı
- Öğrenci kimliği (en az 4 karakter)
- Eklenilecek ilk not (tamsayı)
- Eklenilecek ikinci not (tamsayı, -5 veya 150 gibi geçersiz olabilir)
- Eklenilecek üçüncü not (tamsayı)
Çıktıyı şu biçimde yazdır:
{GetStudentInfo() result}
Grades recorded: {GetGradeCount()}
Average: {Average}Örneğin girdiler Emma Wilson, STU12345, 85, 150 ve 90 ise çıktı şu şekilde olmalıdır:
Emma Wilson (ID: 2345)
Grades recorded: 2
Average: 87.5150 değerindeki geçersiz notun sessizce reddedildiğine ve bu nedenle yalnızca iki notun kaydedildiğine dikkat et. Öğrenci kimliği korunur — dış kod, kimliğin tamamını hiçbir zaman göremez; yalnızca GetStudentInfo() aracılığıyla maskelenmiş sürümü görebilir. Ad okunabilir ancak değiştirilemezdir. Sağlam ve iyi korunan bir sınıf oluşturmak için kapsüllemenin birlikte çalışması işte budur!
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ıKendi başına pratik yap: Online C# derleyicisi