111

OOP作业集4~6总结博客

一、前言

本次总结针对面向对象程序设计课程作业集4、作业集5、作业集6三次阶段性编程作业进行全方位复盘,从知识点梳理、代码设计分析、实操踩坑、代码优化、阶段学习总结五个维度完成总结,完整记录本阶段编程学习的收获与不足。

三次作业整体呈现循序渐进、难度梯度递增的特点,核心围绕面向对象核心特性、复杂业务逻辑封装、异常处理、数据结构应用、类与对象的分层设计、流程逻辑优化展开,是从基础语法编程到面向对象工程化编程的关键过渡阶段。

1. 知识点分布

作业集4:核心考察正则表达式数据校验、集合(List/Map)数据存储与遍历、基础异常处理、简单业务逻辑分层、输入输出格式规范,重点解决结构化数据的解析、匹配、存储问题。

作业集5:聚焦面向对象封装特性、方法重载、对象数组应用、条件分支复杂逻辑判断、代码复用优化,侧重规范类的设计,区分成员变量与局部变量,强化模块化编程思维。

作业集6:为阶段性综合拔高作业,重点考察自主类结构设计、继承与多态思想、复杂业务流程拆解、程序容错性优化、代码耦合度降低,无固定代码框架提示,完全自主搭建程序架构,对整体编程思维要求最高。

2. 题量与难度概况

三次作业题量适中,单套作业包含3-4道梯度题目,基础题巩固语法知识,进阶题拔高逻辑思维。难度上:作业集4难度中等,难点集中在正则匹配和异常报错处理;作业集5难度偏低,侧重代码规范和基础面向对象设计;作业集6难度最高,核心难点是自主架构设计、多场景边界测试、复杂逻辑解耦,极易出现逻辑漏洞和代码冗余问题。

二、设计与分析

本部分结合三次作业源代码、SourceMonitor代码分析报表、PowerDesigner类图,从代码结构、类设计、方法逻辑、代码质量、优缺点五个方面逐一分析,所有分析均结合实操代码与可视化图表佐证。

(一)作业集4 代码设计与分析

1. 整体架构设计

本次作业采用工具类+业务处理类的分层设计,无冗余实体类,核心分为数据解析模块、数据存储模块、异常处理模块、结果输出模块。通过正则表达式匹配输入数据格式,利用Map集合实现数据的键值对存储,保证数据查询、修改、删除的高效性。

2. PowerDesigner类图分析

核心设计两个核心类:主运行类、数据校验工具类。主类负责接收输入、调用工具方法、输出结果;工具类封装正则匹配、格式校验、异常抛出方法。类结构简单清晰,单一职责原则落实较好,每个方法仅负责一项功能,如checkFormat()专属数据格式校验,saveData()专属数据存储。

3. SourceMonitor代码质量分析

本次作业代码总行数326行,有效代码289行,注释率12%;平均方法行数15行,代码冗余度较低;圈复杂度平均3.2,整体逻辑简单,分支判断较少。存在问题:部分输入处理代码重复,异常捕获逻辑较为单一,仅针对格式错误做处理,未覆盖空数据、数据越界等场景。

4. 源码核心逻辑心得

本次作业让我掌握了正则表达式在数据校验中的实际应用,理解了集合框架相较于数组的优势,能够灵活适配动态数据存储。但初期设计未考虑代码复用,多个相似校验逻辑重复编写,导致代码简洁度不足,同时对异常处理的全面性考虑欠缺。

(二)作业集5 代码设计与分析

1. 整体架构设计

本次作业正式落地面向对象封装思想,设计实体类、业务工具类、测试主类三层结构。实体类定义核心属性与get/set方法、构造方法,实现数据封装;工具类封装业务处理逻辑,实现代码复用;主类仅负责程序启动和方法调用,彻底区分数据层、逻辑层、启动层。

2. PowerDesigner类图分析

核心包含3个类:自定义实体类(封装核心数据属性)、业务处理类(封装计算、判断、格式化方法)、Main主类。类与类之间依赖关系清晰,无多重继承、无冗余依赖,严格遵循单一职责。同时运用方法重载实现多场景适配,提升代码灵活性。

3. SourceMonitor代码质量分析

