Metodi
Fa parte della sezione Programmazione orientata agli oggetti del percorso GDScript di Coddy. Lezione 5 di 65.
Una funzione dichiarata all'interno di una classe è un metodo: qualcosa che gli oggetti della classe possono fare. Come qualsiasi funzione, un metodo può accettare parametri e restituire un valore, e può leggere e modificare le variabili dell'oggetto:
# score_board.gd
class_name ScoreBoard
extends RefCounted
var points: int = 0
func greet() -> void:
print("Scoreboard ready")
func add(amount: int) -> void:
points += amount
func doubled() -> int:
return points * 2
func add_bonus() -> int:
add(10)
return pointsChiama un metodo su un oggetto usando un punto e passa gli argomenti tra parentesi:
var board := ScoreBoard.new()
board.greet() # Segnapunti pronto
board.add(5)
print(board.doubled()) # 10
print(board.add_bonus()) # 15All'interno della classe, un metodo chiama un altro metodo dello stesso oggetto usando il suo nome: add(10) in add_bonus() significa self.add(10).
Un metodo dichiarato con -> void non restituisce nulla, mentre uno dichiarato con -> int deve restituire un int. Ogni chiamata agisce sul proprio oggetto: board.add(5) modifica board.points e nessun altro tabellone.
La chiamata deve corrispondere alla dichiarazione: board.add() senza un argomento è un errore segnalato prima che il programma venga eseguito.
Sfida
FacileCompleta i metodi della classe BankAccount in bank_account.gd. L'account conserva il proprio denaro nella variabile balance, che inizia da 0.
deposit(amount)aggiungeamountal saldowithdraw(amount)sottraeamounte restituiscetrue. Seamountè maggiore del saldo, non modifica nulla e restituiscefalseget_balance()restituisce il saldo
Il codice fornito legge il numero di comandi successivi, quindi un comando per riga: deposit AMOUNT oppure withdraw AMOUNT. Stampa una riga per ogni comando e il saldo finale. Per deposit 50 e withdraw 80 stampa:
Deposited 50
Not enough money for 80
Current balance: $50Il tuo codice va in bank_account.gd. main.gd contiene il codice fornito per input/output e non può essere modificato.
Provalo tu
extends Node
func _ready():
# Codice di input/output fornito: lascialo così com'è
var account := BankAccount.new()
var count := int(OS.read_string_from_stdin())
for i in count:
var parts := OS.read_string_from_stdin().split(" ")
var amount := int(parts[1])
if parts[0] == "deposit":
account.deposit(amount)
print("Deposited %d" % amount)
elif account.withdraw(amount):
print("Withdrew %d" % amount)
else:
print("Not enough money for %d" % amount)
print("Current balance: $%d" % account.get_balance())
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