Sınıflar ve Nesneler
Coddy'nin GDScript Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 3 / 65.
Bir sınıf ve nesneleri farklı şeyler tutar. Bir sınıftaki const, sınıfın kendisine aittir: tek bir değer vardır ve bir nesne oluşturmadan sınıf adını kullanarak bu değeri okursun.
# dog.gd
class_name Dog
extends RefCounted
const SPECIES = "Canis familiaris"
var dog_name: String = "Unnamed"
var breed: String = "Unknown"print(Dog.SPECIES) # Canis familiarisvar satırları her nesnenin ne tuttuğunu açıklar. new() ile oluşturulan her nesne, varsayılan değerlerinden başlayarak bu değişkenlerin kendi kopyasını alır:
var dog1 := Dog.new()
var dog2 := Dog.new()
dog1.dog_name = "Nicky"
dog1.breed = "Husky"
print(dog1.dog_name) # Nicky
print(dog2.dog_name) # Unnameddog1'i değiştirmek, dog2'yi olduğu gibi bırakır. Bir nesne sabiti de okuyabilir: dog1.SPECIES, Dog.SPECIES ile aynı değerdir.
Bir nesne yalnızca sınıfının bildirdiği değişkenlere sahiptir. dog1.color = "brown" programı bir hatayla durdurur, çünkü Dog sınıfında color değişkeni yoktur. Bir nesnenin ihtiyaç duyduğu her değişken sınıfa eklenir.
Görev
KolayTamamla sınıfı Student, student.gd içinde:
- tüm sınıf tarafından paylaşılan,
"Godot High School"değerine sahip birSCHOOLsabiti - bir
Stringdeğişkenistudent_name - başlangıç değeri
"N/A"olan birStringdeğişkenigrade
Verilen kod, ardından kaç öğrencinin geleceğini, sonra da her öğrenci için bir satır okur: bir ad ve isteğe bağlı olarak bir boşluk ile ardından bir not. Her satır için bir Student oluşturur, adını ayarlar ve yalnızca satırda not varsa notunu ayarlar. Ardından Student.SCHOOL değerini ve tüm öğrencileri yazdırır. Alice A ve Bob satırları için şunu yazdırır:
School: Godot High School
Alice has grade A
Bob has grade N/A你的代码应写在 student.gd 中。main.gd 包含给定的输入/输出代码,不能编辑。
Kendin dene
extends Node
func _ready():
# Verilen giriş/çıkış kodu: olduğu gibi bırakın
var count := int(OS.read_string_from_stdin())
var students: Array[Student] = []
for i in count:
var parts := OS.read_string_from_stdin().split(" ", false)
var student := Student.new()
student.student_name = parts[0]
if parts.size() > 1:
student.grade = parts[1]
students.append(student)
print("School: %s" % Student.SCHOOL)
for student in students:
print("%s has grade %s" % [student.student_name, student.grade])
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