Skip to main content
Engineering LibreTexts

8.9: Swift Examples

  • Page ID
    10718
  • Objects

    // 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()
    

    Output

    temp1.celsius = 0.0
    temp1.fahrenheit = 32.0
    
    temp1.celsius = 100.0
    temp1.fahrenheit = 212.0
    
    temp2.fahrenheit = 0.0
    temp2.celsius = -17.7777777777778
    
    temp2.fahrenheit = 100.0
    temp2.celsius = 37.7777777777778