Повторение — журнал температуры
Часть раздела Объектно-ориентированное программирование путешествия по Swift на Coddy. Урок 16 из 57.
Задание
СложноСоздайте небольшой журнал температур. Завершите перечисление Scale (celsius, fahrenheit, с исходными значениями C и F) и структуру Reading, которая хранит температуру в градусах Цельсия. В Reading есть статическая фабрика parse(_:), которая считывает текст вроде 20C или 68F (возвращая nil для всего остального), вычисляемое свойство fahrenheit и вычисляемое свойство label, возвращающее 20.0C / 68.0F. Класс TemperatureLog хранит массив показаний и свойство highest с наблюдателем didSet, который записывает каждый новый рекорд как new high 25.0C.
Предоставленный код добавляет каждое разобранное показание в журнал (или выводит bad reading: x), выводит метку каждого показания и наконец выводит записи, собранные наблюдателем, по одной в строке.
Ваш код должен находиться в файлах Scale.swift, Reading.swift и TemperatureLog.swift. В main.swift находится предоставленный код ввода/вывода, и его нельзя редактировать.
Попробуйте сами
// Предоставленный код ввода/вывода: оставьте его как есть
var input: [String] = []
while let line = readLine() { input.append(line) }
let log = TemperatureLog()
for line in input {
if let r = Reading.parse(line) {
log.add(r)
print(r.label)
} else {
print("bad reading: \(line)")
}
}
for record in log.records { print(record) }
Все уроки раздела Объектно-ориентированное программирование
1Классы и объекты
Работа с файламиОпределение классовМетоды и selfИнициализаторыКлассы — это ссылкиПовторение — читательский билет4Инкапсуляция
Контроль доступаТолько чтение извнеЗащита состоянияИнициализаторы с возможностью сбояПовторение — банковский счёт7Полиморфизм и обобщения
ПолиморфизмПриведение типовОбобщённые функцииОбобщённые типыПовторение — калькулятор фигур10Паттерны проектирования. Часть 2
Паттерн делегированияПаттерн декораторПаттерн строительПаттерн состояния2Структуры и типы-значения
СтруктурыСемантика значенийИзменяющие методыСтруктура или классПовторение — элемент инвентаря5Наследование
ПодклассыПереопределение методовИнициализаторы и superfinal и иерархииПовторение — иерархия сотрудников8Стандартные протоколы
CustomStringConvertibleEquatableComparableHashableПовторение — пользовательская сортировка11Проект: Управление библиотекой
Книги и читателиВыдача книг3Свойства: углублённое изучение
Вычисляемые свойстваНаблюдатели свойствСтатические членыПеречисления с методамиПовторение — журнал температурыПотренируйтесь самостоятельно: Песочница Swift