Agora vamos criar e usar um objeto Anfitrião:
Uma vez criado o objeto g
, ele se lembra de que o nome é João. Mmm, e se
quisermos acessar diretamente o nome?
Nope, não conseguimos.
Objeto por Baixo da Pele
As variáveis de instância escondem-se dentro do objeto. Não estão assim tão bem escondidas, podem ser vistas quando se inspeciona o objeto e há outras formas de lhes acessar, mas o Ruby é fiel aos bons costumes da programação orientada a objetos mantendo os dados o mais privados possíveis.
Então, que métodos estão disponíveis para os objetos Anfitrião?
Uau. São muitos métodos. Nós só definimos dois métodos. O que é que
aconteceu? Bem, estes são todos os métodos para os objetos
Anfitrião, uma lista completa, incluindo os que estão definidos nas
super-classes de Anfitrião. Se só quisermos listar os métodos
definidos para a classe Anfitrião, podemos pedir-lhe que não inclua os
métodos dos seus ancestrais passando-lhe o parâmetro false
, que
significa que não queremos os métodos definidos pelos seus ancestrais.
Há mais coisas a explorar. Vejamos a que métodos pode responder o nosso objeto Anfitrião:
Assim sabemos que responde a diz_ola
, e to_s
(que
significa “converter algo em uma string”, um método que está definido por
padrão para todos os objetos), mas que não reconhece nome
como
método.
Modificando Classes – Nunca é Tarde Demais
E se quisermos ver ou alterar o nome? Ruby oferece uma forma fácil de fornecer acesso às variáveis de um objeto.
Em Ruby, podemos abrir uma classe novamente e alterá-la. As mudanças estarão
presentes em quaisquer objetos criados e até mesmo nos objetos existentes
dessa classe. Então vamos criar um novo objeto e vamos brincar com a sua
propriedade @nome
.
O uso de attr_accessor
definiu dois novos métodos para nós:
nome
para obter o valor e nome=
para alterá-lo.
Saudando a Tudo e a Todos, MegaAnfitriao não Esquece Ninguém!
De qualquer modo este Anfitrião não é assim tão interessante, ele só consegue trabalhar com uma pessoa de cada vez. E se tivéssemos uma classe MegaAnfitriao que pudesse saudar o mundo inteiro, uma pessoa ou uma lista inteira de pessoas?
Vamos escrever isto num arquivo em vez de usar diretamente o interpretador interativo do Ruby (IRB).
Para sair do IRB, digite “quit”, “exit” ou simplesmente pressione “Control+D”.
Salve este arquivo como “ri20min.rb”, e execute-o com o comando “ruby ri20min.rb”. O resultado deverá ser:
Ola Mundo
Adeus Mundo. Volta em breve.
Ola Diogo
Adeus Diogo. Volta em breve.
Ola Alberto
Ola Beatriz
Ola Carlos
Ola David
Ola Ernesto
Adeus Alberto, Beatriz, Carlos, David, Ernesto.
Voltem em breve.
...
...
Há uma série de coisas novas neste exemplo às quais podemos observar mais profundamente