Aula 8: Acesso a Atributos
Galáxia RPG Maker :: Outros assuntos e Aprendizado
:: Aulas de RGSS/RGSS2 :: Curso de RGSS/RGSS2 :: Curso de RGSS
Página 1 de 1
Aula 8: Acesso a Atributos
Acesso a Atributos
» Prefácio:
Esta aula será bem rápida, tenho como objetivo "tapar" um buraco no conteúdo para quem esta acompanhando minhas aulas! Hoje iremos aprender sobre a acessibilidade das variáveis!
Ao olhar nos scripts do seu banco de scripts, nota-se que vários dos objetos iniciam com um @ ou um $, hoje veremos as diferenças.
» Variáveis Locais:
Toda variável local é aquela que não possuem nem $ nem @, elas são variáveis que só "existem" dentro do método em que são instanciadas.
Exemplo:
- Código:
def soma
a = b + c
p a.to_s
end
» Variáveis de Instância - Atributos:
As variáveis de instância são aquelas que toda a classe pode utilizar, por exemplo, dentro de Scene_Menu, a janela @status_window é utilizada em vários métodos. Seria impossível executar métodos da @status_window em métodos dentro da scene caso não tivesse um @ no nome, vou exemplificar com valores numéricos:
- Código:
def soma(m, n)
@a = m
@a += n
p @a.to_s
end
#
def subtracao(m, n)
@a = 0 if @a.nil?
@a += m
@a -= n
p @a.to_s
end
a = MinhaClasse.new #nome fictício para a classe em questão
a.soma(2,3)
>dentro do método
>> @a = m #m é 2 assim @a = 2
>> @a += n # n é 3, @a é 2, 3 + 2 = 5
>> Mostra na tela 5
a.subtração(6,2)
>dentro do método
>> pergunta @a é nil? # não intão passa para a próxima linha
>> @a += m # @a ja vale 5 pois o método soma foi executado antes, assim 5 + 6 = 11
>> @a -= n # 6 - 2 = 4
É óbvio que o exemplo que citei é um tanto pobre, mas você consegue ter uma idéia do que pode acontecer.
» Variáveis Globais:
São as variáveis(objetos) que podem ser acessadas em qualquer parte do programa, vou citar os classicos que nós já utilizamos:
$game_variables
$game_switches
...
Todos os objetos com um $ no início do nome são globais, isso significa que não importa a classe ou módulo que eu esteja, eu posso acessá-lo!
» Variáveis de Classe:
Variável de classe começam com @@, e existem apenas uma delas para cada classe. Como não se usam muitas variáveis de classe (@@), ninguém nunca vai ter problemas com isso. (Fonte KJr)
» Acessando atributos:
São 3 possíveis: attr_acessor, attr_reader e attr_writer
Por exemplo: eu tenho a classe Game_Actor e dentro dela tenho uma variável chamada @str (força) quero fazer com que essa variável possa ser acessada por outras classes uso, assim:
attr_acessor :str
Qual a diferença de usar um attr_acessor ou uma variável com $.
Ao usar o attr posso usar $game_actors[id].str (onde $game_actors[id] é o nome do objeto), assim a cada id, tenho um endereço na array diferente e assim um str diferente, mas se eu usasse $str, eu não poderia usar $game_actors[id], usaria apenas $str e ele seria igual para todos os personagens!!!
» Diferenças entre acessor reader e writer:
reader: permite apenas a leitura do atributo, posso por exemplo usar um print nesse atributo, mas não posso mudar o valor dele.
writer: permite alterar, mas não permite ler, não é muito utilizado
acessor: é o reader + o writer XD
Relembrando o uso:
Em geral usamos após o nome da classe:
class AlgumaCoisa
#Usamos attr_nome (um dos 3 possíveis) :nomedoatributo
attr_acessor :var1
attr_reader :var2
attr_writer :var3
» Dicas:
ocê pode usar os attr_ em uma linha só, para exemplificar isso e mostrar como os attr_ são úteis, vejam o exemplo
Esta é a classe Pessoa
- Código:
class Pessoa
def nome
@nome
end
def nome=(valor)
@nome = valor
end
def nascimento
@nascimento
end
def nascimento=(valor)
@nascimento = valor
end
def cpf
@cpf
end
def cpf=(valor)
@cpf = valor
end
end
- Código:
class Pessoa
attr :nome, :nascimento, :cpf
end
todos os créditos e agradecimentos a Anderson Porto pelo lindo tutorial!
Tópicos semelhantes
» Aula 10: Complementos
» Aula 9: Introdução ao WSW
» Aula 11: Criando uma HUD Parte 1
» Aula 12: Criando uma HUD Parte 2
» Aula 3: Classes e Métodos
» Aula 9: Introdução ao WSW
» Aula 11: Criando uma HUD Parte 1
» Aula 12: Criando uma HUD Parte 2
» Aula 3: Classes e Métodos
Galáxia RPG Maker :: Outros assuntos e Aprendizado
:: Aulas de RGSS/RGSS2 :: Curso de RGSS/RGSS2 :: Curso de RGSS
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos