Instance ve Statik Üyeler
Coddy'nin Dart Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası — ders 17 / 110.
Dart sınıflarında, üyeler (değişkenler ve metotlar) ya bireysel nesnelere ya da sınıfın kendisine ait olabilir. Bu ayrımı anlamak, kodunuzu etkili bir şekilde düzenlemek için temeldir.
Örnek üyeleri oluşturduğunuz her nesneye aittir. Her nesne, örnek değişkenlerinin kendi kopyasını alır ve örnek metotları o belirli nesnenin verileri üzerinde çalışır:
class Dog {
String name; // Örnek değişkeni
Dog(this.name);
void bark() { // Örnek metodu
print('$name says woof!');
}
}
Dog dog1 = Dog('Buddy');
Dog dog2 = Dog('Max');
dog1.bark(); // Buddy says woof!
dog2.bark(); // Max says woof!Her Dog nesnesinin kendine ait bir name alanı vardır. Bir köpeğin ismini değiştirmek diğerini etkilemez.
Statik üyeler herhangi bir nesneye değil, sınıfın kendisine aittir. Tüm örnekler arasında paylaşılırlar ve sınıf adı kullanılarak erişilirler:
class Dog {
String name;
static int totalDogs = 0; // Statik değişken
Dog(this.name) {
totalDogs++;
}
}
Dog dog1 = Dog('Buddy');
Dog dog2 = Dog('Max');
print(Dog.totalDogs); // 2totalDogs değişkeni paylaşılır; kaç tane Dog nesnesi mevcut olursa olsun yalnızca tek bir kopya vardır. Ona bir örnek üzerinden değil, Dog.totalDogs sınıf adı aracılığıyla erişirsiniz.
Görev
KolayBir müze için hem bireysel sergi ziyaretlerini hem de genel müze istatistiklerini takip eden bir ziyaretçi sayacı sistemi kuralım.
Kodunuzu iki dosya halinde düzenleyeceksiniz:
exhibit.dart: Bir müze sergisini temsil eden birExhibitsınıfı tanımlayın. Her sergi şunlara sahip olmalıdır:- Serginin adı için bir örnek değişken
name(String) - Bu belirli sergiyi kaç kişinin ziyaret ettiğini takip etmek için
0'dan başlayan bir örnek değişkenvisitorCount(int) - Tüm sergilerdeki toplam ziyaretleri takip etmek için
0'dan başlayan bir statik değişkentotalVisitors(int) - Sergi adını alan bir yapıcı (constructor)
- Hem serginin
visitorCountdeğerini hem de sınıfıntotalVisitorsdeğerini artıran birrecordVisit()metodu - Serginin bilgilerini yazdıran bir
displayStats()metodu
- Serginin adı için bir örnek değişken
main.dart: Sergi sınıfınızı içe aktarın ve iki sergi oluşturun:- Bir
'Dinosaur Bones'sergisi - Bir
'Ancient Egypt'sergisi
displayStats()metodunu çağırın, ardından tüm sergilerdeki toplam ziyaretçi sayısını yazdırın.- Bir
displayStats() metodu tam olarak şu formatta yazdırmalıdır:
[name]: [visitorCount] visitorsToplam ziyaretçi satırı için şunu yazdırın:
Total museum visitors: [totalVisitors]Statik değişkene sınıf adını kullanarak erişin: Exhibit.totalVisitors.
Beklenen çıktı:
Dinosaur Bones: 3 visitors
Ancient Egypt: 2 visitors
Total museum visitors: 5Kopya kağıdı
Dart'taki sınıf üyeleri ya örnek üyeleri (bireysel nesnelere ait) ya da statik üyeler (sınıfın kendisine ait) olabilir.
Örnek üyeleri her nesneye özgüdür. Her nesnenin kendi örnek değişken kopyası vardır:
class Dog {
String name; // Örnek değişken
Dog(this.name);
void bark() { // Örnek metot
print('$name says woof!');
}
}Statik üyeler tüm örnekler arasında paylaşılır ve static anahtar kelimesi ile sınıf adı kullanılarak erişilir:
class Dog {
String name;
static int totalDogs = 0; // Statik değişken
Dog(this.name) {
totalDogs++;
}
}
// Statik üyelere sınıf adı üzerinden erişin
print(Dog.totalDogs); // 2Statik değişkenler, kaç nesne oluşturulduğuna bakılmaksızın paylaşılan tek bir değeri korur.
Kendin dene
import 'exhibit.dart';
void main() {
// TODO: Bir 'Dinosaur Bones' sergisi oluşturun
// TODO: Bir 'Ancient Egypt' sergisi oluşturun
// TODO: Dinosaur Bones sergisi için 3 ziyaret kaydedin
// TODO: Ancient Egypt sergisi için 2 ziyaret kaydedin
// TODO: Her sergi üzerinde sırasıyla displayStats() fonksiyonunu çağırın
// TODO: Exhibit.totalVisitors kullanarak toplam müze ziyaretçi sayısını yazdırın
// Format: Total museum visitors: [totalVisitors]
}
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
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ı