Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.



 
InícioÚltimas imagensProcurarRegistrarEntrar
A Equipe Central RPG Maker deseja a todos Boas Vindas!
Olá galera venho aqui pedir para ajuda a vocês pesso que postem conteúdo em nossa comunidade irei ajudar a vocês também.
Agora nossa comunidade também tem o famoso projeto de ouro porem da nossa comunidade leva um nome diferente leva o nome Osca de Ouro entre no tópico de Notícias e fique por dentro das novidades.

 

 Aula 8: Acesso a Atributos

Ir para baixo 
AutorMensagem
..:: P.V Supreme ::..
Membro
Membro
..:: P.V Supreme ::..


Sexo : Masculino
Mensagens : 241

Aula 8: Acesso a Atributos  Empty
MensagemAssunto: Aula 8: Acesso a Atributos    Aula 8: Acesso a Atributos  Icon_minitimeDom Dez 19, 2010 11:40 am

Aula 8: Acesso a Atributos  Aulas8

Aula 8: Acesso a Atributos  Lessoncw7Prefá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.

Aula 8: Acesso a Atributos  Linhahreb7

Aula 8: Acesso a Atributos  Lessoncw7Variá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
Aqui a, b e c são variáveis locais, posso assim usar as mesmas varáriáveis (mesmos nomes) em vários métodos pois não vai fazer diferença! Veja que até agora nós usamos apenas variáveis locais!

Aula 8: Acesso a Atributos  Lessoncw7Variá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
O que vai ocorrer, no 1º método, o cálculo será sempre o mesmo (correto), mas no segundo método vai dar erro caso o 1º método já tenha sido executado, exemplo:
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.


Aula 8: Acesso a Atributos  Lessoncw7Variá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!


Aula 8: Acesso a Atributos  Lessoncw7Variá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)
Aula 8: Acesso a Atributos  Linhahreb7

Aula 8: Acesso a Atributos  Lessoncw7Acessando 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!!!


Aula 8: Acesso a Atributos  Importantxe7Diferenç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


Aula 8: Acesso a Atributos  Importantxe7Dica
Você 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

Usando attr, a mesma classe pessoa fica assim:
Código:

class Pessoa
  attr :nome, :nascimento, :cpf
end
Notem que é possível usar um attr para 3 instâncias, apenas separando com ,
Aula 8: Acesso a Atributos  Linhahreb7

Tags de busca

RGSS
Atributos
Acessos
attr


..:: Crédito ::..
Total a: Anderson Porto...
Por Disponibilizar: ..:: P.V Supreme ::..


..:: Agradecimentos ::..
Google xD foi da onde que tirei... + sei que essas aulas são de Anderson Porto...
Ir para o topo Ir para baixo
https://centralrpgmaker.forumeiro.com
 
Aula 8: Acesso a Atributos
Ir para o topo 
Página 1 de 1
 Tópicos semelhantes
-
» Aula 9: Introdução ao WSW
» Aula 10: Complementos
» Aula Extra 1: Nomeclaturas
» Aula Extra 4: Módulos
» Aula 7: Nossa 1ª Scene!

Permissões neste sub-fórumNão podes responder a tópicos
 :: Rpg Maker XP :: Tutoriais-
Ir para: