Özet - Hayvan Sistemi
Coddy'nin Dart Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası — ders 56 / 110.
Görev
KolayMixinler hakkında öğrendiğiniz her şeyi bir araya getiren eksiksiz bir hayvan sistemi oluşturalım! Bir temel Animal sınıfı, on anahtar kelimesini kullanan davranış mixinleri ve bu yetenekleri farklı şekillerde birleştiren belirli hayvan sınıfları oluşturacaksınız.
Kodunuzu üç dosyada organize edeceksiniz:
animal.dart: Tüm hayvanların miras alacağı temel sınıfınızı tanımlayın:- Bir
String nameözelliğine ve bir yapıcıya (constructor) sahip birAnimalsınıfı [name] is an animalçıktısını veren birdescribe()metodu
- Bir
behaviors.dart: Hayvan dosyasını içe aktarın ve her birionanahtar kelimesini kullanarakAnimalsınıfı ile sınırlandırılmış üç davranış mixini oluşturun:[name] is swimmingçıktısını verenswim()metoduna sahip birSwimmingmixini[name] is flyingçıktısını verenfly()metoduna sahip birFlyingmixini[name] is walkingçıktısını verenwalk()metoduna sahip birWalkingmixini
main.dart: Her iki dosyayı da içe aktarın ve kalıtımı farklı mixin kombinasyonlarıyla birleştiren üç hayvan sınıfı oluşturun:Animalsınıfını genişleten ve her üç mixini de (Swimming, Flying, Walking) kullanan birDucksınıfıAnimalsınıfını genişleten ve yalnızcaSwimmingmixinini kullanan birFishsınıfıAnimalsınıfını genişleten veFlyingileWalkingmixinlerini kullanan birBirdsınıfı
'Donald'adında birDuckoluşturun,describe(), ardındanswim(),fly()vewalk()metodlarını çağırın- Boş bir satır yazdırın
'Nemo'adında birFisholuşturun,describe(), ardındanswim()metodunu çağırın- Boş bir satır yazdırın
'Tweety'adında birBirdoluşturun,describe(), ardındanfly()vewalk()metodlarını çağırın
Her mixin, on Animal kısıtlaması sayesinde name özelliğine erişebilir; bu da esnek davranış kompozisyonu sağlarken tip güvenliğini (type safety) garanti eder.
Beklenen çıktı:
Donald is an animal
Donald is swimming
Donald is flying
Donald is walking
Nemo is an animal
Nemo is swimming
Tweety is an animal
Tweety is flying
Tweety is walkingKendin dene
import 'animal.dart';
import 'behaviors.dart';
// TODO: Animal sınıfını genişleten ve Swimming, Flying, Walking mixin'lerini kullanan Duck sınıfını oluşturun
class Duck {
// TODO: Duck sınıfını uygulayın
}
// TODO: Animal sınıfını genişleten ve yalnızca Swimming mixin'ini kullanan Fish sınıfını oluşturun
class Fish {
// TODO: Fish sınıfını uygulayın
}
// TODO: Animal sınıfını genişleten ve Flying ile Walking mixin'lerini kullanan Bird sınıfını oluşturun
class Bird {
// TODO: Bird sınıfını uygulayın
}
void main() {
// TODO: 'Donald' adında bir Duck oluşturun
// describe(), swim(), fly(), walk() metodlarını çağırın
// TODO: Boş bir satır yazdırın
// TODO: 'Nemo' adında bir Fish oluşturun
// describe(), swim() metodlarını çağırın
// TODO: Boş bir satır yazdırın
// TODO: 'Tweety' adında bir Bird oluşturun
// describe(), fly(), walk() metodlarını çağı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ı