Referência na ciência da computação é registro que aponta o local em que se encontram armazenados os dados que identificam outro dado. Nas linguagens tradicionais variáveis são como canecas fixas e os primitivos são pequenos o suficiente para caber dentro da caneca. Os objetos são grandes para caber dentro de variáveis. Variáveis guardam números que localizam um objeto e a localização do objeto é chamada de referência. O Ruby possui apenas objetos então variáveis referenciam outros objetos.
Exemplo:
Neste cenário temos um bebê recém nascido que precisa ser registrado no cartório, para isto vamos criar um objeto bebê e através de um método de outro objeto chamado cartório vamos cadastrar os dados do bebê referenciando o objeto ao nosso bebê, tenha em mente que Ruby possui apenas objetos deste modo não possuímos tipos primitivos como outras linguagens de programação e não precisamos definir o tipo de cada objeto quando fazemos uma referencia a uma variável.
Ruby
#!/usr/bin/env ruby
# Desenvolvimento Aberto
# ClassesReferencia.rb
# Define classe bebê
class Bebe
# Define atributos
attr_accessor :codigo, :nome, :peso, :tamanho, :nomepai, :nomemae, :genero
end
# Define classe cartório
class Cartorio
# Cria método da classe(estático)
# Transfere objetos por referencia
def self.registro(codigo, dados, bebeRef )
# Alimenta objeto bebe
bebeRef.codigo = codigo
bebeRef.nome= dados[0]
bebeRef.peso= dados[1]
bebeRef.tamanho= dados[2]
bebeRef.nomepai= dados[3]
bebeRef.nomemae= dados[4]
bebeRef.genero= dados[5]
# Imprime registro
puts "Registro:" + String(bebeRef.codigo)
puts "nome: " + bebeRef.nome
puts "Peso: " + bebeRef.peso + " tamanho: " + bebeRef.tamanho
puts "Genero: " + bebeRef.genero
puts "Pai: " + bebeRef.nomepai
puts "mãe: " + bebeRef.nomemae
end
end
# Cria instância do Bebê
bebe = Bebe.new
# Preenche ficha do cartório
fichaRegistro = ["Samanta Amaral", "2.8kg", "36cm",
"Roberto Amaral", "Marcia Amaral","Feminino" ]
# Registra bebê
# Passa objeto ficha e objeto bebe por referencia
Cartorio.registro(123456, fichaRegistro, bebe)


