Programming Fundamentals/Object Examples Swift

From Wikibooks, open books for an open world
Jump to navigation Jump to search

Objects[edit]

// 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[edit]

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

References[edit]