Özet - Özel Koleksiyon
Coddy'nin Dart Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası — ders 75 / 110.
Görev
KolayOyuncu puanlarını takip eden ve özel metotların şık ve profesyonel bir sınıf oluşturmak için nasıl birlikte çalıştığını gösteren bir ScoreBoard sistemi kuralım!
Kodunuzu iki dosya halinde düzenleyeceksiniz:
score_board.dart: Oyun puanlarını yönetmek için birlikte çalışan birPlayersınıfı ve birScoreBoardsınıfı oluşturun.Playersınıfınız birname(String) vescore(int) değerine sahip olmalıdır. Şunları yapması gerekir:- Oyuncuların puana göre azalan düzende (en yüksek puan en başta) sıralanabilmesi için
Comparable<Player>arayüzünü uygulayın - Aynı isme sahip iki oyuncunun (puanlarına bakılmaksızın) eşit kabul edilmesi için
==vehashCodemetotlarını geçersiz kılın (override) toString()metodunu[name]: [score] pointsdöndürecek şekilde geçersiz kılın
ScoreBoardsınıfınız bir oyuncu listesi tutmalı ve şunları sağlamalıdır:- Bir oyuncuyu yalnızca zaten mevcut değilse ekleyen bir
addPlayer(Player player)metodu (eşitlik uygulamanızı kullanın!) - Hiçbir argüman almayan ve oyuncu listesinin sıralanmış bir kopyasını (puana göre, en yüksekten en düşüğe) döndüren bir
call()metodu - Tüm oyuncuları (sıralanmamış olarak), her satıra bir tane gelecek şekilde ve ilk satırda
ScoreBoard:başlığıyla görüntülemek içintoString()metodunu geçersiz kılın
- Oyuncuların puana göre azalan düzende (en yüksek puan en başta) sıralanabilmesi için
main.dart: Skor tablosu dosyanızı içe aktarın ve tüm bu özel metotların birlikte nasıl çalıştığını gösterin:- Bir
ScoreBoardoluşturun - Şu oyuncuları ekleyin:
150puanlaAlice,200puanlaBob,175puanlaCharlie Alice'i999puanla tekrar eklemeyi deneyin (kopya olduğu için reddedilmelidir)- Skor tablosunu
toString()metodunu kullanarak yazdırın - Boş bir satır yazdırın
Rankings:yazdırın- Sıralanmış sıralamaları almak için skor tablosunu bir fonksiyon gibi çağırın, ardından her oyuncuyu yazdırın
- Bir
Bu meydan okuma; görüntüleme için toString(), kopya tespiti için == ve hashCode, sıralama için compareTo() ve temiz bir çağrılabilir arayüz için call() metotlarını bir araya getiriyor!
Beklenen çıktı:
ScoreBoard:
Alice: 150 points
Bob: 200 points
Charlie: 175 points
Rankings:
Bob: 200 points
Charlie: 175 points
Alice: 150 pointsKendin dene
import 'score_board.dart';
void main() {
// YAPILACAK: Bir ScoreBoard oluşturun
// YAPILACAK: Oyuncuları ekleyin: Alice (150), Bob (200), Charlie (175)
// YAPILACAK: Alice'i 999 puanla tekrar eklemeyi deneyin (kopya olduğu için reddedilmelidir)
// YAPILACAK: toString() metodunu kullanarak skor tablosunu yazdırın
// YAPILACAK: Boş bir satır yazdırın
// YAPILACAK: "Rankings:" yazdırın
// YAPILACAK: Sıralanmış sıralamaları almak için skor tablosunu bir fonksiyon gibi çağırın, ardından her oyuncuyu 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ı