iOS

本文介绍使用Swift语言创建智能建筑模型的过程,包括定义空气调控系统协议、窗子和空调类,以及不同风格的建筑类。展示了如何利用面向对象编程实现建筑的空气调控,并通过实例演示了中式和现代建筑的创建及特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

// 第一次ios阶段考察 预测试项目
// 考试内容


//1. 定义空气调控系统(AirSystem)协议
protocol AirSystem  {   //AirSystem 协议 表示建筑物的空气调控系统
    func airMethod() -> String
}

//2. 定义窗子(Window)类
class Window :AirSystem {
    var windowNum:Int    //表示建筑窗子数量
    init(windowNum :Int) {
        self.windowNum = windowNum
    }
    
    func airMethod() -> String { //实现协议AirSystem 的airMethod 方法
        return "通过窗子进行空气调节"
    }
}

//3. 定义空调(AirConditioner)类
class AirCondition:AirSystem  {
    var workRate : Double
    init(workRate:Double) {
        self.workRate = workRate
    }
    func airMethod() -> String {
        return "通过空调进行空气调节"
    }
    
}

//4. 定义建筑类型(BuildStyle)枚举
enum BuildStyle {
    case Normal
    case Classical
    case HiTeach
}

//5. 定义建筑物(Building)类
class Building {
    
    var buildStyle: BuildStyle
    var layerNum : Int //建筑层数
    init(buildStyle:BuildStyle,layerNum:Int) {
        self.buildStyle = buildStyle
        self.layerNum = layerNum
    }
    
    func description()  {
        if self.buildStyle==BuildStyle.Normal {
            print("这是具有\(layerNum)层的正常风格的建筑")
        }
        if self.buildStyle==BuildStyle.Classical {
            print("这是具有\(layerNum)层的古典风格的建筑")
        }
        if self.buildStyle==BuildStyle.HiTeach {
            print("这是具有\(layerNum)层的科技风格的建筑")
        }
    }
}

//6. 定义中国园林建筑(ChineseBuilding)类
class ChineseBuilding: Building {
    var airSystem:AirSystem
    var name:String? = nil
    
    init( airSystem:AirSystem, name :String?,buildStyle:BuildStyle,layerNum:Int) {
        self.airSystem = airSystem
        self.name = name
        super.init(buildStyle: buildStyle, layerNum: layerNum)
    }
  
    var height : Double{
        return  3.5*Double(layerNum)
        //只读计算属性
    }
    override func description() {
        if (self.name != nil) {
            print("中式风格的建筑\(name!),高度\(height)米,空气调节方式是:\(airSystem.airMethod())")
        }else{
             print("这是中式风格建筑,高度\(height)米,空气调节方式是:\(airSystem.airMethod())")
        }
    }
}


//7. 定义现代建筑(ModernBuilding)类
class ModleBuilding: Building {
    var airSystem:AirSystem
    var height :Double{
        return 3.0*Double(layerNum)
    }
    init(airSystem:AirSystem,buildStyle:BuildStyle, layerNum:Int) {
        self.airSystem = airSystem
        super.init(buildStyle: buildStyle, layerNum: layerNum)
    }
    convenience init(isSkyscraper:Bool,airSystem:AirSystem){
        if isSkyscraper {
            self.init(airSystem: airSystem, buildStyle: BuildStyle.HiTeach, layerNum: 100)
        }else{
            self.init(airSystem: airSystem, buildStyle: BuildStyle.HiTeach, layerNum: 10)
        }
    }
    
    func rebuild(rebuildmethod:(Int)-> Int)  {
        self.layerNum = rebuildmethod(layerNum)
    }
}


//8. 执行以下逻辑功能:
var window = Window(windowNum: 100)

var AirConditioner = AirCondition(workRate: 98)

typealias CB = ChineseBuilding

typealias MB = ModleBuilding

var dicCBs = [String:CB]()

for i in 0...9{
  dicCBs.updateValue(CB(airSystem: window, name: "中式建筑\(i)", buildStyle: BuildStyle.Classical, layerNum: 3), forKey:"中式建筑\(i)" )
}

for i in dicCBs{
    i.value.description()
}

var mb1 = MB(airSystem: AirConditioner, buildStyle: BuildStyle.HiTeach, layerNum: 30)

var mb2 = MB(isSkyscraper: true, airSystem: AirCondition(workRate: 2000))

print("重建前的建筑高度:\(mb1.height)")

mb1.rebuild(rebuildmethod: {(A:Int)->Int in return A+10})//参数是一个(Int)->Int闭包

print("重建后的建筑高度:\(mb1.height)")





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值