Menu
Coddy logo textTech

_ Ön Ek Kuralı

Coddy'nin Dart Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 31 / 110.

Alt çizgi ön eki _, Dart'ta üyeleri özel olarak işaretlemenin yoludur. private gibi anahtar kelimeler kullanan dillerin aksine Dart, görünürlüğü denetlemek için bu adlandırma kuralına dayanır.

Alt çizgiyi hem alanlara hem de metotlara uygulayabilirsiniz:

class Counter {
  int _count = 0;        // Gizli alan
  
  void _increment() {    // Gizli metot
    _count++;
  }
  
  void increase() {      // Genel metot
    _increment();
    print('Count: $_count');
  }
}

Alt çizgi; değişkenler, metotlar, getter'lar, setter'lar ve hatta sınıf adları gibi her türlü tanımlayıcı için çalışır. _Helper adlı bir sınıf, kendi kütüphanesine özel olacaktır.

class Person {
  String _name;          // Gizli
  int _age;              // Gizli
  
  Person(this._name, this._age);
  
  String get name => _name;           // Genel getter
  void _validateAge(int age) { }      // Gizli metot
}

Aynı sınıf içinde, özel üyelere normal bir şekilde erişirsiniz. Kısıtlama yalnızca kütüphane dışındaki kodlar için geçerlidir. Bu kural, kodu okurken hangi üyelerin yalnızca dahili kullanım için olduğunu anında netleştirir; _ ile başlayan her şey bir uygulama detayıdır.

challenge icon

Görev

Kolay

Alt çizgi önekinin dahili uygulama ayrıntılarını nasıl gizli tutarken temiz bir genel arayüz sunduğunu gösteren bir oyun için puan takip sistemi oluşturalım.

kodunuzu iki dosyaya ayıracaksınız:

  • score_tracker.dart: Oyuncunun puanını uygun kapsülleme ile yöneten bir ScoreTracker sınıfı oluşturun. Sınıf şunlara sahip olmalıdır:
    • Herkesin kimin oynadığını görebilmesi için genel bir String playerName
    • int _score ile başlatılan özel bir 0 - ham puan korunmalıdır
    • int _bonusMultiplier ile başlatılan özel bir 1 - bu, dahili bir oyun mekaniğidir
    • Oyuncu adını alan bir yapıcı
    • Özel score değerini döndüren genel bir _score getter'ı
    • _applyBonus(int points) değerini döndüren özel bir points * _bonusMultiplier metodu
    • Gerçekte eklenen puanı hesaplamak için dahili olarak addPoints(int points) kullanan, _applyBonus değerini güncelleyen ve _score yazdıran genel bir Added [calculated] points! metodu
    • activateDoubleBonus() değerini _bonusMultiplier olarak ayarlayan ve 2 yazdıran genel bir Double bonus activated! metodu
    • Oyuncunun mevcut durumunu gösteren genel bir displayStats() metodu
  • main.dart: Puan takip sisteminizi içe aktarın ve bir oyun oturumunu simüle edin:
    • ScoreTracker oyuncusu için bir 'Alex' oluşturun
    • displayStats() metodunu çağırın
    • 10 puan ekleyin
    • 25 puan ekleyin
    • Çift bonusu etkinleştirin
    • 15 puan ekleyin (bu puan iki katına çıkarılmalıdır)
    • displayStats() metodunu çağırın
    • Genel getter'ı kullanarak Final score: [score] yazdırın

displayStats() metodu şu biçimde yazdırmalıdır:

=== Player Stats ===
Player: [playerName]
Current Score: [_score]

Özel _applyBonus metodunun ve _bonusMultiplier alanının bonus hesaplamasını dahili olarak nasıl yönettiğine dikkat edin. Harici kod yalnızca genel metotları görür ve çarpan sistemi hakkında hiçbir şey bilmez - bu, alt çizgi kuralının arkasında gizlenen bir uygulama ayrıntısıdır.

Beklenen çıktı:

=== Player Stats ===
Player: Alex
Current Score: 0
Added 10 points!
Added 25 points!
Double bonus activated!
Added 30 points!
=== Player Stats ===
Player: Alex
Current Score: 65
Final score: 65

Kendin dene

import 'score_tracker.dart';

void main() {
  // TODO: 'Alex' oyuncusu için bir ScoreTracker oluşturun
  
  // TODO: displayStats() fonksiyonunu çağırın
  
  // TODO: 10 puan ekleyin
  
  // TODO: 25 puan ekleyin
  
  // TODO: İki kat bonusu (double bonus) etkinleştirin
  
  // TODO: 15 puan ekleyin (bu ikiye katlanmalı)
  
  // TODO: displayStats() fonksiyonunu çağırın
  
  // TODO: Genel alıcıyı (public getter) kullanarak 'Final score: [score]' yazdırın
}
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