4. The Ruby Way NomesDeClasse nomes_de_metodos e nomes_de_variaveis metodos_fazendo_pergunta? metodos_perigosos! @variaveis_de_instancia @@variaveis_de_classe $variaveis_globais ALGUMAS_CONSTANTES ou OutrasConstante
5. Tudo é Objeto 0.zero? # => true 1.zero? # => false 1.abs # => 1 -1.abs # => 1 1.methods # => lista de metodos do objeto 1 10.class # => Fixnum String.class nil.class
6. Tipagem Forte Result = 1 + “2” TypeError: String can't be coerced into Fixnum from (irb):1:in `+' from (irb):1 from :0
7. Poo Ruby Open Class Mensagens Metodos Como Objetos Fabrica de Objetos Duck Type Modulos
8. Open Class Podemos abrir as classes e adicionar metodos! Class Homem attr_access :nome end class Mulher def amar puts 'amar' end end class Mulher def fazer_menino(homem) puts 'fazendo menino com #{homem.nome}' end end
9. Mensagens Um objeto em ruby envia mensagens, não chama metodos class ExecutorDeClasses def executar(obj,metodo) obj.send(metodo) end end exec = ExecutorDeClasses.new exec.executar Mulher.new,:amar
11. Duck Type class ImpostoEua def calcular puts "imposto baixo" end end class ImpostoBrasil def calcular puts 'imposto alto pra caralho!!' end end
12. Duck Type def calcular_imposto(objeto) objeto.calcular end calcular_imposto ImpostoEua.new calcular_imposto ImpostoBrasil.new