Novo OS 2.0 traz email integrado e aplicativos Android para o PlayBook
Boatos: Microsoft pode ter Office para iPad
Guia de salários: carreira em e-commerce pode pagar até R$ 16 mil
Google ignora controles de privacidade do IE, diz Microsoft
iPad 3 terá SoC Apple A5X
Lista de falhas: iPad 2 é mais seguro que Kindle Fire
Fundador do Megaupload é solto pela justiça
Anonymous: conheça os 10 principais fatos do grupo
Anônimos, trolls e fakes: dicas de etiqueta para lidar na internet
Especial Carreiras em TI: entenda o que faz um arquiteto de solução
Solução capta e reporta falhas em softwares
Guia de salários: profissionais de help desk ganham até R$ 16,7 mil

Pode-se dizer que tudo é objeto no Ruby: cada valor é um objeto ou se comporta como um objeto.
Uma classe define um grupo de métodos ao qual o objeto responde e a cada objeto é uma instância de uma classe. As classes possuem variáveis de instâncias, que armazenam valores específicos de um único objeto e não são acessíveis diretamente fora do objeto.
Dessa forma, cada objeto possui estado e comportamento:
Escrevendo um pouco de código fica mais fácil de entender. Vamos criar uma classe chamada Dog:
Para criar uma instância da classe Dog, usamos o método new:
Por enquanto esse cachorro não tem nenhum comportamento. Vamos fazê-lo latir e dormir (meus cachorros são muito preguiçosos, eles dormem muito):
Através do comando def definidos os métodos bark e sleep. Agora podemos chamar esses métodos no nosso objeto d:
Queremos definir características para cada objeto Dog. Então quando instanciarmos um novo cachorro iremos passar seu nome e sua raça. Fazemos isso através do método initialize:
O método initialize é chamado automaticamente sempre que usamos o método de classe new para criar uma nova instância de uma classe. Todos os parâmetros passados para o método new serão repassados para o método initialize.
Dentro do método initialize, os parâmetros recebidos são atribuídos para as variáveis de instância @name e @breed. O nome das variáveis de instância iniciam sempre com arroba (@), pertencem somente ao objeto que foi instanciado e são não possuem acesso direto fora do objeto.
A partir de agora, para criar uma nova instância da classe Dog é obrigatório o fornecimento de dois parâmetros na chamada do método Dog.new. Se os parâmetros não forem passados, você obterá o seguinte erro:
Podemos definir o método to_s para exibir as características de um cachorro:
Então criamos instâncias distintas da classe Dog:
Note que o método puts chama implicitamente o método to_s de Dog. As duas linhas de código abaixo produzem o mesmo resultado:
É importante ressaltar que as variáveis de instância de um objeto podem ser acessadas somente pelos métodos de instância daquele objeto. Em outros posts irei falar sobre métodos de classes, os quais não conseguem enxergar as variáveis de instância de um objeto.
Vamos incrementar os métodos bark e sleep para usar a variável @name:
Para finalizar, instanciamos nossa última versão da classe Dog e chamamos seus métodos:
No próximo post iremos incrementar a classe Dog com acessores e modificadores de atributos.
Referências:
Desenvolvedor sênior na Locaweb, empresa na qual está desde 2007, Fernando Hamasaki de Amorim trabalha desde a criação até a arquitetura, modelagem, análise e integração de sistemas e aplicativos na companhia. Graduado em Tecnologia em Informática pela UniSant'Anna, o profissional possui pós-graduação em Tecnologias Web com Ênfase em Java pela Fiap. Já atuou em diversas outras companhias, tais como a TV Online, empresa brasileira pioneira em transmissões ao vivo e SAC Sistemas, que desenvolve ERP. Neste espaço, abordará temas envolvendo o desenvolvimento por meio da linguagem Ruby.
Inovação, tecnologia e futurismo
Bráulio Medina
SIRI, MAJEL, EVI - Colhemos os frutos da semântica e inteligência artificial
Mundo RIA
Zaedy Sayão
Construindo Mobile Apps com Sencha Touch e Phonegap - Parte 1
Conversando sobre Tecnologia
Anderson Rocha
Transpondo Fronteiras da Multidisciplinaridade para Lidar Com Falsificações de Imagens e Vídeos no Século XXI*
Mídias Sociais e Negócios - Direto do Vale do Silício
Marcio Saito
7 Ações em Mídia Social para quem tem mais o que fazer
Expedição WDC: o diário do sinal de internet no Brasil
Expedição WDC
Pegue uma carona na Expedição WDC/Abranet