quinta-feira, 13 de novembro de 2008

[Unit-1 | Lição-12] Métodos

Métodos
Métodos são o que fasem as classes funcionarem, sem eles a programação não seria possível. Basicamente os métodos são como comandos que fasem as classes funcionarem, sem eles as classes seriam inúteis, assim como sem as classes os métodos perderiam grande parte de seu "poder". Cada método tem sua função específica, que pode ter um grande e importante papel no seu jogo, assim como pode também ser algo bem simples. Assim como as variáveis, os métodos precisam ser declarados, geralmente se utilizam métodos dentro das classes, mas também podem ser utilizados fora das classes. Métodos declarados dentro das classes pertencem única e exclusivamente àquela classe, se você deseja utilizar este método a partir de outra classe deverá copiar o método e colar nesta outra classe.
Para declarar um método você deve utilizar a palavra 'def', seguida do nome do método que você está criando, e depois do conteúdo do método um 'end' para definir o fim do método. O nome do método deve ser constituído de apenas letras minúsculas e underlines(_).
Exemplo:
def nome_do_método
end

Para chamar um método já declarado, deve-se chamar simplesmente pelo nome do mesmo, no caso do exemplo acima, para chamar o método declarado deveria ser utilizado a simples expressão "nome_do_método". Quando um método é chamado, ele irá executar todos os comandos que estiverem dentrod ele.
Exemplo de uso de um método: (Você copiar o exemplo abaixo para seu editor e testar o jogo para ver o que acontecerá)
def aumentar_variavel
variavel += 20
end

variavel = 10
aumentar_variavel
p variavel # => 30

No exemplo acima, foi executado o comando 'variavel += 20' quando foi chamado o código 'aumentar_variavel', logo, subentende-se que quando um método é chamado todo o código que estava dentro dele fosse para o local onde o método foi chamado. Métodos também podem chamar outros métodos dentro de seu código, mas nunca podem chamar a si mesmos, neste caso ocorreria um erro.
Exemplo:
def aumentar_variavel
variavel += 20
aumentar_mais_ainda
end
def aumentar_mais_ainda
variavel += 30
end

variavel = 10
aumentar_variavel
aumentar_mais_ainda
p variavel # => 90

Se você não entendeu o porquê de 'variavel' ter o valor de 90 no final do código, vou esplicar mais detalhadamente o que aconteceu:(Se entendeu, pode pular esta parte de verde)

Primeiro, foram declarados os métodos 'aumentar_variavel' e 'aumentar_mais_ainda', 'aumentar_variavel' irá aumentar o valor de 'variavel' em 20 e depois irá chamar o método 'aumentar_mais_ainda' que, por sua vez, aumenta em 30 a 'variavel', logo, o método 'aumentar_variável' terá a função de aumentar 'variavel' em 50. Depois, 'variavel' foi declarado como '10'(Se esta linha não existir, haverá um erro ao chamar um dos métodos, pois 'variável' não estará declarada ainda) Então é chamado o método 'aumentar_variavel', que aumenta o valor de 'variavel' em 50, passando seu valor para 60(porque 'variavel' já tinha o valor de 10, e 10 + 50 = 60.. =P). E em seguida é chamado o método 'aumentar_mais_ainda', que aumenta o valor de 'variavel' em 30, passando seu valor para 90.

Substituição de Métodos
Se você tantar declarar um método já declarado, o método anterior será apagado, e o novo ficará no lugar.
Exemplo:
def aumentar_variavel
variavel += 20
aumentar_mais_ainda
end
def aumentar_mais_ainda
variavel += 30
end

def aumentar_variavel
variavel -= 20
end

variavel = 10
aumentar_variavel
aumentar_mais_ainda
p variavel # => 20

Quebra de Métodos/Retorno
Você pode "quebrar" a execução de um método utilizando o comando "return". Quando "return" for executado, nenhum código que vir depois dele num mesmo método será executado.
Exemplo:
def aumentar_variavel
variavel += 20
if variavel == 30
return
end
variavel += 40
end

variavel = 10
aumentar_variavel
p variavel # => 30