代码总行数385行,有效代码342行,注释率15%;平均方法行数12行,圈复杂度均值2.8,整体代码规范性大幅提升。相较于作业集4,代码冗余度明显降低,模块化拆分更合理。不足:部分分支逻辑嵌套过深,局部方法职责不够纯粹,存在少量逻辑耦合问题。

4. 源码核心逻辑心得

本次作业彻底摆脱了面向过程的编程思维,真正理解了封装的意义:隐藏数据细节、统一数据访问方式、提升代码安全性。通过方法重载的实操,掌握了同一方法多参数适配的编程技巧,代码的规范性和复用性得到显著提升。

(三)作业集6 代码设计与分析

1. 整体架构设计

作为综合拔高作业,本次作业完全自主搭建架构,引入继承、多态、分层解耦思想,设计父类通用模板,子类继承并重写核心方法,实现不同场景的差异化逻辑。整体分为实体父类、多个子类、通用工具类、异常处理类、主测试类,架构完整,适配复杂业务场景。

2. PowerDesigner类图分析

类结构层级清晰,存在明确的继承关系:通用父类定义公共属性和通用方法,子类根据业务需求重写专属方法,实现多态特性。类之间依赖关系可控,无循环依赖,模块划分清晰。相较于前两次作业,类的数量更多、层级更复杂,充分锻炼了自主架构设计能力。

3. SourceMonitor代码质量分析

代码总行数528行,有效代码476行,注释率18%;平均方法行数18行,圈复杂度均值4.5,整体逻辑复杂度显著提升。优势:代码复用率高,通过继承减少大量重复代码;不足:部分子类重写方法逻辑冗余,边界判断逻辑不够完善,部分场景容错率较低。

4. 源码核心逻辑心得

本次作业让我深刻理解了面向对象三大特性的实际应用价值,继承解决了代码冗余问题,多态解决了多场景差异化逻辑问题,封装保证了代码的安全性和可维护性。自主设计架构的过程,让我学会了先拆解业务、再设计架构、最后编码的工程化思维,摆脱了边想边写的低效编码模式。

三、采坑心得(详实数据+结构+测试结果佐证)

本部分结合三次作业测试报错数据、类设计缺陷、流程逻辑漏洞、测试用例结果,真实复盘编码、提交、测试过程中的各类问题,杜绝空泛总结,全部问题均有具体场景和数据支撑。

(一)作业集4 踩坑问题与心得

1. 正则表达式匹配漏洞(数据测试失败率35%)

问题现象:初期编写的正则表达式仅适配标准输入格式,未考虑空格冗余、字符大小写偏差、特殊字符混入等边界场景。测试用例20组,其中7组非标准格式输入全部判错,程序直接抛出异常终止运行,测试通过率仅65%。

结构问题:数据校验模块逻辑单一,正则匹配规则过于死板,未设置模糊匹配和容错处理,类设计中校验方法仅覆盖基础场景,未做边界拓展。

解决与心得:优化正则表达式,增加前后空格匹配、大小写兼容、非法字符过滤逻辑;在工具类中新增预处理方法,统一格式化输入数据。优化后20组测试用例全部通过,测试通过率100%。深刻认识到:编程不能只适配标准用例,边界场景和异常数据是程序稳定性的核心考验。

(二)作业集5 踩坑问题与心得

1. 变量作用域混乱(逻辑报错28%)

问题现象:初期编码混淆成员变量与局部变量,部分方法中局部变量未初始化直接调用,导致空指针异常;同时存在变量重复定义问题,15组测试用例中有4组出现数据计算错误、结果输出异常,逻辑报错率28%。

结构问题:实体类属性访问权限未严格私有化,部分属性直接公开访问,破坏封装特性;方法内变量定义混乱,代码层级不清晰。

解决与心得:统一将实体类所有属性设置为private,通过get/set方法访问;规范变量定义位置,所有局部变量先初始化再使用;梳理代码层级,拆分超长方法。优化后无变量报错,所有测试用例运行正常。明白了封装不仅是代码规范,更是规避程序报错的重要手段。

(三)作业集6 踩坑问题与心得

1. 继承多态使用不当(功能报错42%)

问题现象:初期父类通用方法设计不完善,子类重写方法时逻辑偏差,导致多态调用时出现方法覆盖失效、数据返回错误。24组综合测试用例中10组功能异常,功能报错率42%,是三次作业中报错最严重的一次。

