Skip to content

Instantly share code, notes, and snippets.

@rg3915
Created June 21, 2016 01:26
Show Gist options
  • Save rg3915/0b5a9155944ac9066ab06916bb3e44b3 to your computer and use it in GitHub Desktop.
Save rg3915/0b5a9155944ac9066ab06916bb3e44b3 to your computer and use it in GitHub Desktop.
Ruby Intro

Ruby intro

Objetos

#TUDO É OBJETO
puts 1.class # => Fixnun
puts "123".class  # => String
puts false.class  # => FalseClass

class Carro
end

puts Carro.new.class  # => Carro

Variáveis

# 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}"

Classes

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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment