Riepilogo - Tessera della biblioteca
Fa parte della sezione Programmazione orientata agli oggetti del percorso Swift di Coddy. Lezione 6 di 57.
Sfida
MedioCompleta la classe LibraryCard. Il suo inizializzatore accetta il membro name e un limit (predefinito: 3) e inizia senza libri presi in prestito. borrow(_:) restituisce true e aggiunge il titolo, a meno che la tessera non abbia raggiunto il limite o contenga già quel titolo. giveBack(_:) restituisce true quando ha rimosso il titolo. status() restituisce Ada: 2/3 (Dune, Emma) con i titoli nell'ordine in cui sono stati presi in prestito, oppure Ada: 0/3 quando non è stato preso in prestito nulla.
Il codice fornito legge il nome, il limite (oppure una riga vuota per usare il valore predefinito) e poi i comandi +title o -title. Stampa ok o no per ogni comando e infine status().
Il tuo codice va inserito in LibraryCard.swift. main.swift contiene il codice di input/output fornito e non può essere modificato.
Provalo tu
// Codice di input/output fornito: lascialo così com'è
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())
Tutte le lezioni di Programmazione orientata agli oggetti
1Classi e oggetti
Lavorare con i fileDefinire le classiMetodi e selfInizializzatoriLe classi sono riferimentiRiepilogo - Tessera della biblioteca4Incapsulamento
Controllo degli accessiSola lettura dall’esternoProteggere lo statoInizializzatori che possono fallireRiepilogo - Conto bancario7Polimorfismo e tipi generici
PolimorfismoCasting dei tipiFunzioni genericheTipi genericiRipasso - Calcolatore di forme2Struct e tipi valore
Le structSemantica dei valoriMetodi mutantiStruct o classeRiepilogo - Articolo di inventario5Ereditarietà
SottoclassiSovrascrivere i metodiInizializzatori e superfinal e gerarchieRiepilogo - Gerarchia dei dipendenti8Protocolli standard
CustomStringConvertibleEquatableComparableHashableRiepilogo - Ordinamento personalizzato11Progetto: Gestione della biblioteca
Libri e utentiPrestito dei libriEsercitati da solo: Playground Swift