编辑代码

*1*
class Shape {
    var numberOfSides = 0
    func simpleDescription() -> String {
        return "A shape with \(numberOfSides) sides."
    }
}
*2*
var shape = shape()
shape.numberOfSides = 7
var shapeDescription = shape.simpleDescription()
*3*
class NamedShape {
    var numberOfSides: Int = 0
    var name: String
     init(name:String) {
         self.name = name
     }
     func simpleDescription() -> String {
         return "A shape with \(numberOfSides) sides."
     }
}
*4*
class Square: NamedShape {
    var sideLwngth: Double
    init(sideLength: Double, name: String){
        self.sideLength = sideLength
        super.init(name: name)
        numberOfSides = 4
    }
    func area() -> Double {
        return sideLength * sideLength
    }
    override func simpleDescription() -> String{
        return "A square with sides of length \(sideLength)."
    }
}
let test = Square(sideLength: 5.2, name: "my test square")
test.area()
teat.simpleDescription()
*5*
class EquilateralTringle: NamedShape {
    var sideLength: Double = 0.0
    init(sideLength: Double, name:String){
        self.sideLength = sideLength
        super.init(name: name)
        numberOfSides = 3
    }
    var perimter: Double {
        get{
            return 3.0 * sideLength
        }
        set {
            sideLength = newValue / 3.0
        }
    }
    override func simpleDescription() -> String{
        return "An equilateral triagle with sides of length \(sideLength)."
    }
}
var tringle = EquilateralTringle(sideLength: 3.1, name: "a triangle")
print(triangle.perimeter)
triangle.perimter = 9.9
print(triangle.sideLength)
*6*
calss TriangleAndSquare {
    var triangle: EquilateralTriangle {
        willSet {
            square.sideLength = newValue.sideLength
        }
    }
    var square: Square {
        willSet {
            triangle.sideLength = newValue.sideLength
        }
    }
    int(size: Double, name: String) {
        square = Square(sideLength: size, name: name)
        triangle = EquilateralTriangle(sideLength: size, name: name)
    }
}
var triangleAadSquare = TriangleAadSquare(size: 10, name: "another test shape")
print(triangleAadSquare.square.sideLength)
print(triangleAadSquare.triangle.sideLength)
triangleAadSquare.square = Square(sideLength: 50, name: "larger square")
print(triangleAadSquare.triangle.sideLength)