// This class converts temperature between Celsius and Fahrenheit.
// It may be used by assigning a value to either Celsius or Fahrenheit
// and then retrieving the other value, or by calling the ToCelsius or
// ToFahrenheit methods directly.
class Temperature {
var _celsius:Double = 0
var _fahrenheit:Double = 32
init(celsius:Double?=nil, fahrenheit:Double?=nil) {
if celsius != nil {
self.celsius = celsius!
}
if fahrenheit != nil {
self.fahrenheit = fahrenheit!
}
}
var celsius: Double {
get {
return self._celsius
}
set {
self._celsius = newValue
self._fahrenheit = toFahrenheit(celsius:self._celsius)
}
}
var fahrenheit: Double {
get {
return self._fahrenheit
}
set {
self._fahrenheit = newValue
self._celsius = toCelsius(fahrenheit:self._fahrenheit)
}
}
func getCelsius() -> Double {
return self.celsius
}
func setCelsius(celsius:Double) {
self.celsius = celsius
self.fahrenheit = toFahrenheit(celsius:celsius)
}
func getFahrenheit() -> Double {
return self.fahrenheit
}
func setFahrenheit(fahrenheit:Double) {
self.fahrenheit = fahrenheit
self.celsius = toCelsius(fahrenheit:fahrenheit)
}
func toCelsius(fahrenheit:Double) -> Double {
return (fahrenheit - 32) * 5 / 9
}
func toFahrenheit(celsius:Double) -> Double {
return celsius * 9 / 5 + 32
}
}
// This program creates instances of the Temperature class to convert Celsius
// and Fahrenheit temperatures.
//
// References:
// https://www.mathsisfun.com/temperature-conversion.html
// https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/TheBasics.html
func main() {
let temp1 = Temperature(celsius:0);
print("temp1.celsius = " + String(temp1.celsius));
print("temp1.fahrenheit = " + String(temp1.fahrenheit));
print("");
temp1.celsius = 100;
print("temp1.celsius = " + String(temp1.celsius));
print("temp1.fahrenheit = " + String(temp1.fahrenheit));
print("");
let temp2 = Temperature(fahrenheit:0);
print("temp2.fahrenheit = " + String(temp2.fahrenheit));
print("temp2.celsius = " + String(temp2.celsius));
print("");
temp2.fahrenheit = 100;
print("temp2.fahrenheit = " + String(temp2.fahrenheit));
print("temp2.celsius = " + String(temp2.celsius));
}
main()