Revisão - Cartão da Biblioteca
Parte da seção Programação orientada a objetos do Journey de Ruby da Coddy. Lição 6 de 57.
Desafio
MédioComplete a classe LibraryCard. initialize(name, limit = 3) armazena o nome e o limite de empréstimos e começa sem títulos emprestados. borrow(title) retorna true e adiciona o título, a menos que o cartão esteja no limite ou já contenha esse título; nesse caso, retorna false. give_back(title) retorna true quando removeu o título. to_s retorna Ada: 2/3 (Dune, Emma) com os títulos na ordem dos empréstimos, ou Ada: 0/3 quando nada foi emprestado.
O código fornecido lê o nome e o limite (- para o padrão), depois os comandos +title ou -title. Ele imprime ok ou no para cada comando e, por fim, o cartão.
Seu código deve ficar em library_card.rb. main.rb contém o código fornecido de entrada/saída e não pode ser editado.
Experimente você mesmo
require_relative 'library_card'
# Código de entrada/saída fornecido: mantenha-o como está
input = []
while (line = gets)
input << line.chomp
end
card = input[1] == "-" ? LibraryCard.new(input[0]) : LibraryCard.new(input[0], input[1].to_i)
input.drop(2).each do |cmd|
title = cmd[1..]
done = cmd.start_with?("+") ? card.borrow(title) : card.give_back(title)
puts done ? "ok" : "no"
end
puts card
Todas as lições de Programação orientada a objetos
1Classes e Objetos
Trabalhando com ArquivosDefinindo ClassesVariáveis de InstânciaMétodos e selfto_s e inspectRevisão - Cartão da Biblioteca4Encapsulamento
Métodos privadosMétodos protegidosSetters privadosProtegendo o estadoRevisão - Máquina de venda automática7Polimorfismo e Duck Typing
PolimorfismoDuck TypingMétodos Abstratoscase e ClassesRevisão - Métodos de Pagamento2Acessores e self
Leitores e GravadoresSetters Personalizadosself nos MétodosIdentidade e IgualdadeRecapitulação - Lista de Contatos5Herança
SubclassesSobrescrita de métodosChamando superis_a? e ancestraisRevisão - Folha de pagamento da equipe8Métodos Especiais
Igualdade e hashMétodos de OperadoresIndexação e AdiçãoColeções PersonalizadasRevisão - Frações11Projeto: Gerenciamento de Biblioteca
Livros e MembrosEmpréstimo de LivrosPratique por conta própria: Compilador de Ruby online