Classi e oggetti a confronto
Fa parte della sezione Programmazione orientata agli oggetti del percorso GDScript di Coddy. Lezione 3 di 65.
Una classe e i suoi oggetti contengono elementi diversi. Una const in una classe appartiene alla classe stessa: c'è un solo valore e lo leggi tramite il nome della classe senza creare un oggetto.
# dog.gd
class_name Dog
extends RefCounted
const SPECIES = "Canis familiaris"
var dog_name: String = "Unnamed"
var breed: String = "Unknown"print(Dog.SPECIES) # Canis familiarisLe righe var descrivono cosa contiene ogni oggetto. Ogni oggetto creato con new() ottiene una propria copia di queste variabili, a partire dai rispettivi valori predefiniti:
var dog1 := Dog.new()
var dog2 := Dog.new()
dog1.dog_name = "Nicky"
dog1.breed = "Husky"
print(dog1.dog_name) # Nicky
print(dog2.dog_name) # UnnamedModificando dog1, dog2 rimane com'era. Anche un oggetto può leggere la costante: dog1.SPECIES ha lo stesso valore di Dog.SPECIES.
Un oggetto ha solo le variabili dichiarate dalla sua classe. dog1.color = "brown" interrompe il programma con un errore, perché Dog non ha una variabile color. Ogni variabile di cui un oggetto ha bisogno va inserita nella classe.
Sfida
FacileCompleta la classe Student in student.gd:
- una costante
SCHOOLcon il valore"Godot High School", condivisa da tutta la classe - una variabile
Stringstudent_name - una variabile
Stringgradeche inizia come"N/A"
Il codice fornito legge quanti studenti seguono, poi una riga per studente: un nome, seguito facoltativamente da uno spazio e da un voto. Crea uno Student per ogni riga, imposta il suo nome e imposta il suo voto solo quando la riga ne contiene uno. Poi stampa Student.SCHOOL e tutti gli studenti. Per le righe Alice A e Bob stampa:
School: Godot High School
Alice has grade A
Bob has grade N/AIl tuo codice va in student.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 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])
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