You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

23 lines
1.8 KiB

一、核心代码
【文件夹内】
二、UML 类图
【文件夹内】
五、运行结果截图
【文件夹内】
六、AI 使用情况记录
1. 借助 AI 学习封装、构造方法重载、this 关键字的核心概念
2. 在 AI 指导下完成 Car 类的属性、构造方法、getter/setter、业务方法的编写
3. AI 帮助修正了数据校验逻辑、静态成员的实现,优化了代码规范性
4. AI 指导了 IDEA 类图的生成方法,快速完成可视化建模
5. AI 辅助撰写了实验报告,梳理了实验总结与问题分析
七、关键问题回答
问题:为什么 isRented 不提供 setter?如果直接提供 setRented (boolean) 会带来什么风险?
• 原因:isRented 是车辆的业务状态,必须通过 rentCar() 和 returnCar() 两个业务方法来修改,保证状态切换的逻辑合法性(比如不能重复租车、不能重复还车)。
• 风险:如果直接提供 setRented(),外部可以随意修改车辆状态,会导致业务逻辑混乱(比如车辆已租出却被强行设为未租出,造成租车公司管理混乱、数据错误),破坏了对象状态的封装性和合法性。
八、实验总结
1. 封装的好处:通过私有属性 + 公有方法,保护了对象内部状态,外部只能通过合法的方法修改数据,保证了数据的安全性和一致性。
2. 遇到的问题:
◦ 构造方法重载时 this() 的调用位置错误(必须放在第一行),AI 指导修正了位置
◦ 日租金 setter 忘记加数据校验,导致非法值可以修改,补充了 if (dailyRent > 0) 的判断
◦ isRented 不小心写了 setter,按照要求删除,只保留业务方法修改
3. 解决方法:通过 AI 逐行检查代码,对照实验要求修正,确保每一项都符合评分标准。