Informe de la biblioteca
Parte de la sección Programación orientada a objetos del Journey de Swift de Coddy. Lección 54 de 57.
Desafío
IntermedioAñade el comando REPORT. Mantén todos los comandos de los pasos anteriores funcionando exactamente como antes.
REPORT: respondebooks: 3, borrowed: 1, y después una línea por miembro en orden alfabético:ada: Dune, Emma, con los títulos en el orden de préstamo, obo: none.
El código proporcionado pasa cada línea de entrada a library.handle(_:) e imprime cada respuesta devuelta en su propia línea. Los nombres de los miembros son palabras individuales en minúsculas, los identificadores de los libros son números enteros y la entrada solo contiene los comandos descritos hasta ahora. Cualquier otro comando responde unknown command.
Tu código va en Book.swift, Member.swift y Library.swift. main.swift contiene el código proporcionado de entrada/salida y no se puede editar.
Pruébalo tú mismo
// Código de entrada/salida suministrado: déjalo como está
var input: [String] = []
while let line = readLine() { input.append(line) }
let library = Library()
for line in input {
for reply in library.handle(line) { print(reply) }
}
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