Metotlar
Coddy'nin GDScript Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 5 / 65.
Bir sınıfın içinde bildirilen bir işlev metottur: sınıfın nesnelerinin yapabildiği bir şey. Herhangi bir işlev gibi, bir metot parametre alabilir ve bir değer döndürebilir; ayrıca nesnenin değişkenlerini okuyup değiştirebilir:
# score_board.gd
class_name ScoreBoard
extends RefCounted
var points: int = 0
func greet() -> void:
print("Scoreboard ready")
func add(amount: int) -> void:
points += amount
func doubled() -> int:
return points * 2
func add_bonus() -> int:
add(10)
return pointsBir nesne üzerinde nokta kullanarak metot çağırın ve argümanları parantez içinde iletin:
var board := ScoreBoard.new()
board.greet() # Skor tablosu hazır
board.add(5)
print(board.doubled()) # 10
print(board.add_bonus()) # 15Sınıfın içinde, bir metot aynı nesnenin başka bir metodunu adıyla çağırır: add(10), add_bonus() içinde self.add(10) anlamına gelir.
-> void ile tanımlanan bir metot hiçbir şey döndürmez, -> int ile tanımlanan bir metot ise bir int döndürmelidir. Her çağrı kendi nesnesi üzerinde çalışır: board.add(5), board.points değerini değiştirir ve başka hiçbir skor tablosunu değiştirmez.
Çağrı bildirimle eşleşmelidir: board.add() bağımsız değişken olmadan kullanılırsa program çalışmadan önce hata bildirilir.
Görev
Kolaybank_account.gd dosyasındaki BankAccount sınıfının yöntemlerini tamamla. Hesap, parasını başlangıç değeri 0 olan balance değişkeninde tutar.
deposit(amount), bakiyeyeamounteklerwithdraw(amount),amountdeğerini çıkarır vetruedöndürür.amountbakiyeden büyükse hiçbir şeyi değiştirmez vefalsedöndürürget_balance(), bakiyeyi döndürür
Sağlanan kod, ardından kaç komut geleceğini ve her satırda bir komut olacak şekilde komutları okur: deposit AMOUNT veya withdraw AMOUNT. Her komut için bir satır ve son bakiyeyi yazdırır. deposit 50 ve withdraw 80 için şunları yazdırır:
Deposited 50
Not enough money for 80
Current balance: $50Kodunu 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 giriş/çıkış kodu: olduğu gibi bırakın
var account := BankAccount.new()
var count := int(OS.read_string_from_stdin())
for i in count:
var parts := OS.read_string_from_stdin().split(" ")
var amount := int(parts[1])
if parts[0] == "deposit":
account.deposit(amount)
print("Deposited %d" % amount)
elif account.withdraw(amount):
print("Withdrew %d" % amount)
else:
print("Not enough money for %d" % amount)
print("Current balance: $%d" % account.get_balance())
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