Pengantar OOP
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan GDScript di Coddy. Pelajaran 2 dari 65.
Pemrograman berorientasi object (OOP) mengatur program di sekitar object. Sebuah object menggabungkan data (variabel) dengan fungsi yang bekerja pada data tersebut. Sebuah class menjelaskan apa yang dimiliki dan dilakukan object-nya, dan kamu dapat membuat object sebanyak yang kamu perlukan dari class tersebut.
Di GDScript, setiap file skrip adalah class. Beri nama dengan class_name dan deklarasikan variabel yang dimiliki setiap object:
# car.gd
class_name Car
extends RefCounted
var brand: String = "Generic"
var wheels: int = 4extends RefCounted membuat Godot membebaskan object Car dengan sendirinya setelah tidak ada lagi variabel yang merujuk kepadanya. Gunakan ini untuk setiap class yang menyimpan data dan bukan node. Skrip tanpa baris extends juga mewarisi RefCounted.
Panggil new() pada class untuk membuat object, lalu akses variabelnya dengan titik:
# main.gd
var my_car := Car.new()
print(my_car.wheels) # 4
print(my_car is Car) # trueOperator is memeriksa dari class mana object dibuat. Mencetak object itu sendiri hanya menampilkan id seperti <RefCounted#-9223372009860233781>, jadi cetak variabelnya saja.
class adalah cetak biru, dan setiap object adalah benda terpisah yang dibuat darinya: memanggil Car.new() dua kali memberimu dua mobil.
Tantangan
MudahBuat class Car di car.gd:
- nama class-nya adalah
Cardan class tersebut mewarisiRefCounted - variabel
Stringbernamabrandyang dimulai dengan"Generic" - variabel
intbernamawheelsyang dimulai dengan4
Kode yang disediakan membaca jumlah mobil yang akan dibuat dan membuat setiap mobil dengan Car.new(). Kode tersebut mencetak jumlah mobil dan total rodanya. Jika setidaknya satu mobil dibuat, kode tersebut membaca merek untuk mobil pertama dan mencetak merek mobil pertama dan terakhir. Untuk input 3 dan Tesla, kode tersebut mencetak:
Cars: 3
Wheels: 12
First car: Tesla
Last car: GenericTulis kodemu di car.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 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)
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