Récapitulatif - Journal des températures
Fait partie de la section Programmation orientée objet du Journey Swift de Coddy. Leçon 16 sur 57.
Défi
DifficileConstruisez un petit journal de températures. Complétez l’énumération Scale (celsius, fahrenheit, avec les valeurs brutes C et F) et la structure Reading, qui stocke la température en degrés Celsius. Reading possède une fabrique statique parse(_:) qui lit du texte tel que 20C ou 68F (en renvoyant nil pour toute autre valeur), une propriété calculée fahrenheit et une propriété calculée label qui renvoie 20.0C / 68.0F. La classe TemperatureLog conserve un tableau de relevés ainsi qu’une propriété highest dotée d’un observateur didSet qui enregistre chaque nouveau record sous la forme new high 25.0C.
Le code fourni ajoute chaque relevé analysé au journal (ou affiche bad reading: x), affiche le libellé de chaque relevé, puis affiche finalement les records collectés par l’observateur, un par ligne.
Votre code doit se trouver dans Scale.swift, Reading.swift et TemperatureLog.swift. main.swift contient le code d’entrée/sortie fourni et ne peut pas être modifié.
Essayez vous-même
// Code d'entrée/sortie fourni : le garder tel quel
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) }
Toutes les leçons de Programmation orientée objet
1Classes et objets
Travailler avec des fichiersDéfinir des classesMéthodes et selfInitialiseursLes classes sont des référencesRécapitulatif - Carte de bibliothèque4Encapsulation
Contrôle d’accèsLecture seule depuis l’extérieurProtection de l’étatInitialiseurs pouvant échouerRécapitulatif - Compte bancaire7Polymorphisme et génériques
PolymorphismeConversion de typeFonctions génériquesTypes génériquesRécapitulatif - Calculateur de formes2Structures et types valeur
StructuresSémantique de valeurMéthodes mutantesStructure ou classeRécapitulatif - article d’inventaire5Héritage
Sous-classesRedéfinition des méthodesInitialiseurs et superfinal et hiérarchiesRécapitulatif - hiérarchie des employés8Protocoles standard
CustomStringConvertibleEquatableComparableHashableRécapitulatif - Tri personnalisé11Projet : Gestion de bibliothèque
Livres et membresEmprunter des livres3Les propriétés en profondeur
Propriétés calculéesObservateurs de propriétésMembres statiquesÉnumérations avec méthodesRécapitulatif - Journal des températuresEntraînez-vous par vous-même : Playground Swift