Menu
CoddyTech

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 = 4

extends 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) # true

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

challenge icon

Sfida

Facile

Crea la classe Car in car.gd:

  • il suo nome di classe è Car ed estende RefCounted
  • una variabile String brand che inizia con "Generic"
  • una variabile int wheels che inizia con 4

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: Generic

Il 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)
quiz iconMettiti alla prova

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

Esercitati da solo: Compilatore GDScript online