280 likes | 386 Views
Ruby. Introdução. Ruby. O que é Ruby? Interpretada / Orientada a Objetos Sintaxe simples / Case Sensitive Herança Única Blocos delimitados por { ... } ou do ... end Não requer declaração de variáveis É Livre!. Ruby. Operadores aritméticos: + - / * ** % Operadores relacionais:
E N D
Ruby Introdução
Ruby • O que é Ruby? • Interpretada / Orientada a Objetos • Sintaxe simples / Case Sensitive • Herança Única • Blocos delimitados por { ... } ou do ... end • Não requer declaração de variáveis • É Livre!
Ruby • Operadores aritméticos: • + - / * ** % • Operadores relacionais: • == != > < >= <= • Operadores lógicos: • and or
Ruby • Tipos Númericos • Integer • 2.is_a?(Integer) • Float • 2.5.is_a?(Float)
Ruby • String • “Hello World” • “Hello World” + “ Hello Bahia” • “Hello World ” * 3 (Estranho não?)
Ruby • Variáveis • Exemplo: nome = “João” • Dinamicamente tipada • nome = “João” (String) • nome = 25.6 (Float) • Constantes • Iniciam com primeira letra maiúscula e pode ser redefinida • Pi = 3,14
Ruby • Funções def soma(x,y) x+y end • Métodos Predicados • Terminam com ? e retornam true ou false • Utilizados para testar uma condição • Ex: [1,2,3].include? 1 => true
Ruby • Condicional - IF • If ... elsif ... else ... End • Ex: If 2>1 and 2>0 puts “oi” elsif 2>3 puts “oi2” else puts “oi3” end
Ruby • Condicional – Unless • Significa “Se não” • Negativa do if • Ex: achou = true unless achou puts “não achou” else puts “achou” end
Ruby • Loops 4.times do puts “oi\n” end
Ruby • Loops • While: while(a<5) puts a a++ end • Loops • For i=0 f=5 for i in (i..f) puts i end
Ruby • Arrays – Índice inicia em 0 • num = [1,2,3,4] • num[0] => 1 • num << 45 OU num.push 45 • num.sort • num.reverse • num.length
Ruby • Arrays – Iterator friends = ["Melissa", "Jeff", "Ashley", "Rob"] friends.each do |friend| puts "I have a friend called " + friend end
Ruby • Hashes friend = { "first name" => "Jeffrey", "last name" => "Biggs", "address" => "34 Airport Rd", "city" => "Toronto", :province" => "Ontario" } • puts friend[city] => “Toronto”
Ruby • Exercício
Ruby Classes Objetos
Orientação a Objetos • Em Ruby .... • Classe: String • Objeto: “456” • Método: to_i • Exemplo: • “oi”.methods
Em Ruby... • Declarando Classes #Classe Address.rb Class Address => Define uma classe def initialize(street) => Construtor com um parâmetro @street = street => @street variável de instância privada end => fim do método end => fim da classe
Em Ruby... • Com instanciar a classe? • addr = Address.new(“Av. Adhemar de Barros”) • Métodos “Especiais” • getters => Objetivo de recuperar o valor de um detrminado atributo do objeto • setter => Objetivo de setar o valor de um determinado atributo do objeto
Em Ruby... • Ainda na classe Address def street @street end def street=(value) @street = value end
Em Ruby... • Podemos fazer... • addr.address => Retorna “Av. Adhemar de Barros” • addr.address= “Campo Grande” • addr.address => Retorna “Campo Grande”
Em Ruby... • Exemplo: Class Person attr_accessor :first_name, :address def initialize @first_name = “ ” @address = Address.new end end
Em Ruby... • Herança • Operador: < • Sobrecarga de métodos • Não existe em Ruby! • Variável de Classe • Iniciam com @@ • Método de classe • Nome_classe.Nome_Metodo
Ruby • Exercício
Ruby Testes Unitários
Ruby • Testes Unitários ???????
Ruby - Classe a ser testada class Fatorial def fatorial(n) if(n == 0 or n==1) 1 else n*fatorial(n-1) end end end
Ruby – Unidade de Testes require 'test/unit' require "Fatorial" class TC_Fatorial < Test::Unit::TestCase def setup @fatorial = Fatorial.new puts "setup" end def test_fatorial_0 assert_equal(1,@fatorial.fatorial(0), "fat(0) = 1") end def test_fatorial_1 assert_equal(1,@fatorial.fatorial(1), "fat(1) = 1") end def test_fatorial_6 assert_equal(1,@fatorial.fatorial(1), "fat(6) = 24") end def test_numero_negativo assert_raise(SystemStackError) do @fatorial.fatorial(-1) end end def teardown @fatorial = nil puts "teardown" end end