Kurucu (_init)
Coddy'nin GDScript Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 7 / 65.
new() sonrasında her özelliği ayarlamak birkaç satır sürer ve birini unutmak kolaydır. Bir kurucu, bir nesneyi oluşturulurken hazırlar. GDScript'te kurucu, _init() yöntemidir:
# book.gd
class_name Book
extends RefCounted
var title: String
var author: String
var pages: int
func _init(book_title: String, book_author: String, page_count: int) -> void:
title = book_title
author = book_author
pages = page_countnew() öğesine aktardığınız bağımsız değişkenler, nesneyi döndürmeden önce otomatik olarak çalışan _init() işlevine gider:
var dune := Book.new("Dune", "Frank Herbert", 412)
print(dune.title) # Dune
print(dune.pages) # 412_init() parametrelere sahip olduğunda, new() bu parametreleri iletmelidir: Book.new() ifadesini hiçbir argüman olmadan kullanmak, program çalışmadan önce bildirilen bir hataya neden olur. Varsayılan değeri olan bir parametre isteğe bağlıdır:
func _init(book_title: String, book_author: String = "Unknown") -> void:Bu oluşturucu ile Book.new("Notes"), yazarı "Unknown" olan bir kitap oluşturur.
Yukarıdaki parametre adları özellik adlarından farklıdır. Aynı olsalardı, self konulu derste olduğu gibi self.title = title yazardınız.
Görev
KolayBook sınıfını book.gd dosyasında tamamla:
- kurucu
_init(book_title, book_author, page_count), bağımsız değişkenlerinititle,authorvepagesözelliklerine kaydeder describe(), başlık tek tırnak içinde olacak şekilde'TITLE' by AUTHOR, PAGES pagesdöndürür
Sağlanan kod, ardından kaç kitap geleceğini okur, sonra her kitap için başlık, yazar ve sayfa sayısının ; ile ayrıldığı bir satır okur. Her kitap için Book.new() oluşturur, describe() sonucunu yazdırır ve son olarak pages özelliklerinin toplamını yazdırır. Dune;Frank Herbert;412 satırı için şunu yazdırır:
'Dune' by Frank Herbert, 412 pages
Total pages: 412Kodunu book.gd dosyasına yaz. main.gd, sağlanan giriş/çıkış kodunu içerir ve düzenlenemez.
Kendin dene
extends Node
func _ready():
# Sağlanan giriş/çıkış kodu: olduğu gibi bırakın
var count := int(OS.read_string_from_stdin())
var total := 0
for i in count:
var parts := OS.read_string_from_stdin().split(";")
var book := Book.new(parts[0], parts[1], int(parts[2]))
print(book.describe())
total += book.pages
print("Total pages: %d" % total)
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