Propriedades
Parte da seção Programação orientada a objetos do Journey de GDScript da Coddy. Lição 6 de 65.
As variáveis que uma classe declara são suas propriedades (também chamadas de variáveis membro): os dados que todo objeto carrega. Declare-as no início da classe, cada uma com um tipo e um valor inicial:
# player.gd
class_name Player
extends RefCounted
var player_name: String = "Hero"
var level: int = 1
var hp: float = 100.0
var inventory: Array[String] = []Uma propriedade declarada sem um valor começa com o valor padrão de seu tipo: 0 para int, "" para String, false para bool e um array vazio para Array[String].
Fora da classe, você lê e altera uma propriedade usando um ponto. Dentro dos métodos da classe, você usa o nome dela:
var p := Player.new()
p.level += 1
p.inventory.append("sword")
print(p.level) # 2
print(p.inventory) # ["sword"]Cada objeto recebe sua própria cópia de cada propriedade, incluindo arrays: [] cria um novo array vazio para cada jogador, então o inventário de outro jogador permanece vazio.
O tipo é verificado: p.level = "max" é um erro informado antes de o programa ser executado, porque level contém um int.
Desafio
FácilComplete a classe Player em player.gd. Declare estas propriedades:
player_name, umaStringque começa como"Hero"level, umintque começa em1hp, umintque começa em100inventory, umArray[String]que começa vazio
Em seguida, complete o método describe(). Ele retorna NAME (level LEVEL, HP hp): ITEMS, em que ITEMS é o inventário unido com ", ", ou no items quando o inventário está vazio.
O código fornecido lê um nome para um jogador, depois quantos comandos vêm a seguir e, então, os comandos: hit AMOUNT, item NAME ou level. Ele altera diretamente as propriedades do jogador e, por fim, imprime describe() para esse jogador e para um segundo jogador que não foi alterado. Para Ada e os comandos hit 30, item sword, level e item shield, ele imprime:
Ada (level 2, 70 hp): sword, shield
Hero (level 1, 100 hp): no itemsSeu código deve ficar em player.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 hero := Player.new()
hero.player_name = OS.read_string_from_stdin()
var guest := Player.new()
var count := int(OS.read_string_from_stdin())
for i in count:
var parts := OS.read_string_from_stdin().split(" ")
match parts[0]:
"hit":
hero.hp -= int(parts[1])
"item":
hero.inventory.append(parts[1])
"level":
hero.level += 1
print(hero.describe())
print(guest.describe())
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
1Fundamentos da POO
Arquivos externosIntrodução à POOClasses vs. objetosA palavra-chave selfMétodosPropriedadesConstrutor (_init)Revisão - Calculadora simples4Polimorfismo
Revisitando a Sobrescrita de MétodosDuck TypingClasses e Métodos AbstratosDesign de InterfacesRevisão - Calculadora de Formas7Sinais
O que é um sinal?Declarando e emitindoConectando-se a sinaisSinais com argumentosRevisão - Sistema de saúde10Padrões de Projeto Parte 2
Padrão CommandPadrão AdapterPadrão DecoratorPadrão Template MethodPadrão StatePadrão Composite2Propriedades de Classe
Variáveis de Instância vs. EstáticasFunções EstáticasMétodos Setters de PropriedadeMétodos Getters de PropriedadePrivado por ConvençãoRecapitulando: Gerenciador de Conta Bancária5Encapsulamento
Membros públicos e privadosValidação com settersOcultação de informaçõesPropriedades somente para leituraRevisão - Sistema de registros de alunos8Conceitos Avançados de POO
Composição vs. HerançaClasses InternasNós como ComponentesRefCounted vs. NodeEnums em Classes3Herança
Herança básicaA palavra-chave superSobrescrita de métodosCadeias de herançaVerificações de tipo com isRevisão - Hierarquia de funcionários6Métodos especiais
Introdução aos métodos virtuaisO método _to_stringIteradores personalizadosRevisão - Lista personalizada9Padrões de Projeto Parte 1
Introdução aos Padrões de ProjetoPadrão SingletonPadrão FactoryPadrão ObserverPadrão StrategyPratique por conta própria: Compilador de GDScript online