Rückblick – Temperaturprotokoll
Teil des Abschnitts Objektorientierte Programmierung der Swift-Journey von Coddy. Lektion 16 von 57.
Aufgabe
SchwerErstelle ein kleines Temperaturprotokoll. Vervollständige die Enumeration Scale (celsius, fahrenheit, mit den Rohwerten C und F) und die Struktur Reading, die die Temperatur in Celsius speichert. Reading verfügt über eine statische Factory parse(_:), die Text wie 20C oder 68F einliest (für alles andere nil zurückgibt), eine berechnete Eigenschaft fahrenheit und ein berechnetes label, das 20.0C / 68.0F zurückgibt. Die Klasse TemperatureLog verwaltet ein Array von Messwerten sowie eine Eigenschaft highest mit einem didSet-Beobachter, der jeden neuen Höchstwert als new high 25.0C protokolliert.
Der bereitgestellte Code fügt jeden eingelesenen Messwert zum Protokoll hinzu (oder gibt bad reading: x aus), gibt das Label jedes Messwerts aus und gibt schließlich die vom Beobachter gesammelten Einträge jeweils in einer eigenen Zeile aus.
Dein Code gehört in Scale.swift, Reading.swift und TemperatureLog.swift. main.swift enthält den bereitgestellten Eingabe-/Ausgabecode und darf nicht bearbeitet werden.
Probier es selbst
// Gelieferter Ein-/Ausgabe-Code: belasse ihn wie er ist
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) }
Alle Lektionen in Objektorientierte Programmierung
1Klassen und Objekte
Arbeiten mit DateienKlassen definierenMethoden und selfInitialisiererKlassen sind ReferenzenRückblick – Bibliotheksausweis4Kapselung
ZugriffskontrolleVon außen schreibgeschütztZustand schützenFehlschlagende InitialisiererRückblick – Bankkonto7Polymorphismus und Generika
PolymorphismusTypumwandlungGenerische FunktionenGenerische TypenZusammenfassung – Shape-Rechner2Strukturen und Werttypen
StrukturenWertsemantikVerändernde MethodenStruktur oder KlasseZusammenfassung – Inventarelement5Vererbung
UnterklassenMethoden überschreibenInitialisierer und superfinal und HierarchienRückblick – Mitarbeiterhierarchie8Standardprotokolle
CustomStringConvertibleEquatableComparableHashableRückblick – Benutzerdefiniertes Sortieren11Projekt: Bibliotheksverwaltung
Bücher und MitgliederBücher ausleihen3Eigenschaften im Detail
Berechnete EigenschaftenEigenschaftsbeobachterStatische MemberEnums mit MethodenRückblick – TemperaturprotokollÜbe selbstständig: Swift-Playground