Revisão - Cartão da Biblioteca
Parte da seção Programação Orientada a Objetos do Journey de Swift da Coddy. Lição 6 de 57.
Desafio
MédioComplete a classe LibraryCard. Seu inicializador recebe o membro name e um limit (padrão 3) e começa sem livros emprestados. borrow(_:) retorna true e adiciona o título, a menos que o cartão esteja no limite ou já contenha esse título. giveBack(_:) retorna true quando removeu o título. status() retorna Ada: 2/3 (Dune, Emma) com os títulos na ordem em que foram emprestados, ou Ada: 0/3 quando nada foi emprestado.
O código fornecido lê o nome, o limite (ou uma linha vazia para usar o padrão) e, em seguida, os comandos +title ou -title. Ele imprime ok ou no para cada comando e, por fim, status().
Seu código deve estar em LibraryCard.swift. main.swift contém o código fornecido de entrada/saída e não pode ser editado.
Experimente você mesmo
// Código de entrada/saída fornecido: mantenha-o como está
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 as lições de Programação Orientada a Objetos
1Classes e Objetos
Trabalhando com ArquivosDefinindo ClassesMétodos e selfInicializadoresClasses são ReferênciasRevisão - Cartão da Biblioteca4Encapsulamento
Controle de AcessoSomente Leitura ExternaProtegendo o EstadoInicializadores que Podem FalharRevisão - Conta Bancária7Polimorfismo e Genéricos
PolimorfismoConversão de TiposFunções GenéricasTipos GenéricosRevisão - Calculadora de Formas2Structs e Tipos de Valor
StructsSemântica de ValorMétodos MutáveisStruct ou ClasseRecapitulação - Item de Inventário5Herança
SubclassesSobrescrita de métodosInicializadores e superfinal e hierarquiasRecapitulação - Hierarquia de funcionários8Protocolos Padrão
CustomStringConvertibleEquatableComparableHashableRecapitulação - Ordenação Personalizada11Projeto: Gerenciamento de Biblioteca
Livros e MembrosEmpréstimo de LivrosPratique por conta própria: Playground de Swift