Menu
CoddyTech

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 familiaris

var 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) # Unnamed

dog1'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.

challenge icon

Görev

Kolay

Tamamla sınıfı Student, student.gd içinde:

  • tüm sınıf tarafından paylaşılan, "Godot High School" değerine sahip bir SCHOOL sabiti
  • bir String değişkeni student_name
  • başlangıç değeri "N/A" olan bir String değişkeni grade

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])
quiz iconKendini test et

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

Kendi başına pratik yap: Online GDScript derleyicisi