Ö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 skorlarını takip eden ve özel metotların birlikte nasıl çalışarak düzenli, profesyonel bir sınıf oluşturduğunu gösteren bir ScoreBoard sistemi oluşturalım!
Kodunuzu iki dosyada düzenleyeceksiniz:
score_board.dart: Oyun skorlarını birlikte yönetmek için birPlayersınıfı ve birScoreBoardsınıfı oluşturun.Playersınıfınızda birname(String) ve birscore(int) bulunmalıdır. Şunları yapması gerekir:- Oyuncuların skora göre azalan düzende (en yüksek skor önce) sıralanabilmesi için
Comparable<Player>uygulamak - Aynı ada sahip iki oyuncunun (skorları ne olursa olsun) eşit kabul edilmesi için
==vehashCodemetotlarını geçersiz kılmak toString()döndürmesi için[name]: [score] pointsmetodunu geçersiz kılmak
ScoreBoardsınıfınız bir oyuncu listesi saklamalı ve şunları sağlamalıdır:- Bir oyuncuyu yalnızca daha önce mevcut değilse ekleyen (eşitlik uygulamanızı kullanın!) bir
addPlayer(Player player)metodu - Hiçbir bağımsız değişken almayan ve oyuncu listesinin skorlarına göre sıralanmış bir kopyasını döndüren (en yüksek skor önce) bir
call()metodu - Tüm oyuncuları (sıralanmamış şekilde), her satırda bir oyuncu olacak biçimde ve ilk satırda
toString()başlığıyla görüntülemek içinScoreBoard:metodunu geçersiz kılmak
- Oyuncuların skora göre azalan düzende (en yüksek skor önce) 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:
Aliceiçin150,Bobiçin200,Charlieiçin175 Aliceoyuncusunu999skoruyla tekrar eklemeyi deneyin (yinelenen kayıt olduğu için reddedilmelidir)toString()metodunu kullanarak skor tablosunu yazdırın- Boş bir satır yazdırın
Rankings:yazdırın- Sıralanmış derecelendirmeleri almak için skor tablosunu bir işlev gibi çağırın, ardından her oyuncuyu yazdırın
- Bir
Bu görev; görüntüleme için toString(), yinelenen kayıtları tespit etmek için == ve hashCode, sıralama için compareTo() ve temiz bir çağrılabilir arayüz için call() metotlarını bir araya getirir!
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
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