Özellik Alıcıları
Coddy'nin GDScript Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 12 / 65.
Bir get: bloğu, yani özelliğin getter'ı, özellik her okunduğunda çalışır ve döndürdüğü değer, okuyanın aldığı değerdir. Diğer özelliklerden hesaplanan bir değer için kullanın:
# rectangle.gd
var width: int = 4
var height: int = 3
var area: int:
get:
return width * heightvar r := Rectangle.new()
print(r.area) # 12
r.width = 10
print(r.area) # 30r.area bir değişken gibi, parantez olmadan okunur; ancak her okunduğunda yeniden hesaplanır, böylece her zaman mevcut genişlik ve yükseklikle eşleşir.
Bir özelliğin her iki bloğu da olabilir. Burada fahrenheit yalnızca dönüştürme yapar: okunması celsius değerini dönüştürür; değer atandığında ise tekrar dönüştürür ve sonucu celsius içinde saklar:
# temperature.gd
var celsius: float = 0.0
var fahrenheit: float:
get:
return celsius * 9 / 5 + 32
set(value):
celsius = (value - 32) * 5 / 9t.celsius = 25.0
print(t.fahrenheit) # 77.0
t.fahrenheit = 98.6
print(t.celsius) # 37.0Yalnızca get: içeren bir özellik, geleneksel olarak salt okunurdur. Ona değer atamak hata değildir, ancak getter atanan değeri yok sayar: r.area = 100 işleminden sonra r.area yine 30 döndürür.
Görev
Kolaytemperature.gd dosyasındaki Temperature sınıfını tamamla. Bu sınıf bir değer, celsius, saklar ve diğer ölçekleri bu değerden hesaplar:
fahrenheit: getter,celsius * 9 / 5 + 32değerini döndürür; setter ise(value - 32) * 5 / 9değerinicelsiusiçine kaydederkelvin: getter'ıcelsius + 273.15değerini döndüren salt okunur bir özellik
Sağlanan kod, kaç komut geleceğini okur ve ardından her satırda bir komut okur: c VALUE, celsius değerini ayarlar; f VALUE ise fahrenheit değerini ayarlar. Her komuttan sonra üç özelliği iki ondalık basamakla yazdırır. c 25, f 98.6 ve c -40 için şunu yazdırır:
25.00 C | 77.00 F | 298.15 K
37.00 C | 98.60 F | 310.15 K
-40.00 C | -40.00 F | 233.15 KKodunu temperature.gd dosyasına yaz. main.gd, sağlanan giriş/çıkış kodunu içerir ve düzenlenemez.
Kendin dene
extends Node
func _ready():
# Sağlanan girdi/çıktı kodu: olduğu gibi bırakın
var temp := Temperature.new()
var count := int(OS.read_string_from_stdin())
for i in count:
var parts := OS.read_string_from_stdin().split(" ")
if parts[0] == "c":
temp.celsius = float(parts[1])
else:
temp.fahrenheit = float(parts[1])
print("%.2f C | %.2f F | %.2f K" % [temp.celsius, temp.fahrenheit, temp.kelvin])
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