Ödünç Alma Sistemi
Coddy'nin Dart Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası — ders 103 / 110.
Görev
KolayÖnceki derste, temel özelliklere sahip Book ve User sınıflarını oluşturdunuz. Şimdi, tüm ödünç alma sürecini yöneten bir Library sınıfı ile düzgün bir ödünç alma sistemi kurma zamanı.
Ödünç alma mantığını uygulamak için yeni bir dosya oluşturacak ve mevcut dosyalarınızı güncelleyeceksiniz:
book.dart:isbn,title,author,isAvailablevetoString()özelliklerine sahip mevcutBooksınıfınızı koruyun.user.dart:id,name,borrowedBooksvetoString()özelliklerine sahip mevcutUsersınıfınızı koruyun.library.dart: Kitapları ve kullanıcıları yöneten yeni birLibrarysınıfı oluşturun. Bu sınıfın iki listesi olmalıdır: biribooksiçin, diğeriusersiçin. Şu metotları ekleyin:addBook(Book book)- kütüphane koleksiyonuna bir kitap eklerregisterUser(User user)- kütüphaneye bir kullanıcı kaydederborrowBook(String isbn, String userId)- kitabı ve kullanıcıyı bulur, eğer kitap mevcutsa, müsaitse ve kullanıcı mevcutsa, kitabı müsait değil olarak işaretler, kullanıcının ödünç aldığı kitaplar listesine ekler veuserId borrowed "title"yazdırır. Kitap bulunamazsaBook not foundyazdırın. Kitap müsait değilseBook not availableyazdırın. Kullanıcı bulunamazsaUser not foundyazdırın.returnBook(String isbn, String userId)- kitabı ve kullanıcıyı bulur, eğer her ikisi de mevcutsa ve kullanıcı o kitaba sahipse, kitabı müsait olarak işaretler, kullanıcının ödünç aldığı kitaplar listesinden çıkarır veuserId returned "title"yazdırır. Kitap bulunamazsaBook not foundyazdırın. Kullanıcı bulunamazsaUser not foundyazdırın.
main.dart: Tüm dosyalarınızı içe aktarın ve ödünç alma sistemini gösterin. BirLibraryoluşturun, iki kitap ekleyin (978-0-13-468599-1,The Pragmatic Programmer,David Thomasve978-0-596-51774-8,JavaScript: The Good Parts,Douglas Crockford) ve bir kullanıcı kaydedin (U001,Alice Johnson). Ardından:- İlk kitabı Alice için ödünç alın
- Aynı kitabı tekrar ödünç almayı deneyin (başarısız olmalı)
- İkinci kitabı Alice için ödünç alın
- Alice'i yazdırarak ödünç aldığı kitap sayısını gösterin
- İlk kitabı iade edin
- Güncellenmiş sayıyı göstermek için Alice'i tekrar yazdırın
Beklenen çıktı:
U001 borrowed "The Pragmatic Programmer"
Book not available
U001 borrowed "JavaScript: The Good Parts"
User U001: Alice Johnson (2 books borrowed)
U001 returned "The Pragmatic Programmer"
User U001: Alice Johnson (1 books borrowed)Kendin dene
import 'book.dart';
import 'user.dart';
import 'library.dart';
void main() {
// TODO: Bir Library örneği oluşturun
// TODO: İki kitap oluşturun:
// - Kitap 1: isbn '978-0-13-468599-1', title 'The Pragmatic Programmer', author 'David Thomas'
// - Kitap 2: isbn '978-0-596-51774-8', title 'JavaScript: The Good Parts', author 'Douglas Crockford'
// TODO: Her iki kitabı da kütüphaneye ekleyin
// TODO: id değeri 'U001' ve name değeri 'Alice Johnson' olan bir kullanıcı oluşturun
// TODO: Kullanıcıyı kütüphaneye kaydedin
// TODO: İlk kitabı Alice için ödünç alın
// TODO: Aynı kitabı tekrar ödünç almayı deneyin ('Book not available' ile başarısız olmalı)
// TODO: İkinci kitabı Alice için ödünç alın
// TODO: Ödünç alınan kitap sayısını göstermek için Alice'i yazdırın
// TODO: İlk kitabı iade edin
// TODO: Güncellenmiş sayıyı göstermek için Alice'i 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ı