第二次Blog作业
题目集8
目标:能够掌握继承与多态,学会运用抽象方法解决实际问题,了解抽象方法对于解决实际问题的重要性,其中难点为7-3 NCHU_航空货运管理系统(类设计)在接下来会重点分析
题目集列表:
7-1 NCHU_点线面问题重构(继承与多态)
7-2 NCHU_雨刷程序功能扩展设计
7-3 NCHU_航空货运管理系统(类设计)
主要包含知识点: Java 面向对象编程的核心概念(封装、继承、多态),结合抽象类、集合、输入验证等实用技术,实现了几何图形渲染、雨刷控制、物流订单管理等业务逻辑。
设计与分析:
Customer 类(仅展示核心功能部分代码)

Customer:封装客户基本信息(ID、姓名、电话、地址)的数据模型类,通过构造函数初始化属性并提供 Getter/Setter 方法。
Cargo 类

Cargo:表示货物信息,存储长宽高、重量等物理参数,提供计算体积重量(体积 / 6000)和计费重量(实际重量与体积重量较大值)的业务逻辑。
Flight 类

Flight:管理航班信息(编号、起止地、日期)及载货容量,通过setRemaincapacity()方法动态扣减剩余容量。
Order 类

Order:整合客户、货物列表和航班信息,负责计算订单总重量(汇总所有货物计费重量)和总费用(根据重量阶梯计价:≤50kg 按 30 元 /kg,否则 25 元 /kg)。
算法流程图:


第一次航空货运管理系统总结:难度中等偏上,涉及 5 个核心类,需理解类间关系与数据流向,包含货物计费、多级费率、客户折扣等复杂业务逻辑,输入处理与条件分支嵌套增加了代码复杂度。代码体现了单一职责、封装、依赖倒置等面向对象设计原则,运用了类与对象、集合框架、方法设计等重要知识点。潜在优化方向包括使用枚举替代字符串类型、引入工厂模式、提取常量、增强输入验证及利用继承与多态扩展系统。理解这些原则和知识点对系统维护与扩展至关重要。由于第一次比较疏忽,导致笔者在写这串代码时写的过于冗长,不易于维护
题目集9
目标:熟练运用 Java 基础语法,如流程控制、类与对象构建,掌握Scanner、ArrayList、Math等工具类操作;具备面向对象设计能力,能通过抽象类 / 接口定义规范,利用继承实现代码复用,借助多态实现统一接口的差异化实现,并通过封装隐藏内部细节;同时需具备业务逻辑建模能力,能将复杂规则(如计费逻辑、图形计算)转化为代码逻辑
题目集列表:
7-1 NCHU_魔方问题
7-2 NCHU_点线面问题再重构(容器类)
7-3 NCHU_航空货运管理系统(继承与多态)
主要包含知识点:面向对象编程的类与对象构建、继承(抽象类应用)与多态(方法重写)、封装特性;集合框架中 ArrayList 的使用(对象存储与遍历);复杂业务逻辑实现(如货物计费规则、几何图形计算),涉及条件分支、数学运算和规则匹配;输入输出处理(Scanner 的精准输入控制);以及数据流转管理和对象状态更新(如航班剩余运力计算)
本次物流系统设计,重点强化单一职责原则,通过扩展类结构(如新增FeeCalculator、Validator等专用类)实现功能解耦;新增输入验证与异常处理(如货物重量校验、车辆状态检查)以提升健壮性;引入状态机管理订单与车辆流转(如CREATED→ASSIGNED→COMPLETED);借助类图明确实体关联(如Order聚合Cargo与Vehicle),简化设计复杂度,最终通过模块化设计实现物流业务流程的高效管理。
类图关系:

客户类(Customer):

货物类(Cargo):



Cargo 类用于表示货物,存储货物的类型、ID、名称、尺寸和重量等信息。它提供了计算体积重量、确定计费重量以及根据货物类型和计费重量获取费率的方法,同时也提供了获取货物各项信息的 getter 方法。
航班类(Flight):


Flight 类用于管理航班信息,包括航班号、出发地、目的地、日期和容量。它提供了检查航班是否能够承载指定重量货物的方法,以及扣除已承载货物重量的方法,同时通过 getter 方法提供对航班各项信息的访问。
订单类(Order):




Order 类用于管理货运订单,包含订单的基本信息、关联的货物列表和航班信息。它提供了计算订单总重量和总费用的方法,其中总费用会根据客户类型进行相应折扣计算,同时也提供了获取订单各项信息的 getter 方法。



在开发物流管理系统代码时,实际遇到了输入处理中Scanner混用导致数据错位、非数字输入引发异常及未校验负数参数,业务逻辑中体积重量单位不明确、费率规则与客户折扣硬编码耦合,类设计上Main类职责膨胀、Order构造函数参数过多及if-else冗余,鲁棒性方面空指针异常、浮点精度误差及多线程下航班容量超卖,测试中未覆盖计费重量边界值和异常场景等具体问题。通过强制消耗换行符、捕获输入异常并校验参数合法性,明确单位定义、引入枚举和策略模式解耦逻辑,拆分Main类职责、使用构建者模式优化构造函数,添加空指针校验、改用BigDecimal计算金额及同步锁保证线程安全,以及补充边界值和异常场景测试,有效解决了上述问题,提升了代码的健壮性、可维护性和逻辑准确性。
浙公网安备 33010602011771号