Özet - Generic Depolama
Coddy'nin Dart Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası — ders 69 / 110.
Görev
KolayKoleksiyonlar ve generic yapılar hakkında öğrendiğiniz her şeyi birleştiren generic bir depolama sistemi inşa edelim! Herhangi bir türdeki öğeleri depolayabilen, onları geri getirebilen ve bir for-in döngüsü kullanılarak üzerinde gezinebilen bir Storage<T> sınıfı oluşturacaksınız.
Kodunuzu iki dosya halinde düzenleyeceksiniz:
storage.dart: İki sınıftan oluşan generic depolama sisteminizi oluşturun:- Depolanan öğeler üzerinde yineleme yapılabilmesini sağlamak için
Iterator<T>arayüzünü uygulayan birStorageIterator<T>sınıfı - Aşağıdaki yeteneklere sahip,
Iterable<T>sınıfını genişleten birStorage<T>sınıfı:- Öğeleri dahili olarak tutmak için özel (private) bir liste
- Yeni bir öğe depolamak için bir
add(T item)metodu - Verilen indeksteki öğeyi döndüren bir
getAt(int index)metodu - Depolanan öğelerin sayısını döndüren bir
countgetter'ı - Depolanan öğeler için bir
StorageIteratordöndüren biriteratorgetter'ı
- Depolanan öğeler üzerinde yineleme yapılabilmesini sağlamak için
main.dart: Depolama dosyanızı içe aktarın ve generic depolamayı farklı türlerle gösterin:- Bir
Storage<String>oluşturun ve üç şehir adı ekleyin:'Paris','Tokyo','Sydney' - Öğelerin sayısını yazdırın
- 1. indeksteki öğeyi yazdırın
- Her şehri kendi satırında yazdırmak için bir
for-indöngüsü kullanın - Boş bir satır yazdırın
- Bir
Storage<int>oluşturun ve dört sayı ekleyin:100,200,300,400 - 150'den büyük değerleri filtrelemek için
wheremetodunu kullanın, ardından sonuç listesini yazdırın
- Bir
Depolama sisteminiz, tam tür güvenliğini korurken herhangi bir türle sorunsuz çalışmalıdır. Iterable sınıfını genişlettiği için where, map ve fold gibi güçlü metotlara otomatik olarak erişim kazanır!
Beklenen çıktı:
Count: 3
Item at 1: Tokyo
Paris
Tokyo
Sydney
[200, 300, 400]Kendin dene
import 'storage.dart';
void main() {
// TODO: Şehirler için bir Storage<String> oluşturun
// Üç şehir ekleyin: 'Paris', 'Tokyo', 'Sydney'
// TODO: Öğe sayısını yazdırın (format: "Count: X")
// TODO: 1. indeksteki öğeyi yazdırın (format: "Item at 1: X")
// TODO: Her şehri kendi satırında yazdırmak için bir for-in döngüsü kullanın
// TODO: Boş bir satır yazdırın
print('');
// TODO: Sayılar için bir Storage<int> oluşturun
// Dört sayı ekleyin: 100, 200, 300, 400
// TODO: 150'den büyük değerleri filtrelemek için where metodunu kullanın
// Ardından toList() kullanarak sonuç listesini 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ı