Métodos
Parte de la sección Programación orientada a objetos del Journey de GDScript de Coddy. Lección 5 de 65.
Una función declarada dentro de una clase es un método: algo que los objetos de la clase pueden hacer. Como cualquier función, un método puede recibir parámetros y devolver un valor, y puede leer y cambiar las variables del objeto:
# 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 pointsLlama a un método de un objeto usando un punto y pasa los argumentos entre paréntesis:
var board := ScoreBoard.new()
board.greet() # Marcador listo
board.add(5)
print(board.doubled()) # 10
print(board.add_bonus()) # 15Dentro de la clase, un método llama a otro método del mismo objeto por su nombre: add(10) en add_bonus() significa self.add(10).
Un método declarado con -> void no devuelve nada, y uno declarado con -> int debe devolver un int. Cada llamada funciona en su propio objeto: board.add(5) cambia board.points y ningún otro marcador.
La llamada debe coincidir con la declaración: board.add() sin un argumento es un error que se informa antes de que se ejecute el programa.
Desafío
FácilCompleta los métodos de la clase BankAccount en bank_account.gd. La cuenta guarda su dinero en la variable balance, que empieza en 0.
deposit(amount)sumaamountal saldowithdraw(amount)restaamounty devuelvetrue. Cuandoamountes mayor que el saldo, no cambia nada y devuelvefalseget_balance()devuelve el saldo
El código proporcionado lee cuántos comandos siguen y después lee un comando por línea: deposit AMOUNT o withdraw AMOUNT. Imprime una línea por cada comando y el saldo final. Para deposit 50 y withdraw 80, imprime:
Deposited 50
Not enough money for 80
Current balance: $50Tu código va en bank_account.gd. main.gd contiene el código proporcionado para la entrada y salida, y no se puede editar.
Pruébalo tú mismo
extends Node
func _ready():
# Código de entrada/salida proporcionado: mantenlo tal como está
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())
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Programación orientada a objetos
1Fundamentos de la programación orientada a objetos
Archivos externosIntroducción a la programación orientada a objetosClases vs. objetosLa palabra clave selfMétodosPropiedadesConstructor (_init)Repaso: calculadora sencilla4Polimorfismo
Repaso de la sobrescritura de métodosTipado patoClases y métodos abstractosDiseño de interfacesRepaso: calculadora de formas7Señales
¿Qué es una señal?Declarar y emitirConectarse a las señalesSeñales con argumentosRepaso: sistema de salud10Patrones de diseño, parte 2
Patrón CommandPatrón AdapterPatrón DecoratorPatrón Template MethodPatrón StatePatrón Composite2Propiedades de clase
Variables de instancia y estáticasFunciones estáticasMétodos setter de propiedadesMétodos getter de propiedadesPrivado por convenciónRepaso: administrador de cuentas bancarias5Encapsulación
Miembros públicos y privadosValidación con settersOcultación de informaciónPropiedades de solo lecturaRepaso: sistema de registros de estudiantes8Conceptos avanzados de POO
Composición frente a herenciaClases internasNodos como componentesRefCounted frente a NodeEnums en clases3Herencia
Herencia básicaLa palabra clave superSobrescritura de métodosCadenas de herenciaComprobaciones de tipo con isRepaso: jerarquía de empleados6Métodos especiales
Introducción a los métodos virtualesEl método _to_stringIteradores personalizadosRepaso: lista personalizada9Patrones de diseño, parte 1
Introducción a los patrones de diseñoPatrón SingletonPatrón FactoryPatrón ObserverPatrón StrategyPractica por tu cuenta: Compilador de GDScript online