Kitap ve Kullanıcı Sınıfları
Coddy'nin Dart Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası — ders 102 / 110.
Görev
KolayÖnceki derste, temel özelliklere ve bir toString() metoduna sahip bir Book sınıfı oluşturdunuz. Şimdi, kitap ödünç alabilen kütüphane üyelerini temsil etmek için bir User sınıfı ekleyerek kütüphane sisteminizi genişletme zamanı.
Yeni bir dosya oluşturmanız ve mevcut dosyalarınızı güncellemeniz gerekecek:
book.dart: MevcutBooksınıfınızı, varsayılan değeritrueolan birisAvailableözelliği (boolean) ekleyerek geliştirin. Bu, bir kitabın ödünç alınıp alınamayacağını takip edecektir.user.dart: Kütüphane üyelerini temsil etmek için yeni birUsersınıfı oluşturun. Her kullanıcının birid(String),name(String) veBooknesnelerini tutan birborrowedBookslistesi olmalıdır. id ve name özelliklerini başlatan ve ödünç alınan kitaplar için boş bir liste oluşturan bir yapıcı (constructor) ekleyin.toString()metodunu,User [id]: name (X books borrowed)formatını döndürecek şekilde geçersiz kılın (override); burada X, ödünç alınan kitapların sayısıdır.main.dart: Hem kitap hem de kullanıcı dosyalarınızı içe aktarın (import). ISBN numarası978-0-13-468599-1, başlığıThe Pragmatic Programmerve yazarıDavid Thomasolan bir kitap oluşturun. id değeriU001ve ismiAlice Johnsonolan bir kullanıcı oluşturun. Kitabı yazdırın, ardındanAvailable: trueveyaAvailable: falseformatını kullanarak kitabın müsait olup olmadığını yazdırın. Kullanıcıyı yazdırın. Ardından kitabı kullanıcının ödünç alınan kitaplar listesine ekleyin, kitabınisAvailableözelliğinifalseolarak ayarlayın ve güncellenmiş kitap sayısını göstermek için kullanıcıyı tekrar yazdırın.
Bu, bir sonraki derste tam ödünç alma sistemini uygularken üzerine inşa edeceğiniz kitaplar ve kullanıcılar arasındaki ilişkiyi kurar!
Beklenen çıktı:
[978-0-13-468599-1] The Pragmatic Programmer by David Thomas
Available: true
User U001: Alice Johnson (0 books borrowed)
User U001: Alice Johnson (1 books borrowed)Kendin dene
import 'book.dart';
// TODO: user.dart dosyasını içe aktarın
void main() {
// TODO: ISBN '978-0-13-468599-1', başlık 'The Pragmatic Programmer' ve yazar 'David Thomas' olan bir kitap oluşturun
// TODO: ID 'U001' ve isim 'Alice Johnson' olan bir kullanıcı oluşturun
// TODO: Kitabı yazdırın
// TODO: Kitabın uygun olup olmadığını şu formatta yazdırın: Available: true/false
// TODO: Kullanıcıyı yazdırın
// TODO: Kitabı kullanıcının borrowedBooks listesine ekleyin
// TODO: Kitabın isAvailable değerini false olarak ayarlayın
// TODO: Güncellenmiş kitap sayısını göstermek için kullanıcıyı tekrar 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 Depolama13İleri Düzey OOP Kavramları
Kompozisyon ve KalıtımExtension MetotlarÇağrılabilir SınıflarSealed Sınıflar (Dart 3)Records (Dart 3)Desenler ve Eşleştirme (3.0)Metot İçeren Enum'lar16Proje: Kütüphane Yönetimi
Projeye Genel BakışKitap ve Kullanıcı Sınıfları2Dart'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ı