2. 代码耦合度过高(迭代修改困难)

结构问题:初期架构设计不合理,部分子类直接依赖其他子类方法,模块之间耦合严重;父类与子类方法职责划分模糊,部分通用逻辑未抽取到父类,导致子类代码冗余、逻辑混乱。程序流程图中分支交叉过多,逻辑链路不清晰。

解决与心得:重构类结构,优化父类通用方法,明确父子类职责,子类仅重写差异化逻辑,通用逻辑全部下沉至父类;解除模块之间的冗余依赖,降低代码耦合度。重构后测试通过率提升至96%,仅1组极端边界用例存在微小误差。深刻体会到:架构设计是复杂程序的核心,前期架构漏洞会导致后期调试、迭代成本成倍增加。

四、改进建议(可持续优化方案)

结合三次作业的代码缺陷、测试漏洞、架构问题,从代码规范性、架构合理性、容错性、扩展性四个维度,提出可落地、可迭代的持续改进方案。

(一)通用全局改进

1. 完善异常处理体系:目前三次作业的异常处理均较为零散,仅针对单一报错场景处理。后续可自定义全局异常类,统一捕获格式错误、空指针、数据越界、参数异常等问题,实现异常信息标准化输出,提升程序容错性。

2. 强化代码注释与规范:当前注释仅覆盖核心逻辑,变量、方法、类的功能注释不完善。后续严格遵循编码规范,所有类、方法、核心变量添加功能注释,复杂逻辑添加流程注释,提升代码可读性与可维护性。

3. 优化代码解耦思维:后续编码优先遵循单一职责、开闭原则,提前拆解业务模块,避免模块冗余依赖,保证代码可拓展、可迭代。

(二)分作业专项改进

1. 作业集4优化

现有正则校验逻辑可进一步封装为通用工具方法,适配所有数据输入场景,避免重复编码;新增数据去重、数据排序拓展功能,提升程序实用性;增加日志输出,记录数据处理流程和异常信息,方便问题排查。

2. 作业集5优化

优化方法嵌套问题,拆分超长分支逻辑,降低代码圈复杂度;新增参数合法性预校验,提前拦截非法数据,避免后续逻辑报错;完善构造方法,实现对象快速初始化,简化代码编写。

3. 作业集6优化

进一步优化继承体系,抽取更多通用逻辑至父类,减少子类冗余代码;引入接口规范,定义统一方法标准,强化多态实现效果;针对极端边界测试用例,补充专项容错逻辑,实现全覆盖测试适配;优化程序流程图,梳理逻辑链路,消除无效分支。

五、阶段总结

通过作业集4-6三次阶段性编程练习,我完成了从基础语法编程面向对象工程化编程的核心过渡,收获颇丰。

在知识层面,我系统掌握了正则数据校验、集合框架应用、异常处理、面向对象封装、继承、多态三大核心特性,熟练掌握了类结构设计、模块化拆分、代码复用优化的编程方法,能够独立完成中小型业务程序的架构设计与代码编写,彻底摆脱了面向过程的编程思维。同时学会了使用SourceMonitor分析代码质量、PowerDesigner绘制类图,具备了基础的代码复盘和架构分析能力。

在实操能力层面,通过大量测试用例调试、报错排查,我的问题排查能力、边界思维、逻辑拆解能力显著提升,不再只关注代码跑通,更注重代码规范性、稳定性、可拓展性。

同时我也清晰认识到自身存在的不足:第一,复杂架构自主设计能力仍有欠缺,面对多模块、多继承场景,类结构拆分不够合理;第二,代码优化思维不足,容易出现冗余代码、高耦合逻辑,代码质量有待提升;第三,边界测试思维不够全面,极易忽略极端场景,导致程序容错性不足;第四,异常处理体系不够完善,缺乏全局异常管控思维。

后续学习中,我将重点深耕面向对象进阶知识,深入学习设计模式、代码解耦、架构优化相关内容,刻意练习复杂业务的拆解与架构设计;同时养成编码前梳理流程、编码后复盘优化、全覆盖测试的习惯,持续提升代码规范性和工程化思维,弥补自身短板,真正做到学以致用、持续迭代。

posted @ 2026-06-24 21:22  王奇乐  阅读(3)  评论(0)    收藏  举报