Recapitulação - Registro de Temperatura
Parte da seção Programação Orientada a Objetos do Journey de Swift da Coddy. Lição 16 de 57.
Desafio
DifícilCrie um pequeno registro de temperaturas. Complete o enum Scale (celsius, fahrenheit, com valores brutos C e F) e a struct Reading, que armazena a temperatura em celsius. Reading tem um método fábrica estático parse(_:) que lê textos como 20C ou 68F (retornando nil para qualquer outra coisa), uma propriedade computada fahrenheit e uma propriedade computada label que retorna 20.0C / 68.0F. A classe TemperatureLog mantém um array de leituras e uma propriedade highest com um observador didSet que registra cada novo recorde como new high 25.0C.
O código fornecido adiciona cada leitura analisada ao registro (ou imprime bad reading: x), imprime o rótulo de cada leitura e, por fim, imprime os recordes coletados pelo observador, um por linha.
Seu código deve ficar em Scale.swift, Reading.swift e TemperatureLog.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 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) }
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 Livros3Propriedades em Profundidade
Propriedades ComputadasObservadores de PropriedadesMembros EstáticosEnums com MétodosRecapitulação - Registro de TemperaturaPratique por conta própria: Playground de Swift