Tekrar - 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ğin tüm null safety kavramlarını bir araya getiren eksiksiz bir kullanıcı profil sistemi oluşturalım. Gerekli bilgileri ve isteğe bağlı ayrıntıları birlikte yöneten bir sistem oluşturacaksın.
Kodunu iki dosyada düzenleyeceksin:
user_profile.dart: Bir kullanıcı hesabını temsil edenUserProfilesınıfını tanımla. Hangi bilgilerin (kullanıcı adı gibi) gerekli, hangilerinin (biyografi veya telefon numarası gibi) isteğe bağlı olduğunu düşün. Sınıfında şunlar bulunmalı:- Null kabul etmeyen bir
String username- her kullanıcının bir kullanıcı adı olmalı - Null kabul etmeyen bir
String email- her kullanıcının bir e-posta adresi olmalı - Null kabul edebilen bir
String? displayName- kullanıcılar farklı bir ad göstermeyi tercih edebilir - Null kabul edebilen bir
String? bio- herkes biyografi yazmaz - Null kabul edebilen bir
int? age- yaş, isteğe bağlı kişisel bir bilgidir requiredveusernameiçinemailkullanarak adlandırılmış parametrelere sahip bir oluşturucu- Ayarlanmışsa görünen adı, aksi takdirde
getDisplayIdentity()kullanarak kullanıcı adını döndüren bir??yöntemi - Biyografi varsa ve 20 karakterden uzunsa biyografinin ilk 20 karakterini ve ardından
getBioPreview()ifadesini, 20 karakter veya daha kısaysa biyografinin tamamını, biyografi yoksa...döndüren birnullyöntemi (güvenli erişim için?.kullan) - Yalnızca biyografi şu anda null ise
setDefaultBio()kullanarak biyografiyi'Hello, I am new here!'değerine ayarlayan bir??=yöntemi - Kullanıcının eksiksiz profilini görüntüleyen bir
printProfile()yöntemi
- Null kabul etmeyen bir
main.dart: Kullanıcı profil sınıfını içe aktar ve null safety özelliklerinin tüm kapsamını göstermek için birkaç kullanıcı oluştur:- Kullanıcı adı
'alice_dev've e-posta adresi'alice@code.com'olan bir kullanıcı oluştur; ardından görünen adı'Alice', biyografiyi'Software developer passionate about clean code and testing've yaşı28olarak ayarla - Kullanıcı adı
'bob_builder've e-posta adresi'bob@build.io'olan bir kullanıcı oluştur; ardından yalnızca görünen adı'Bob'olarak ayarla - Kullanıcı adı
'charlie99've e-posta adresi'charlie@mail.net'olan bir kullanıcı oluştur (isteğe bağlı tüm alanları null bırak) - Üç kullanıcının tümünde
setDefaultBio()yöntemini çağır - Her kullanıcı için sırasıyla
printProfile()yöntemini çağır, ardındanIdentity: [getDisplayIdentity()]yazdır ve sonraBio preview: [getBioPreview()]yazdır
- Kullanıcı adı
printProfile() yöntemi şu biçimde yazdırmalı:
===== User Profile =====
Username: [username]
Email: [email]
Display Name: [displayName or "Not set"]
Bio: [bio or "No bio"]
Age: [age or "Not specified"]setDefaultBio() çağrıldıktan sonra Alice'in biyografisinin, zaten bir değere sahip olduğu için değişmeden kaldığına dikkat et. Buna karşılık Charlie'ye varsayılan biyografi atanır. Ayrıca biyografi ön izlemesinin Alice'in daha uzun biyografisini kısalttığını, ancak Charlie'nin daha kısa varsayılan biyografisini tamamen gösterdiğini gözlemle.
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
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