#TUDO É OBJETO
puts 1.class # => Fixnun
puts "123".class # => String
puts false.class # => FalseClass
class Carro
end
puts Carro.new.class # => Carro
# Variaveis sao referencias a objetos
a = 1
puts a.class # => Fixnum
a = "123"
puts a.class # => String
b = a
puts "ID de B:#{b.object_id} mas o ID de A tambem e:#{a.object_id}"
# Tambem existem pseudo variaveis
c = false
e = false
puts "ID de C:#{c.object_id} e B:#{e.object_id}, e ambos #{c.class}"
#Constantes
INSTRUTOR = "daniel"
# Globais (OBS:nao sao muito usadas)
$curso = "Rails"
#Globais pre-definadas
puts "constantes globais pre-definidas: #{RUBY_VERSION}, #{ENV}, #{RUBY_PLATFORM}"
#Variaveis pre-definadas
puts "ID do processo:#{$$}; programa em execucao:#{$0}"
class MembroFamilia
@@sobrenome = "lopes" # class var
ESPECIE = "humano"
attr_accessor :nome
def initialize(nome)
@nome = nome # instance var
end
# def nome
# @nome
# end
#
# def nome=(nome)
# @nome = nome
# end
def self.sobrenome
@@sobrenome
end
end
humano = MembroFamilia.new("daniel")
puts humano.nome
puts humano.nome = "julio"
puts MembroFamilia.sobrenome
puts MembroFamilia::ESPECIE
class Humano
ESPECIE = "humano"
def bipede?
true
end
end
class MembroFamilia < Humano
@@sobrenome = "lopes" # class var
attr_accessor :nome
def initialize(nome)
@nome = nome # instance var
end
def self.sobrenome
@@sobrenome
end
end
humano = MembroFamilia.new("daniel")
puts humano.bipede?
puts MembroFamilia::ESPECIE
class Pessoa
attr_accessor :nome, :sobrenome, :idade, :orientacao_sexual
def nome_completo
"#{nome} #{sobrenome}"
end
def informacoes_completas
"#{nome} #{sobrenome}, #{idade} anos, #{orientacao_sexual}"
end
def nacionalidade
"brasileiro"
end
public :nome_completo
protected :nacionalidade
private :informacoes_completas
end
class Instrutor < Pessoa
def initialize(nome,sobrenome)
@nome, @sobrenome = nome, sobrenome
end
def nasceu_em
"#{@nome} é #{self.nacionalidade}"
end
end
pessoa = Pessoa.new
pessoa.nome = "Daniel"
pessoa.sobrenome = "Lopes"
puts pessoa.nome_completo
puts pessoa.informacoes_completas
puts pessoa.nacionalidade
# daniel = Instrutor.new("Daniel", "Lopes")
# puts daniel.nasceu_em
# puts daniel.nome_completo