Repaso: tarjeta de biblioteca
Parte de la sección Programación orientada a objetos del Journey de Swift de Coddy. Lección 6 de 57.
Desafío
IntermedioCompleta la clase LibraryCard. Su inicializador recibe el miembro name y un limit (3 de forma predeterminada) y comienza sin libros prestados. borrow(_:) devuelve true y añade el título, a menos que la tarjeta haya alcanzado su límite o ya contenga ese título. giveBack(_:) devuelve true cuando ha eliminado el título. status() 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 libro prestado.
El código proporcionado lee el nombre, el límite (o una línea vacía para usar el valor predeterminado) y después los comandos +title o -title. Imprime ok o no para cada comando y, finalmente, status().
Tu código debe ir en LibraryCard.swift. main.swift contiene el código de entrada/salida proporcionado y no se puede editar.
Pruébalo tú mismo
// Código de entrada/salida suministrado: déjalo tal cual
var input: [String] = []
while let line = readLine() { input.append(line) }
let card = input[1].isEmpty ? LibraryCard(name: input[0]) : LibraryCard(name: input[0], limit: Int(input[1])!)
for cmd in input.dropFirst(2) {
let title = String(cmd.dropFirst())
let done = cmd.hasPrefix("+") ? card.borrow(title) : card.giveBack(title)
print(done ? "ok" : "no")
}
print(card.status())
Todas las lecciones de Programación orientada a objetos
1Clases y objetos
Trabajar con archivosDefinir clasesMétodos y selfInicializadoresLas clases son referenciasRepaso: tarjeta de biblioteca4Encapsulación
Control de accesoSolo lectura desde fueraProtección del estadoInicializadores que pueden fallarRepaso - Cuenta bancaria7Polimorfismo y genéricos
PolimorfismoConversión de tiposFunciones genéricasTipos genéricosRepaso - Calculadora de formas2Structs y tipos por valor
StructsSemántica de valoresMétodos mutablesStruct o claseRepaso - elemento del inventario5Herencia
SubclasesSobrescritura de métodosInicializadores y superfinal y jerarquíasRepaso: jerarquía de empleados8Protocolos estándar
CustomStringConvertibleEquatableComparableHashableRepaso - Ordenamiento personalizado11Proyecto: Gestión de bibliotecas
Libros y miembrosPréstamo de librosPractica por tu cuenta: Playground de Swift