Повторение — читательский билет
Часть раздела Объектно-ориентированное программирование путешествия по Swift на Coddy. Урок 6 из 57.
Задание
СреднеЗавершите класс LibraryCard. Его инициализатор принимает имя участника name и limit (по умолчанию 3), начиная без взятых книг. borrow(_:) возвращает true и добавляет название, если только карта не достигла своего лимита и ещё не содержит это название. giveBack(_:) возвращает true, когда название было удалено. status() возвращает Ada: 2/3 (Dune, Emma) с названиями в порядке их взятия или Ada: 0/3, если ничего не взято.
Предоставленный код считывает имя, лимит (или пустую строку для значения по умолчанию), а затем команды +title или -title. Для каждой команды он выводит ok или no, а в конце — status().
Ваш код должен находиться в LibraryCard.swift. В main.swift содержится предоставленный код ввода/вывода, и его нельзя изменять.
Попробуйте сами
// Предоставленный код ввода/вывода: оставьте его как есть
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())
Все уроки раздела Объектно-ориентированное программирование
1Классы и объекты
Работа с файламиОпределение классовМетоды и selfИнициализаторыКлассы — это ссылкиПовторение — читательский билет4Инкапсуляция
Контроль доступаТолько чтение извнеЗащита состоянияИнициализаторы с возможностью сбояПовторение — банковский счёт7Полиморфизм и обобщения
ПолиморфизмПриведение типовОбобщённые функцииОбобщённые типыПовторение — калькулятор фигур10Паттерны проектирования. Часть 2
Паттерн делегированияПаттерн декораторПаттерн строительПаттерн состояния2Структуры и типы-значения
СтруктурыСемантика значенийИзменяющие методыСтруктура или классПовторение — элемент инвентаря5Наследование
ПодклассыПереопределение методовИнициализаторы и superfinal и иерархииПовторение — иерархия сотрудников8Стандартные протоколы
CustomStringConvertibleEquatableComparableHashableПовторение — пользовательская сортировка11Проект: Управление библиотекой
Книги и читателиВыдача книгПотренируйтесь самостоятельно: Песочница Swift