Introduzione alla programmazione orientata agli oggetti
Fa parte della sezione Programmazione orientata agli oggetti del percorso GDScript di Coddy. Lezione 2 di 65.
La programmazione orientata agli oggetti (OOP) organizza un programma attorno agli oggetti. Un oggetto raggruppa i dati (variabili) e le funzioni che operano su quei dati. Una classe descrive cosa contengono e cosa fanno i suoi oggetti, e puoi crearne tutti gli oggetti di cui hai bisogno.
In GDScript ogni file di script è una classe. Assegnale un nome con class_name e dichiara le variabili che ogni oggetto contiene:
# car.gd
class_name Car
extends RefCounted
var brand: String = "Generic"
var wheels: int = 4extends RefCounted fa sì che Godot liberi da solo un oggetto Car quando nessuna variabile vi fa più riferimento. Usalo per ogni classe che contiene dati e non è un nodo. Anche uno script senza una riga extends estende RefCounted.
Chiama new() sulla classe per creare un oggetto, poi accedi alle sue variabili con un punto:
# main.gd
var my_car := Car.new()
print(my_car.wheels) # 4
print(my_car is Car) # trueL'operatore is controlla da quale classe è stato creato un oggetto. Stampare l'oggetto stesso mostra solo un id come <RefCounted#-9223372009860233781>, quindi stampa invece le sue variabili.
La classe è il modello e ogni oggetto è una cosa distinta costruita a partire da esso: chiamando Car.new() due volte ottieni due auto.
Sfida
FacileCrea la classe Car in car.gd:
- il suo nome di classe è
Cared estendeRefCounted - una variabile
Stringbrandche inizia con"Generic" - una variabile
intwheelsche inizia con4
Il codice fornito legge quante auto creare e crea ciascuna con Car.new(). Stampa il numero di auto e il totale delle loro ruote. Se ha creato almeno un'auto, legge una marca per la prima auto e stampa le marche della prima e dell'ultima auto. Con l'input 3 e Tesla, stampa:
Cars: 3
Wheels: 12
First car: Tesla
Last car: GenericIl tuo codice va in car.gd. main.gd contiene il codice di input/output fornito e non può essere modificato.
Provalo tu
extends Node
func _ready():
# Codice di input/output fornito: lascialo così com'è
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)
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Programmazione orientata agli oggetti
1Fondamenti della programmazione orientata agli oggetti
File esterniIntroduzione alla programmazione orientata agli oggettiClassi e oggetti a confrontoLa parola chiave selfMetodiProprietàCostruttore (_init)Riepilogo - Calcolatrice semplice4Polimorfismo
Ripasso dell'override dei metodiDuck typingClassi e metodi astrattiProgettazione delle interfacceRiepilogo - Calcolatore di forme7Segnali
Che cos'è un segnale?Dichiarare ed emettereCollegarsi ai segnaliSegnali con argomentiRipasso - Sistema della salute10Pattern di progettazione, parte 2
Pattern CommandPattern AdapterPattern DecoratorPattern Template MethodPattern StatePattern Composite2Proprietà delle classi
Variabili di istanza e staticheFunzioni staticheSetter delle proprietàGetter delle proprietàPrivato per convenzioneRiepilogo - Gestore di conti bancari5Incapsulamento
Membri pubblici e privatiValidazione con i setterNascondimento delle informazioniProprietà di sola letturaRiepilogo - Sistema di gestione dei dati degli studenti8Concetti avanzati di OOP
Composizione vs ereditarietàClassi interneNodi come componentiRefCounted vs NodeEnum nelle classi11Progetto: Gestione della biblioteca
Panoramica del progettoClassi Libro e Utente3Ereditarietà
Ereditarietà di baseLa parola chiave superOverride dei metodiCatene di ereditarietàControlli di tipo con isRipasso - Gerarchia dei dipendenti6Metodi speciali
Introduzione ai metodi virtualiIl metodo _to_stringIteratori personalizzatiRiepilogo - Lista personalizzata9Modelli di progettazione, parte 1
Introduzione ai modelli di progettazionePattern SingletonPattern FactoryPattern ObserverPattern StrategyEsercitati da solo: Compilatore GDScript online