Örnek ve Statik Değişkenler
Coddy'nin GDScript Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 9 / 65.
Sınıftaki normal bir var, bir örnek değişkenidir: her nesnenin kendine ait bir değeri vardır. Bir static var ise sınıfa aittir: tek bir değer vardır ve bu değer tüm nesneler tarafından paylaşılır.
# student.gd
class_name Student
extends RefCounted
static var school: String = "Godot High"
static var count: int = 0
var student_name: String
func _init(new_name: String) -> void:
student_name = new_name
count += 1var ada := Student.new("Ada")
var bo := Student.new("Bo")
print(Student.count) # 2
print(ada.student_name, " and ", bo.student_name) # Ada and Bo
Student.school = "Godot Academy"
print(ada.school) # Godot Academy
print(bo.school) # Godot AcademyNesneye gerek duymadan, Student.count örneğindeki gibi sınıf adını kullanarak statik bir değişkeni okuyun. Sınıfın içinde kendi adını kullanın: _init() içindeki count += 1, şimdiye kadar oluşturulan her öğrenciyi sayar.
Student.school değerini değiştirmek, bunu tüm öğrenciler için aynı anda değiştirir. Yalnızca bir tane school olduğu için ada.school = "Night School" da aynı şeyi yapar; sınıf adını yazmak bunu açıkça gösterir.
Bir const da aynı şekilde paylaşılır ancak asla değiştirilemez. Program çalışırken değişen paylaşılan veriler için, örneğin bir sayaç veya tüm nesnelerin uyguladığı bir ayar için static var kullanın.
Görev
Kolaybank_account.gd dosyasındaki BankAccount sınıfını tamamla:
2ile başlayan ve tüm hesaplar tarafından paylaşılan statik birintdeğişkeni olaninterest_percent0ile başlayan statik birintdeğişkeni olanaccount_count; kurucu, oluşturulan her yeni hesap için bu değişkene1eklerdescribe(), hesabınholdervebalancedeğerlerini ve paylaşılaninterest_percentdeğerini kullanarakHOLDER: $BALANCE at PERCENT%değerini döndürür
Sağlanan kod, kaç hesabın geleceğini ve her hesap için bir holder balance satırını, ardından da yeni bir faiz oranını okur. BankAccount.account_count değerini ve her hesabı yazdırır, BankAccount.interest_percent değerini yeni orana ayarlar ve ardından her hesabı tekrar yazdırır. Alice 1000, Bob 2000 ve 3 faiz oranı için şu çıktıyı verir:
Accounts opened: 2
Alice: $1000 at 2%
Bob: $2000 at 2%
After the rate change:
Alice: $1000 at 3%
Bob: $2000 at 3%Kodunu bank_account.gd dosyasına yaz. main.gd, sağlanan girdi/çıktı kodunu içerir ve düzenlenemez.
Kendin dene
extends Node
func _ready():
# Sağlanan girdi/çıktı kodu: olduğu gibi bırakın
var accounts: Array[BankAccount] = []
var count := int(OS.read_string_from_stdin())
for i in count:
var parts := OS.read_string_from_stdin().split(" ")
accounts.append(BankAccount.new(parts[0], int(parts[1])))
print("Accounts opened: %d" % BankAccount.account_count)
for account in accounts:
print(account.describe())
BankAccount.interest_percent = int(OS.read_string_from_stdin())
print("After the rate change:")
for account in accounts:
print(account.describe())
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
1Nesne Yönelimli Programlamanın Temelleri
Harici DosyalarNesne Yönelimli Programlamaya GirişSınıflar ve Nesnelerself Anahtar KelimesiMetotlarÖzelliklerKurucu (_init)Tekrar - Basit Hesap Makinesi4Çok Biçimlilik
Metot Ezme Konusuna Yeniden BakışÖrdek TiplemesiSoyut Sınıflar ve MetotlarArayüz TasarımıÖzet - Şekil Hesaplayıcı7Sinyaller
Sinyal Nedir?Tanımlama ve Sinyal GöndermeSinyallere BağlanmaArgümanlı SinyallerTekrar - Sağlık Sistemi10Tasarım Kalıpları 2. Bölüm
Komut KalıbıAdaptör KalıbıDekoratör KalıbıŞablon Metot KalıbıDurum KalıbıBileşik Kalıp2Sınıf Özellikleri
Örnek ve Statik DeğişkenlerStatik FonksiyonlarÖzellik AyarlayıcılarıÖzellik AlıcılarıGeleneksel Olarak ÖzelTekrar - Banka Hesabı Yöneticisi5Kapsülleme
Public ve Private ÜyelerSetter'larla DoğrulamaBilgi GizlemeSalt Okunur ÖzelliklerTekrar - Öğrenci Kayıt SistemiKendi başına pratik yap: Online GDScript derleyicisi