Menu
CoddyTech

Introdução à POO

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

A programação orientada a objetos (POO) organiza um programa em torno de objetos. Um objeto reúne dados (variáveis) e as funções que trabalham com esses dados. Uma classe descreve o que seus objetos armazenam e fazem, e você pode criar quantos objetos precisar a partir dela.

Em GDScript, cada arquivo de script é uma classe. Dê um nome a ela com class_name e declare as variáveis que cada objeto contém:

# car.gd
class_name Car
extends RefCounted

var brand: String = "Generic"
var wheels: int = 4

extends RefCounted faz com que o Godot libere um objeto Car automaticamente quando nenhuma variável mais se referir a ele. Use-o para toda classe que armazene dados e não seja um nó. Um script sem uma linha extends também estende RefCounted.

Chame new() na classe para criar um objeto e, em seguida, acesse suas variáveis com um ponto:

# main.gd
var my_car := Car.new()
print(my_car.wheels) # 4
print(my_car is Car) # true

O operador is verifica a partir de qual classe um objeto foi criado. Imprimir o próprio objeto mostra apenas um id como <RefCounted#-9223372009860233781>, então imprima as variáveis dele.

A classe é o modelo, e cada objeto é uma coisa separada construída a partir dela: chamar Car.new() duas vezes dá a você dois carros.

challenge icon

Desafio

Fácil

Crie a classe Car em car.gd:

  • o nome da classe é Car e ela estende RefCounted
  • uma variável String brand que começa como "Generic"
  • uma variável int wheels que começa como 4

O código fornecido lê quantos carros criar e cria cada um com Car.new(). Ele imprime o número de carros e o total de rodas. Quando cria pelo menos um carro, ele lê uma marca para o primeiro carro e imprime as marcas do primeiro e do último carro. Para as entradas 3 e Tesla, ele imprime:

Cars: 3
Wheels: 12
First car: Tesla
Last car: Generic

Seu código deve ficar em car.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 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 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