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)
Loops

For
i=0
puts a
f=5
a++
for i in (i..f)
end
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"
"city"
=> "34 Airport Rd",
=> "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
end
=> fim do método
=> 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


Sobrecarga de métodos


Não existe em Ruby!
Variável de Classe


Operador: <
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'
def test_fatorial_6
require "Fatorial"
assert_equal(1,@fatorial.fatorial(1), "fat(6) = 24")
class TC_Fatorial < Test::Unit::TestCase
end
def setup
def test_numero_negativo
@fatorial = Fatorial.new
assert_raise(SystemStackError) do
puts "setup"
@fatorial.fatorial(-1)
end
end
def test_fatorial_0
end
assert_equal(1,@fatorial.fatorial(0), "fat(0) = 1")
end
def teardown
def test_fatorial_1
@fatorial = nil
assert_equal(1,@fatorial.fatorial(1), "fat(1) = 1")
puts "teardown"
end
end
end
Download

Ruby