class dan object
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan GDScript di Coddy. Pelajaran 3 dari 65.
Sebuah class dan object-nya menyimpan hal yang berbeda. const dalam sebuah class adalah milik class itu sendiri: hanya ada satu nilai, dan kamu membacanya melalui nama class tanpa membuat object.
# dog.gd
class_name Dog
extends RefCounted
const SPECIES = "Canis familiaris"
var dog_name: String = "Unnamed"
var breed: String = "Unknown"print(Dog.SPECIES) # Canis familiarisBaris var menjelaskan apa yang dimiliki setiap object. Setiap object yang dibuat dengan new() mendapatkan salinan variabel ini sendiri, dimulai dari nilai defaultnya:
var dog1 := Dog.new()
var dog2 := Dog.new()
dog1.dog_name = "Nicky"
dog1.breed = "Husky"
print(dog1.dog_name) # Nicky
print(dog2.dog_name) # UnnamedMengubah dog1 membuat dog2 tetap seperti sebelumnya. Sebuah object juga dapat membaca konstanta tersebut: dog1.SPECIES memiliki nilai yang sama dengan Dog.SPECIES.
Sebuah object hanya memiliki variabel yang dideklarasikan oleh class-nya. dog1.color = "brown" menghentikan program dengan error, karena Dog tidak memiliki variabel color. Setiap variabel yang dibutuhkan object harus dimasukkan ke dalam class.
Tantangan
MudahLengkapi class Student di student.gd:
- sebuah konstanta
SCHOOLdengan nilai"Godot High School", yang digunakan bersama oleh seluruh class - sebuah variabel
Stringbernamastudent_name - sebuah variabel
Stringbernamagradeyang nilai awalnya"N/A"
Kode yang disediakan membaca jumlah siswa berikutnya, lalu satu baris untuk setiap siswa: nama, yang dapat diikuti spasi dan nilai. Kode tersebut membuat Student untuk setiap baris, menetapkan namanya, dan menetapkan nilainya hanya jika baris tersebut memiliki nilai. Lalu kode tersebut mencetak Student.SCHOOL dan setiap siswa. Untuk baris Alice A dan Bob, kode tersebut mencetak:
School: Godot High School
Alice has grade A
Bob has grade N/ATulis kodemu di student.gd. main.gd berisi kode input/output yang disediakan dan tidak dapat diedit.
Coba sendiri
extends Node
func _ready():
# Kode input/output yang disediakan: biarkan apa adanya
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])
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Pemrograman Berorientasi Objek
1Dasar-Dasar OOP
File EksternalPengantar OOPclass dan objectKata Kunci selfmethodpropertyKonstruktor (_init)Ringkasan: Kalkulator Sederhana4Polimorfisme
Method Overriding Sekali LagiDuck TypingKelas Abstrak dan MethodDesain InterfaceRingkasan: Kalkulator Bentuk7Sinyal
Apa itu Sinyal?Mendeklarasikan dan MemancarkanMenghubungkan ke SinyalSinyal dengan ArgumenRangkuman, Sistem Kesehatan10Pola Desain Bagian 2
Pola CommandPola AdapterPola DecoratorPola Template MethodPola StatePola Composite2Property class
Variabel instance vs. variabel statisFungsi statisSetter propertyGetter propertyPrivat berdasarkan konvensiRangkuman: Pengelola Rekening Bank5Enkapsulasi
Member Publik dan PrivatValidasi dengan SetterPenyembunyian InformasiProperty Hanya-BacaRingkasan: Sistem Catatan Siswa8Konsep OOP Lanjutan
Komposisi vs PewarisanInner ClassNode sebagai KomponenRefCounted vs NodeEnum dalam Class11Proyek: Manajemen Perpustakaan
Gambaran Umum Proyekclass Buku dan PenggunaLatihan sendiri: Compiler GDScript online