Nesne Yönelimli Programlamaya Giriş
Coddy'nin GDScript Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 2 / 65.
Nesne yönelimli programlama (OOP), bir programı nesneler etrafında düzenler. Bir nesne, verileri (değişkenleri) bu veriler üzerinde çalışan işlevlerle bir araya getirir. Bir sınıf, nesnelerinin neleri içerdiğini ve yaptığını tanımlar; bu sınıftan ihtiyacın kadar nesne oluşturabilirsin.
GDScript'te her betik dosyası bir sınıftır. Dosyaya class_name ile ad verin ve her nesnenin tuttuğu değişkenleri bildirin:
# car.gd
class_name Car
extends RefCounted
var brand: String = "Generic"
var wheels: int = 4extends RefCounted, artık hiçbir değişken Car nesnesine başvurmadığında Godot'un bu nesneyi kendiliğinden serbest bırakmasını sağlar. Bunu veri tutan ve düğüm olmayan her sınıf için kullan. extends satırı olmayan bir betik de RefCounted sınıfını genişletir.
Bir nesne oluşturmak için sınıfta new() çağrısı yap, ardından değişkenlerine nokta ile eriş:
# main.gd
var my_car := Car.new()
print(my_car.wheels) # 4
print(my_car is Car) # trueis işleci, bir nesnenin hangi sınıftan oluşturulduğunu denetler. Nesnenin kendisini yazdırmak yalnızca <RefCounted#-9223372009860233781> gibi bir kimlik gösterir, bu yüzden onun değişkenlerini yazdırın.
Sınıf, planın kendisidir ve her nesne ondan oluşturulmuş ayrı bir şeydir: Car.new() çağrısını iki kez yapmak size iki araba verir.
Görev
Kolaycar.gd dosyasında Car sınıfını oluştur:
- sınıf adı
Carolsun veRefCountedsınıfını genişletsin "Generic"ile başlayan birStringdeğişkeni olanbrand4ile başlayan birintdeğişkeni olanwheels
Sağlanan kod, kaç araba oluşturulacağını okur ve her birini Car.new() ile oluşturur. Araba sayısını ve toplam tekerlek sayısını yazdırır. En az bir araba oluşturduğunda, ilk araba için bir marka okur ve ilk ve son arabanın markalarını yazdırır. 3 ve Tesla girdileri için şunu yazdırır:
Cars: 3
Wheels: 12
First car: Tesla
Last car: GenericKodunu car.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 count := int(OS.read_string_from_stdin())
var garage: Array[Car] = []
for i in count:
garage.append(Car.new())
var total := 0
for car in garage:
total += car.wheels
print("Cars: %d" % garage.size())
print("Wheels: %d" % total)
if count > 0:
garage[0].brand = OS.read_string_from_stdin()
print("First car: %s" % garage[0].brand)
print("Last car: %s" % garage[-1].brand)
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