面向对象总结性Blog_02:航空货运管理系统

一、前言

通过完成这题目集8-9两次作业,我有了一些感悟。
首先,这两次作业的知识点包括:继承与多态,类的设计与封装,容器类设计与操作,策略拓展性与支付方式封装以及设计原则的应用(SRP、LSP、OCP、CRP、DIP)
其中最重要的当属航空货运管理系统(继承与多态)
然后,这三次题目集一共有3+3也就是6道题,题量不算多,主要培养继承与多态、设计原则的思维
其次,这三次题目集的总体难度中等,不过在设计原则上要多加考量,尽量使自己的代码符合设计原则SRP、LSP、OCP、CRP、DIP

二、设计与分析

1、第八次题目集-航空货运管理系统源码分析

第八次题目集的航空管理题目要求编写一个Java程序,对航空货运管理系统进行类设计,重点考察继承与多态
现在分析我的源码,先上类图

初步上手这个题目,我没有设计好类,calculUtil类略显多余,还应该补充一个OrderItem类,不然不太合理
以下使用Source Monitor分析我的代码
代码分析总览图:

具体看看Orders类和Goods类
Orders类具体分析图:

从这张图可以直观地看出:我的代码中 函数深度(Block Depth)适中,而 函数复杂度(Function Complexity)的平均复杂度(Avg Complexity)偏小,代码注释(Comments)很少,类平均包含方法个数适中,最大的缺点就是不写注释,平时没养成写注释的好习惯
Goods类具体分析图:

代码还存在很多不足,有待提升


2、第九次题目集-航空货运管理系统(继承与多态)源码分析

第九次题目集的航空管理题要求在上一次作业的基础上对用户、支付方式、货物类进行拓展
现在分析我的源码,先上类图

这次设计的类中增加了OrderItem类并对货物进行了细分,把calcuUtil类合并到了Order类和OrderItem类中,有所进步
以下使用Source Monitor分析我的代码
代码分析总览图:

具体看看Orders类和Goods类
Orders类具体分析图:

平均复杂度还不够
Goods类具体分析图:

也是平均复杂度和方法少的问题
代码结构相较于上一次有一定提升

三、踩坑心得

在做第八次题目集的航空货运管理系统时,我的代码的输出结果与示例输出一模一样,但pta的测试点就是不能通过,在反复调试后,我发现是输出中的订单总重量有问题,我把订单总重量误以为是货物的实际重量,但题目中的订单总重量是货物的计费重量


四、改进建议

在对自己的代码进行回顾后,结合我踩过的坑,有如下改进建议:
1、仔细阅读题目要求,耐心调试程序
2、改进航空货运管理系统的代码,比如说,对支付方式、计费方式使用“策略模式”进行抽象,示例代码:
interface PaymentStrategy {
void pay(double amount);
}
class WechatPay implements PaymentStrategy { ... }
class Alipay implements PaymentStrategy { ... }
class CashPay implements PaymentStrategy { ... }
然后在 Order 中注入不同的支付策略对象:
order.setPaymentStrategy(new WechatPay());
类似地,也可以定义 FeeCalculator 接口来支持不同货物类型的计费策略。
这满足 OCP 和 DIP(依赖倒置原则),增强程序可维护性与可扩展性。


五、总结

1.学到了什么
提高了对集合(ArrayList)的操作能力,理解了“继承”和“多态”的实际用途通过为货物/客户设计父类和子类,体会到了代码复用与行为差异的处理方式。在使用 RubikCube、Element、Goods 的 display() 或计费方法时,体会到了 多态的威力。初步理解了设计原则的意义

原则 作业中的体现 学到的东西
SRP(单一职责) 客户、货物、订单各司其职 类应该只做一件事,方便维护
LSP(里氏替换) 父类引用指向子类对象 子类应能完全替代父类使用
OCP(开闭原则) 新增支付方式或货物类型时不改旧代码 学会写“可扩展而非可修改”的代码
CRP(合成复用) Order 包含 Customer 和 Goods 多用组合,少用继承
DIP(依赖倒转) 通过接口注入支付策略 高层模块不依赖低层细节,实现解耦

学会了从业务需求出发建模根据题目描述设计类,不再是随便写几个类,而是“读需求 → 设计类 → 实现逻辑”的过程。
通过完成航空货运管理系统这两个阶段的作业,我不仅掌握了 Java 类、继承、多态、集合等语言基础,还理解了如何通过面向对象的思想设计一个可扩展、易维护的系统。更重要的是,我逐步建立起了从需求建模到代码实现的系统思维,为后续学习更复杂的设计模式和软件工程项目打下了基础。
2.进一步学习
在完成航空货运管理系统这两个作业之后,还可以进一步学习异常处理机制掌握 try-catch-finally 结构自定义异常类,提高代码健壮性与可读性

posted @ 2025-05-24 13:20  Asukaaa  阅读(33)  评论(0)    收藏  举报