Menu
Coddy logo textTech

Örnek ve Static Ü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 yöntemler) tek tek nesnelere ya da sınıfın kendisine ait olabilir. Bu ayrımı anlamak, kodunuzu etkili bir şekilde düzenlemenin temelidir.

Örnek üyeler oluşturduğunuz her nesneye aittir. Her nesne, örnek değişkenlerinin kendi kopyasını alır ve örnek yöntemleri o belirli nesnenin verileri üzerinde çalışır:

class Dog {
  String name;  // Örnek değişken
  
  Dog(this.name);
  
  void bark() {  // Örnek metot
    print('$name says woof!');
  }
}

Dog dog1 = Dog('Buddy');
Dog dog2 = Dog('Max');

dog1.bark();  // Buddy woof diyor!
dog2.bark();  // Max woof diyor!

Her Dog nesnesinin kendine ait bir name değeri vardır. Bir köpeğin adını değiştirmek diğerini etkilemez.

Statik üyeler belirli bir nesneye değil, sınıfın kendisine aittir. Tüm örnekler arasında paylaşılır ve sınıf adı kullanılarak erişilir:

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);  // 2

totalDogs değişkeni paylaşılır; kaç tane Dog nesnesi olursa olsun yalnızca bir kopyası vardır. Bu değişkene bir örnek üzerinden değil, sınıf adı olan Dog.totalDogs üzerinden erişirsin.

challenge icon

Görev

Kolay

Hem bireysel sergi ziyaretlerini hem de genel müze istatistiklerini izleyen bir ziyaretçi sayacı sistemi oluşturalım.

Kodunu iki dosyada düzenleyeceksin:

  • exhibit.dart: Bir müze sergisini temsil eden bir Exhibit sınıfı tanımla. Her sergide şunlar bulunmalıdır:
    • Serginin adı için bir örnek değişkeni olan name (String)
    • Bu sergiyi kaç kişinin ziyaret ettiğini takip etmek için visitorCount ile başlayan bir örnek değişkeni olan 0 (int)
    • Tüm sergilerdeki toplam ziyaretleri takip etmek için totalVisitors ile başlayan bir statik değişken olan 0 (int)
    • Sergi adını alan bir kurucu
    • Hem serginin recordVisit() değerini hem de sınıfın visitorCount değerini artıran bir totalVisitors yöntemi
    • Serginin bilgilerini yazdıran bir displayStats() yöntemi
  • main.dart: Sergi sınıfını içe aktar ve iki sergi oluştur:
    • Bir 'Dinosaur Bones' sergisi
    • Bir 'Ancient Egypt' sergisi
    Dinosaur Bones sergisine 3 ziyaret, ardından Ancient Egypt sergisine 2 ziyaret kaydet. Tüm ziyaretlerden sonra, oluşturulma sırasına göre her sergide displayStats() yöntemini çağır ve ardından tüm sergilerdeki toplam ziyaretçi sayısını yazdır.

displayStats() yöntemi tam olarak şu biçimde yazdırmalıdır:

[name]: [visitorCount] visitors

Toplam ziyaretçi satırı için şunu yazdır:

Total museum visitors: [totalVisitors]

Statik değişkene sınıf adını kullanarak eriş: Exhibit.totalVisitors.

Beklenen çıktı:

Dinosaur Bones: 3 visitors
Ancient Egypt: 2 visitors
Total museum visitors: 5

Kendin dene

import 'exhibit.dart';

void main() {
  // TODO: Create a 'Dinosaur Bones' exhibit
  
  // TODO: Create an 'Ancient Egypt' exhibit
  
  // TODO: Record 3 visits to the Dinosaur Bones exhibit
  
  // TODO: Record 2 visits to the Ancient Egypt exhibit
  
  // TODO: Her exhibit üzerinde sırayla displayStats() çağır
  
  // TODO: Print total museum visitors using Exhibit.totalVisitors
  // Format: Total museum visitors: [totalVisitors]
}
quiz iconKendini test et

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

Kendi başına pratik yap: Online Dart derleyicisi