Özet - Öğrenci Kayıtları
Coddy'nin Dart Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası — ders 35 / 110.
Görev
KolayBu bölümde öğrendiğiniz tüm kapsülleme (encapsulation) kavramlarını bir araya getiren bir öğrenci kayıt sistemi oluşturalım. Hassas akademik verileri korurken getter'lar, setter'lar ve hesaplanmış özellikler (computed properties) aracılığıyla kontrollü erişim sağlayan bir Student sınıfı oluşturacaksınız.
Kodunuzu iki dosya halinde düzenleyeceksiniz:
student.dart: Akademik kayıtları uygun kapsülleme ile yöneten birStudentsınıfı tanımlayın:- Bir
final String id- öğrenci kimliği oluşturulduktan sonra asla değişmemelidir - Genel (public) bir
String name- isimler güncellenebilir - Özel (private) bir
List<int> _grades- ham not listesi korunmalıdır - id, name ve başlangıç not listesini alan bir yapıcı (constructor)
- Kaç adet notun kaydedildiğini döndüren bir getter
gradeCount - Tüm notların ortalamasını hesaplayan ve
doubleolarak döndüren bir hesaplanmış getteraverage(hiç not yoksa0.0döndürün) - Ortalamaya göre bir harf döndüren hesaplanmış getter
letterGrade: 90+ için'A', 80-89 için'B', 70-79 için'C', 60-69 için'D've 60'ın altı için'F' - Yalnızca 0 ile 100 (dahil) arasındaki notları kabul eden bir
addGrade(int grade)metodu. Geçerliyse, notu ekleyin veGrade [grade] added for [name]yazdırın. Geçersizse,Invalid grade: [grade]yazdırın - En yüksek notu döndüren veya hiç not yoksa
0döndüren birgetHighestGrade()metodu - Öğrencinin akademik özetini gösteren bir
displayRecord()metodu
- Bir
main.dart: Öğrenci sınıfınızı içe aktarın ve kapsüllemeyi iş başında gösterin:- id değeri
'STU001', ismi'Emma've başlangıç notları[85, 92, 78]olan bir öğrenci oluşturun displayRecord()metodunu çağırın95değerinde bir not ekleyin150değerinde geçersiz bir not eklemeyi deneyin88değerinde bir not ekleyindisplayRecord()metodunu çağırınHighest grade: [highest]yazdırın
- id değeri
displayRecord() metodu şu formatta yazdırmalıdır:
===== Student Record =====
ID: [id]
Name: [name]
Grades Recorded: [gradeCount]
Average: [average]
Letter Grade: [letterGrade]Beklenen çıktı:
===== Student Record =====
ID: STU001
Name: Emma
Grades Recorded: 3
Average: 85.0
Letter Grade: B
Grade 95 added for Emma
Invalid grade: 150
Grade 88 added for Emma
===== Student Record =====
ID: STU001
Name: Emma
Grades Recorded: 5
Average: 87.6
Letter Grade: B
Highest grade: 95Kendin dene
import 'student.dart';
void main() {
// TODO: 'STU001' id'li, 'Emma' isimli ve [85, 92, 78] başlangıç notlarına sahip bir öğrenci oluşturun
// TODO: displayRecord() fonksiyonunu çağırın
// TODO: 95 notunu ekleyin
// TODO: 150 şeklinde geçersiz bir not eklemeyi deneyin
// TODO: 88 notunu ekleyin
// TODO: displayRecord() fonksiyonunu çağırın
// TODO: "Highest grade: [highest]" ifadesini yazdırın
}
Nesne Yönelimli Programlama bölümündeki tüm dersler
1OOP Temelleri
Harici DosyalarKütüphaneler ve ImportlarOOP'ye GirişSınıflar ve Nesnelerthis Anahtar KelimesiMetotlarÖrnek DeğişkenleriConstructor TemelleriÖzet - Basit Hesap Makinesi4Null Safety
Null Safety'ye GirişNullable ve Non-Nullable? ve ! OperatörleriLate Anahtar Kelimesi ve Null SafetyNull-Aware OperatörleriSınıflarda Null SafetyÖzet - Kullanıcı Profili Sistemi7Soyut Sınıflar ve Arayüzler
Soyut SınıflarSoyut MetotlarDart'ta ArayüzlerÖrtük ArayüzlerUygulama vs. GenişletmeÇoklu ArayüzlerÖzet - Şekil Hesaplayıcı10Koleksiyonlar ve Generic'ler
List, Set, Map Genel BakışTip Güvenli KoleksiyonlarGeneric SınıflarGeneric MetotlarGeneric KısıtlamalarIterable ve IteratorÖzet - Generic Depolama2Dart'ta Yapıcılar
Varsayılan Yapıcıİsimlendirilmiş Yapıcılarİlklendirme ListeleriSabit YapıcılarFabrika YapıcılarıYönlendiren YapıcılarÖzet - Şekil Oluşturucu5Kapsülleme
Public ve Private Üyeler_ Öneki KuralıKütüphane Düzeyinde GizlilikGetter ve Setter DetaylarıBilgi GizlemeÖzet - Öğrenci Kayıtları8Mixin'ler
Mixin'lere GirişMixin OluşturmaBirden Fazla Mixin KullanımıMixin'lerde on Anahtar KelimesiMixin vs KalıtımMixin vs ArayüzÖzet - Hayvan Sistemi11Özel Metotlar
toString() OverridehashCode ve == OverrideComparable Arayüzücall() MetodunoSuchMethod OverrideÖzet - Özel Koleksiyon14Tasarım Kalıpları Bölüm 1
Tasarım Kalıplarına GirişSingleton KalıbıFactory KalıbıObserver KalıbıStrategy Kalıbı17Final Meydan Okumaları
E-Öğrenme PlatformuBankacılık SistemiOyun Karakter SistemiAraç Kiralama Servisi3Sınıf Özellikleri
Instance ve Statik ÜyelerFinal ve Const AlanlarLate DeğişkenlerStatik Metotlar ve AlanlarGetters ve SettersÖzet - Banka Hesabı Yöneticisi6Kalıtım
Temel Kalıtımsuper Anahtar KelimesiMetot Ezme@override Anotasyonufinal Sınıf Anahtar KelimesiYapıcı Metotlar ve KalıtımÖzet - Çalışan Hiyerarşisi9Çok Biçimlilik
Çok Biçimlilik TemelleriInterface'ler ile Çok BiçimlilikÇalışma Zamanı Tip Kontrolüis ve as OperatörleriCovariant Anahtar KelimesiÖzet - Ödeme İşlemcisi12Asenkron OOP
Futures ve async/awaitStream TemelleriStream Controller'larAsenkron KurucularSınıf Metotlarında Asenkron KullanımıÖzet - Data Fetcher15Tasarı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ıRepository Kalıbı