IT Mídia
Notícias em destaque

Um pouco sobre classes

20 de fevereiro de 2011 13:26

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:

  • Estado: representado pelas variáveis de instâncias do objeto, ou seja, os valores que esse objeto carrega enquanto existe.
  • Comportamento: ações existentes no objeto que são disparados através dos métodos definidos na classe do objeto.

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:

TAGS: ruby

Sobre Fernando Hamasaki de Amorim

Desenvolvedor sênior na Locaweb, Fernando Hamasaki de Amorim atua em projetos utilizando Ruby e Rails. Pós-graduado em Tecnologias Web Fiap, trabalha desde 2000 com desenvolvimento web, onde já desenvolveu em várias plataformas e linguagens, como .NET, Java, JavaScript, PHP e ASP. Também foi palestrante do FISL e da RubyConf Brasil. Neste espaço, abordará temas envolvendo o desenvolvimento por meio da linguagem Ruby.

Entre em contato com Fernando Hamasaki de Amorim

Parceiros

Portais: IT Mídia | IT Web | Saúde Web

Publicações: InformationWeek Brasil | CRN Brasil | FH

Fóruns: IT Forum | IT Forum + | IT Business Forum | Saúde Business Forum