POO em Ruby - Parte 2 🏗️
Aula 7 do curso de Ruby da OneBitCode
Require e Require Relative
O require permite carregar outros arquivos Ruby no seu programa, seja para usar gems ou seus próprios arquivos.
Diferenças Importantes
# require busca no path do sistema
require 'animal' # Procura em diretórios do Ruby
# require_relative busca relativo ao arquivo atual
require_relative 'animal' # Procura na mesma pasta
Dica: Use require_relative para seus próprios arquivos e require para gems.
Exemplo de estrutura de arquivos:
meu_projeto/
├── animal/
│ ├── animal.rb
│ └── dog.rb
└── app.rb
# Em app.rb
require_relative 'animal/animal'
require_relative 'animal/dog'
dog = Dog.new
dog.bark
Escopo de Variáveis em Ruby
Variáveis Locais
Começam com letra minúscula ou _
def metodo
local = "só aqui dentro"
end
Variáveis de Instância
Começam com @
class Pessoa
def initialize(nome)
@nome = nome
end
end
Variáveis de Classe
Começam com @@
class Pessoa
@@contador = 0
end
Variáveis Globais
Começam com $
$global = "cuidado!"
Evite usar - podem causar problemas
Atributos com attr_accessor
Simplificando o acesso às variáveis de instância:
class Produto
attr_accessor :nome, :preco
def initialize(nome, preco)
@nome = nome
@preco = preco
end
end
p = Produto.new("Camisa", 50.0)
puts p.nome # "Camisa"
p.preco = 45.0
Alternativas ao attr_accessor
attr_reader- apenas leituraattr_writer- apenas escritaattr- antigo, equivalente a attr_reader
Construtores com Initialize
O método initialize é chamado automaticamente quando um novo objeto é criado.
class Carro
def initialize(modelo, cor)
@modelo = modelo
@cor = cor
puts "Novo carro criado!"
end
end
fusca = Carro.new("Fusca", "Azul")
Boas Práticas com Construtores
- Use para inicializar valores essenciais
- Mantenha o construtor simples
- Valide os parâmetros recebidos
- Documente os parâmetros esperados
🎯 Missão: Sistema de Mercado
Crie um projeto com 3 arquivos:
- produto.rb - Classe Produto com atributos nome e preço
- mercado.rb - Classe Mercado que recebe um Produto no initialize
- app.rb - Arquivo principal que conecta tudo e executa
O Mercado deve ter um método comprar que exibe "Você comprou o produto [nome] no valor de R$[preco]"
Próximos Passos
Na próxima aula, exploraremos tópicos avançados de Ruby:
- Blocks e Procs
- Lambdas
- Módulos e Namespaces
- Mixins
0 Comentários