Quando comecei a refatorar meu código, ele parou de funcionar. Voltei atrás nos exercícios, mudei os nomes, e deixei tudo como nos exemplos, mas ainda não está funcionando. Poderiam me ajudar? (detalhe: está tudo separado em arquivos diferentes)
class Livro
attr_reader :titulo, :preco, :ano, :reimpressao, :editora, :tipo
def initialize(titulo, preco, ano, reimpressao, editora, tipo)
@titulo = titulo
@ano = ano
@reimpressao = reimpressao
@preco = calcula_preco(preco)
@editora = editora
@tipo = tipo
end
def to_csv
"#{@titulo}, #{@ano}, #{@preco}"
end
def reimpressao?
@reimpressao
end
end
require_relative "livro"
require_relative "estoque"
def newsletter(livro)
if livro.ano < 1999
puts "Liquidação"
puts livro.titulo
puts livro.preco
puts livro.reimpressao?
end
end
algoritmos = Livro.new("Algoritmos", 100, 1998, true, "editora", "livro")
arquitetura = Livro.new("Introdução À Arquitetura e Design de Software", 70, 2011, true, "editora", "livro")
programmer = Livro.new("The Pragmatic Programmer", 100, 1999, true, "editora", "livro")
ruby = Livro.new("Programming Ruby", 100, 2004, true, "editora", "livro")
revistona = Livro.new("Revista de Ruby", 10, 2012, true, "Revistas", "revista")
estoque = Estoque.new
estoque << algoritmos << algoritmos << ruby << programmer << arquitetura << ruby << ruby << revistona << revistona
estoque.vende ruby
estoque.vende algoritmos
estoque.vende algoritmos
estoque.vende revistona
puts estoque.livro_que_mais_vendeu_por_titulo.titulo
puts estoque.revista_que_mais_vendeu_por_titulo.titulo
module Contador
def <<(livro)
push(livro)
if @maximo_necessario.nil? || @maximo_necessario < size
@maximo_necessario = size
end
self
end
attr_reader :maximo_necessario
end
require_relative "contador"
class Estoque
attr_reader :livros
def initialize
@livros = []
@vendas = []
@livros.extend Contador
end
def que_mais_vendeu_por(tipo, &campo)
@vendas.select { | l | l.tipo == tipo}.sort {|v1,v2| quantidade_de_vendas_por(v1, &campo) <=> quantidade_de_vendas_por(v2, &campo)}.last
end
def livro_que_mais_vendeu_por_titulo
que_mais_vendeu_por("livro", &:titulo)
end
def livro_que_mais_vendeu_por_ano
que_mais_vendeu_por("livro", &:ano)
end
def livro_que_mais_vendeu_por_editora
que_mais_vendeu_por("livro", &:editora)
end
def revista_que_mais_vendeu_por_titulo
que_mais_vendeu_por("revista", &:titulo)
end
def revista_que_mais_vendeu_por_ano
que_mais_vendeu_por("revista", &:ano)
end
def revista_que_mais_vendeu_por_editora
que_mais_vendeu_por("revista", &:editora)
end
def exporta_csv
@livros.each do |livro|
puts livro.to_csv
end
end
def mais_baratos(valor)
@livros.select do |livro|
livro.preco <= valor
end
end
def total
@livros.size
end
def <<(livro)
@livros << livro if livro
self
end
def vende(livro)
@livros.delete livro
@vendas << livro
end
def maximo_necessario
@livros.maximo_necessario
end
end