Ruby Introdução. Ruby O que é Ruby? Interpretada / Orientada a Objetos Sintaxe simples / Case...
Transcript of Ruby Introdução. Ruby O que é Ruby? Interpretada / Orientada a Objetos Sintaxe simples / Case...
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 Testesrequire '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