Menu
CoddyTech

Métodos

Parte da seção Programação orientada a objetos do Journey de GDScript da Coddy. Lição 5 de 65.

Uma função declarada dentro de uma classe é um método: algo que os objetos da classe podem fazer. Como qualquer função, um método pode receber parâmetros e retornar um valor, além de ler e alterar as variáveis do 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 points

Chame um método em um objeto usando um ponto e passe os argumentos entre parênteses:

var board := ScoreBoard.new()
board.greet() # Placar pronto
board.add(5)
print(board.doubled()) # 10
print(board.add_bonus()) # 15

Dentro da classe, um método chama outro método do mesmo objeto pelo nome: add(10) em add_bonus() significa self.add(10).

Um método declarado com -> void não retorna nada, e um declarado com -> int deve retornar um int. Cada chamada funciona no próprio objeto: board.add(5) altera board.points e nenhum outro placar.

A chamada deve corresponder à declaração: board.add() sem um argumento é um erro relatado antes de o programa ser executado.

challenge icon

Desafio

Fácil

Complete os métodos da classe BankAccount em bank_account.gd. A conta mantém seu dinheiro na variável balance, que começa em 0.

  • deposit(amount) adiciona amount ao saldo
  • withdraw(amount) subtrai amount e retorna true. Quando amount é maior que o saldo, não altera nada e retorna false
  • get_balance() retorna o saldo

O código fornecido lê quantos comandos vêm a seguir e, então, um comando por linha: deposit AMOUNT ou withdraw AMOUNT. Ele imprime uma linha para cada comando e o saldo final. Para deposit 50 e withdraw 80, ele imprime:

Deposited 50
Not enough money for 80
Current balance: $50

Seu código deve ficar em bank_account.gd. main.gd contém o código fornecido de entrada/saída e não pode ser editado.

Experimente você mesmo

extends Node

func _ready():
	# Código de entrada/saída fornecido: mantenha-o 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())
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Programação orientada a objetos

Pratique por conta própria: Compilador de GDScript online