POO em Ruby - Parte 2 | OneBitCode

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 leitura
  • attr_writer - apenas escrita
  • attr - 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:

  1. produto.rb - Classe Produto com atributos nome e preço
  2. mercado.rb - Classe Mercado que recebe um Produto no initialize
  3. 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

© 2023 OneBitCode - Todos os direitos reservados

Transformando iniciantes em desenvolvedores profissionais

Postar um comentário

0 Comentários