O que são Classes?
Como foi dito no início das aulas, Ruby é uma linguagem interpretada por objetos, as Classes são estes Objetos. A função das variáveis é alojar determinados valores, qualquer valor que possa ser representado por uma variável é uma classe.
Definido uma Classe
Classes são na verdade Constantes, variáveis fixas com determinados dados em si, portanto cada classe deve ter seu nome começando com uma letra maiúscula. Assim como as variáveis, as classes também devem ser declaradas, para criar ou alterar uma classe é utilizado o comando 'class' seguido do nome da classe e logo depois das alterações feitas naquela classe utiliza-se um 'end' para definir o fim das alterações feitas naquela classe.
Exemplo:
classe Nova
end
Como não existe nenhuma classe chamada Nova, eu estou declarando-a. Note que se for utilizando o método 'p' em 'Nova' antes de sua declaração(desta forma: 'p Nova') correrá um erro, já que a constante 'Nova' ainda não foi declarada, porém, se for utilizado este mesmo comando após a declaração da classe, o programa irá detectar a constante e irá exibir "Nova" na janelinha, pois o que foi enviado ao método nova foi apenas a constante Nova.
Somente com a classe Nova não iremos conseguir muita coisa, vamos criar uma nova variável logo após a declaração da classe nova, chamarei-a de 'classe_nova', mas você pode nomeá-la como bem entender.
class Nova
end
classe_nova = Nova.new
Utilizando o método 'new' eu fiz com que 'classe_nova' se transformasse em um novo objeto da classe Nova, ou uma outra Nova.
OBS1: Métodos serão vistos ainda nesta aula. OBS2: O método 'new'(assim como alguns outros métodos básicos) é provido à todas as classes automaticamente.
Para que fique mais claro o que eu fiz acima vou dar um exemplo:
ary = [2, 4]
str = "texto"
Acima eu criei duas variáveis, cada um como um novo objeto das classes Array e String; ou seja, eu defini as duas novas variáveis como novas classes Array e String sem alterar as constantes. Foi o mesmo que eu fiz em 'classe_nova = Nova.new'. A única diferença é que Array e String são classes padrões do Ruby e por isso podem ser criadas desta forma mais fácil, porém, agora não à diferença alguma entre Array, String e Nova.
Abaixo, mais um exemplo:
ary = Array.new
str = String.new
Acima eu criei uma nova Array e uma nova String, se você utilizar o método 'p' para verificar os valores de 'ary' e 'str' os retornos serão: '[]' e ' "" '; pois serão uma Array e uma String recém criadas, sem nenhum valor nelas, logo, o exemplo acima seria o mesmo que utilizar o seguinte código:
ary = []
str = ""
OBS: Note que, nestes dois exemplos acima, se você utilizar o método 'print' ao envéz de 'p' não será exibido nada, pois 'print' lê os dados da forma como o programa irá exibir no jogo, e um texto vazio(String vazia, "") e um grupo de valores sem nenhum valor(Array vazia, []) não são nada.
Agora que já expliquei a função do método 'new' e a diferença entre a constante e sua utilização, podemos voltar à nossa nova classe, a 'Nova'. Vou citar novamente o exemplo para recuperarmos a concentração no mesmo:
class Nova
end
classe_nova = Nova.new
Se você utilizar o método 'p' em 'classe_nova' após sua declaração irá obter o seguinte resultado: '#