Özet - Çalışan Hiyerarşisi
Coddy'nin Dart Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 42 / 110.
Görev
KolayBu bölümdeki tüm kalıtım kavramlarını bir araya getiren eksiksiz bir çalışan hiyerarşisi sistemi oluşturalım. Bir temel çalışan sınıfı oluşturacak ve bunu, her biri kendine özgü davranışlara sahip özel rollerle genişleteceksin.
Kodunu iki dosyada düzenleyeceksin:
employee.dart: Çalışan hiyerarşini burada tanımla:Employee,String namevedouble salaryözelliklerine sahip birint idtemel sınıfı. Bir oluşturucu vegetDetails()döndüren'[name] (ID: [id]) - Salary: $[salary]'metodunu ekleManagersınıfını genişleten ve birEmployeeözelliği ekleyen birint teamSizesınıfı. Miras alınan alanlar için super parametrelerini kullan. Üst sınıfın ayrıntılarının ardındangetDetails()döndürecek şekilde', Team: [teamSize] members'metodunu geçersiz kılDevelopersınıfını genişleten ve birEmployeeözelliği ekleyen birString languagesınıfı. Üst sınıfın ayrıntılarının ardındangetDetails()döndürecek şekilde', Specializes in [language]'metodunu geçersiz kılTeamLeadsınıfını genişleten ve birDeveloperözelliği ekleyen birint projectCountsınıfı.getDetails()sürümünü temel alarakDeveloperekleyecek şekilde', Leading [projectCount] projects'metodunu geçersiz kıl
main.dart: Çalışan dosyanı içe aktar ve her çalışan türü için örnekler oluştur:Employeeadı,'Alice'maaşı ve50000.0kimliğiyle bir101oluşturManageradı,'Bob'maaşı,75000.0kimliği ve102teamSize değeriyle bir8oluşturDeveloperadı,'Carol'maaşı,65000.0kimliği ve103language değeriyle bir'Dart'oluşturTeamLeadadı,'David'maaşı,80000.0kimliği,104language değeri ve'Python'projectCount değeriyle bir3oluştur- Her çalışan üzerinde
getDetails()çağrısının sonucunu, her satıra bir tane gelecek şekilde yazdır
TeamLead sınıfının çok düzeyli kalıtımı nasıl gösterdiğine dikkat et: Developer sınıfını, o da Employee sınıfını genişletiyor. Her düzey, super kullanarak üst sınıflardaki bilgileri korurken kendi ayrıntılarını ekliyor.
Beklenen çıktı:
Alice (ID: 101) - Salary: $50000.0
Bob (ID: 102) - Salary: $75000.0, Team: 8 members
Carol (ID: 103) - Salary: $65000.0, Specializes in Dart
David (ID: 104) - Salary: $80000.0, Specializes in Python, Leading 3 projectsKendin dene
import 'employee.dart';
void main() {
// TODO: 'Alice' isimli, 50000.0 maaşlı ve id'si 101 olan bir Employee oluşturun
// TODO: 'Bob' isimli, 75000.0 maaşlı, id'si 102 ve teamSize'ı 8 olan bir Manager oluşturun
// TODO: 'Carol' isimli, 65000.0 maaşlı, id'si 103 ve language'i 'Dart' olan bir Developer oluşturun
// TODO: 'David' isimli, 80000.0 maaşlı, id'si 104, language'i 'Python' ve projectCount'u 3 olan bir TeamLead oluşturun
// TODO: Her bir çalışan için her satıra bir tane gelecek şekilde getDetails() çıktısını yazdırın
}
Nesne Yönelimli Programlama bölümündeki tüm dersler
1Nesne Tabanlı Programlamanın Temelleri
Harici DosyalarKütüphaneler ve İçe AktarmalarOOP'ye GirişSınıflar ve Nesnelerthis Anahtar SözcüğüMetotlarÖrnek DeğişkenleriYapıcıların TemelleriTekrar - Basit Hesap Makinesi4Null Güvenliği
Null Güvenliğine GirişNullable ve Non-Nullable? ve ! OperatörleriLate Anahtar Sözcüğü ve Null GüvenliğiNull-Aware OperatörlerSınıflarda Null GüvenliğiTekrar - Kullanıcı Profili Sistemi7Soyut Sınıflar ve Arayüzler
Soyut SınıflarSoyut MetotlarDart'ta ArayüzlerÖrtük ArayüzlerUygulamak ve GenişletmekBirden Çok ArayüzTekrar - Şekil Hesaplayıcı10Koleksiyonlar ve Generics
List, Set, Map Genel BakışTür Güvenli KoleksiyonlarGeneric SınıflarGeneric MetotlarGeneric KısıtlamalarIterable ve IteratorTekrar - Generic Depolama2Dart'ta Yapıcılar
Varsayılan YapıcıAdlandırılmış YapıcılarBaşlatıcı ListeleriSabit YapıcılarFabrika YapıcılarıYönlendiren YapıcılarÖzet - Şekil Oluşturucu5Kapsülleme
Public ve Private Üyeler_ Ön Ek KuralıKütüphane Düzeyinde GizlilikGetter ve Setter DerinliğiBilgi GizlemeTekrar - Öğrenci Kayıtları8Mixin'ler
Mixin'lere GirişMixin OluşturmaBirden Çok Mixin KullanımıMixin'lerde on Anahtar SözcüğüMixin ve Kalıtım KarşılaştırmasıMixin ve Arayüz KarşılaştırmasıÖzet - Hayvan Sistemi11Özel Metotlar
toString() Geçersiz KılmahashCode & == Geçersiz KılmaComparable Arayüzücall() MetodunoSuchMethod Geçersiz KılmaÖzet - Özel Koleksiyon14Tasarım Desenleri Bölüm 1
Tasarım Desenlerine GirişSingleton DeseniFactory DeseniObserver DeseniStrategy Deseni3Sınıf Özellikleri
Örnek ve Static ÜyelerFinal ve Const AlanlarLate DeğişkenlerStatic Metotlar ve AlanlarGetter ve Setter'larÖzet - Banka Hesabı Yöneticisi6Kalıtım
Temel Kalıtımsuper Anahtar SözcüğüMetot Geçersiz Kılma@override Açıklamasıfinal Sınıf Anahtar SözcüğüKurucular ve KalıtımÖzet - Çalışan Hiyerarşisi9Çok Biçimlilik
Çok Biçimlilik TemelleriArayüzler Yoluyla Çok BiçimlilikÇalışma Zamanı Tür Denetimiis ve as OperatörleriCovariant Anahtar KelimesiTekrar - Ödeme İşlemcisi12Asenkron OOP
Future'ler ve async/awaitStream TemelleriStream DenetleyicileriAsenkron YapıcılarSınıf Metotlarında AsenkronlukÖzet - Veri Getirici15Tasarım Desenleri Bölüm 2
Komut DeseniAdaptör DeseniDekoratör DeseniŞablon Metot DeseniDurum DeseniBileşik DesenDepo DeseniKendi başına pratik yap: Online Dart derleyicisi