Özet - Kullanıcı Profili Sistemi
Coddy'nin Dart Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası — ders 29 / 110.
Görev
KolayBu bölümde öğrendiğiniz tüm null güvenliği kavramlarını bir araya getiren eksiksiz bir kullanıcı profili sistemi oluşturalım. Gerekli bilgiler ile isteğe bağlı ayrıntıların bir karışımından oluşan kullanıcı hesaplarını yöneten bir sistem oluşturacaksınız.
Kodunuzu iki dosya halinde düzenleyeceksiniz:
user_profile.dart: Bir kullanıcı hesabını temsil eden birUserProfilesınıfı tanımlayın. Hangi bilgilerin temel (kullanıcı adı gibi) hangilerinin isteğe bağlı (biyografi veya telefon numarası gibi) olduğunu düşünün. Sınıfınız şunlara sahip olmalıdır:- Null olamaz bir
String username- her kullanıcının bir kullanıcı adı olmalıdır - Null olamaz bir
String email- her kullanıcının bir e-postası olmalıdır - Null olabilir bir
String? displayName- kullanıcılar farklı bir ad göstermeyi tercih edebilir - Null olabilir bir
String? bio- herkes biyografi yazmaz - Null olabilir bir
int? age- yaş isteğe bağlı kişisel bir bilgidir usernameveemailiçinrequiredanahtar kelimesini kullanan isimlendirilmiş parametreli bir yapıcı (constructor)- Eğer ayarlanmışsa görünen adı, aksi takdirde
??kullanarak kullanıcı adını döndüren birgetDisplayIdentity()metodu - Eğer biyografi varsa ve 20 karakterden uzunsa biyografinin ilk 20 karakterini ve ardından
...döndüren, 20 karakter veya daha kısaysa biyografinin tamamını döndüren veya biyografi yoksanulldöndüren birgetBioPreview()metodu (güvenli erişim için?.kullanın) - Yalnızca biyografi şu anda null ise
??=kullanarak biyografiyi'Hello, I am new here!'olarak ayarlayan birsetDefaultBio()metodu - Kullanıcının tam profilini görüntüleyen bir
printProfile()metodu
- Null olamaz bir
main.dart: Kullanıcı profili sınıfınızı içe aktarın ve null güvenliği özelliklerinin tüm kapsamını göstermek için birkaç kullanıcı oluşturun:- Kullanıcı adı
'alice_dev've e-postası'alice@code.com'olan bir kullanıcı oluşturun, ardından görünen adı'Alice', biyografiyi'Software developer passionate about clean code and testing've yaşı28olarak ayarlayın - Kullanıcı adı
'bob_builder've e-postası'bob@build.io'olan bir kullanıcı oluşturun, ardından yalnızca görünen adı'Bob'olarak ayarlayın - Kullanıcı adı
'charlie99've e-postası'charlie@mail.net'olan bir kullanıcı oluşturun (tüm isteğe bağlı alanları null olarak bırakın) - Her üç kullanıcıda da
setDefaultBio()metodunu çağırın - Sırasıyla her kullanıcı için
printProfile()metodunu çağırın, ardındanIdentity: [getDisplayIdentity()]yazdırın ve sonraBio preview: [getBioPreview()]yazdırın
- Kullanıcı adı
printProfile() metodu şu formatta yazdırmalıdır:
===== User Profile =====
Username: [username]
Email: [email]
Display Name: [displayName or "Not set"]
Bio: [bio or "No bio"]
Age: [age or "Not specified"]Alice'in biyografisinin zaten bir değeri olduğu için setDefaultBio() sonrasında nasıl değişmeden kaldığına, Charlie'ye ise varsayılan biyografinin nasıl atandığına dikkat edin. Ayrıca biyografi önizlemesinin Alice'in uzun biyografisini nasıl kısalttığını, ancak Charlie'nin daha kısa olan varsayılan biyografisini nasıl tam olarak gösterdiğini gözlemleyin.
Beklenen çıktı:
===== User Profile =====
Username: alice_dev
Email: alice@code.com
Display Name: Alice
Bio: Software developer passionate about clean code and testing
Age: 28
Identity: Alice
Bio preview: Software developer p...
===== User Profile =====
Username: bob_builder
Email: bob@build.io
Display Name: Bob
Bio: Hello, I am new here!
Age: Not specified
Identity: Bob
Bio preview: Hello, I am new here!
===== User Profile =====
Username: charlie99
Email: charlie@mail.net
Display Name: Not set
Bio: Hello, I am new here!
Age: Not specified
Identity: charlie99
Bio preview: Hello, I am new here!Kendin dene
import 'user_profile.dart';
void main() {
// TODO: 'alice@code.com' e-postasıyla 'alice_dev' kullanıcısını oluşturun
// displayName değerini 'Alice' olarak ayarlayın
// bio değerini 'Software developer passionate about clean code and testing' olarak ayarlayın
// age değerini 28 olarak ayarlayın
// TODO: 'bob@build.io' e-postasıyla 'bob_builder' kullanıcısını oluşturun
// Sadece displayName değerini 'Bob' olarak ayarlayın
// TODO: 'charlie@mail.net' e-postasıyla 'charlie99' kullanıcısını oluşturun
// Tüm isteğe bağlı alanları null olarak bırakın
// TODO: Her üç kullanıcıda da setDefaultBio() fonksiyonunu çağırın
// TODO: Sırasıyla her bir kullanıcı için (alice, bob, charlie):
// 1. printProfile() fonksiyonunu çağırın
// 2. "Identity: [getDisplayIdentity()]" yazdırın
// 3. "Bio preview: [getBioPreview()]" 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ı