No exemplo acima, o comando "return" que está no método 'aumentar_variavel' será executado se o valor de 'variavel' for igual a 30, como 'variavel' foi declarada como 10 e antes da condição o valor é aumentado em 20, a expressão condicional retornará true e assim a condição será executada, então o comando 'return' fará com que a execução do método seja "quebrada" e assim, o comando 'variavel += 40' não será executado. Se você alterar o valor da declaração de 'variavel', a condição retornará true, e assim, o comando 'return' não será executado, e sim o comando 'variavel += 40'.
O comando "return" não serve somente para quebrar a execução do método, mas também servirá para retornar um determinado valor que for utilizado juntamente com ele. Como você já aprendeu sobre retorno na lição sobre condições, retorno é quando o comando é substituido pelo valor de retorno, no caos dos métodos, o comando de chamar o método será substituido pelo valor de retorno
Exemplo:
def vinte return 20 end variavel = vinte p vatiavel # => 20 p vinte # => 20

É claro que, como o método vinte será substituído por '20', eu poderia utilizá-lo de várias formas, como por exemplo esta:
def vinte
return 20
end

variavel = 50 + vinte

Outro exemplo de retorno:
def metodo1
return "Dark"
end

def metodo2
return "Chocobo"
end

var1 = metodo1 + metodo2
var2 = "Dark" + metodo2
var3 = metodo1 + "Chocobo"
var4 = "Dark" + "Chocobo"
var5 = "DarkChocobo"

Todas as 5 variáveis(var1, var2, var3, var4 e var5) terão um mesmo valor em comum, a string "DarkChocobo".

Eviando Valores aos Métodos
Também é possível enviar determinados valores ao chamar os métodos. Alguns métodos necessitam de alguns valores para serem executados corretamente. Para que um o necessite de um valor você deve, ao declará-lo, declarar também variáveis locais dentro de um parênteses, logo após o nome do método(as para isto apenas nomeie as variáveis separando-as por vírgulas).
Exemplos de métodos que necessitam de um ou mais valores:
def metodo1(valor)
end

def metodo2(valor1, valor2, valor3)
end

OBS: Cada método pode necessitar de quantos valores for necessário.
Para chamar um método que precisa de algum valor, você deve determinar este valor logo após chamar o método(separados por um espaço); você pode usar qualquer tipo de valor. Quando um método necessitar de mais de um valor, você deve usar vírgulas para selará-los.
Exemplos:
metodo1 1
metodo1 "string"
metodo1 [1, "array"]
metodo2(1, 2, 3)
metodo2(0, "texto", ["array"])


OBS: Note que em alguns exemplos foi usado parênteses e em outros não, não é obrigatório o uso de parênteses ao enviar os valores aos métodos, porém, usando-os você deixa o seu script mais organizado, por isto é muito comum encontrá-los em exemplos como este.
Quando um valor é enviado para um método desta forma, o método faz com que as variáveis locais que você declarou tomem o valor dos valores enviados ao método.
Exemplo:
def meu_nome(str)
p str + "Chocobo"
end

meu_nome("Dark")

No exemplo acima, a mensagem que será exibida é "DarkChocobo", pois ao chamar o método 'meu_nome' enviando a string "Dark", você fará com que o método 'meu_nome' seja executado considerando que 'str' seja "Dark", e assim 'str + "Chocobo"' será "DarkChocobo".
Outro exemplo de envio de valores aos métodos:
def juntar_arrays(a, b)
return a + b
end

ary1 = [1, 2, 3, 4]
ary2 = [5, 6, 7, 8]
p juntar_arrays(ary1, ary2) # => [1, 2, 3, 4, 5, 6, 7, 8]

Alias
O comando Alias serve para alterar o nome de um método, para usá-lo simplesmente use a palavra 'alias', seguido do novo nome do método, e por último o nome antigo do método.
Exemplo:
def darkchocobo
print "Você chamou o método \"darkchocobo\"!"
end

alias dc darkchocobo

dc # => Você chamou o método "darkchocobo"!

Nenhum comentário: