Repaso: tarjeta de biblioteca
Parte de la sección Programación orientada a objetos del Journey de Ruby de Coddy. Lección 6 de 57.
Desafío
IntermedioCompleta la clase LibraryCard. initialize(name, limit = 3) almacena el nombre y el límite de préstamos, y comienza sin títulos prestados. borrow(title) devuelve true y añade el título, a menos que la tarjeta haya alcanzado su límite o ya tenga ese título, en cuyo caso devuelve false. give_back(title) devuelve true cuando elimina el título. to_s devuelve Ada: 2/3 (Dune, Emma) con los títulos en el orden en que se tomaron prestados, o Ada: 0/3 cuando no hay ningún préstamo.
El código proporcionado lee el nombre y el límite (- para usar el valor predeterminado), y después los comandos +title o -title. Imprime ok o no para cada comando y, finalmente, la tarjeta.
Tu código debe estar en library_card.rb. main.rb contiene el código proporcionado de entrada/salida y no se puede editar.
Pruébalo tú mismo
require_relative 'library_card'
# Código de entrada/salida suministrado: déjalo 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 las lecciones de Programación orientada a objetos
1Clases y objetos
Trabajar con archivosDefinir clasesVariables de instanciaMétodos y selfto_s e inspectRepaso: tarjeta de biblioteca4Encapsulación
Métodos privadosMétodos protegidosAsignadores privadosProtección del estadoRepaso: máquina expendedora7Polimorfismo y tipado pato
PolimorfismoTipado patoMétodos abstractoscase y clasesRepaso: métodos de pago2Accesores y self
Lectores y escritoresSetters personalizadosself en los métodosIdentidad e igualdadRepaso: lista de contactos5Herencia
SubclasesSobrescritura de métodosLlamar a superis_a? y ancestrosRepaso - Nómina del personal8Métodos especiales
Igualdad y hashMétodos de operadoresIndexación y adiciónColecciones personalizadasRepaso: fracciones11Proyecto: Gestión de biblioteca
Libros y miembrosPréstamo de librosPractica por tu cuenta: Compilador de Ruby online