OOP4-6次作业总结
前言
在本阶段的面向对象程序设计的学习中,先后完成数字电路模拟程序三次迭代作业,作业难度循序渐进、功能逐层升级。在不断编写、调试代码的过程中,夯实了Java核心语法,建立起面向对象编程思维,理解类与对象、继承、模块化拆分等核心思想,也深刻体会到程序架构优化、代码解耦、项目迭代开发的实际意义,为后续软件工程相关编程学习筑牢实践根基。
整体学习收获:
1.熟练掌握Java字符串解析、集合存储、输入流读取等实用基础语法;
2.建立面向对象设计思维,学会拆分实体类与工具类;
3.领悟程序分层、模块化设计对后期迭代维护的重要价值;
4.精准理解各类实体对象之间的依赖、组合、调用逻辑关系。
三次作业均围绕数字电路模拟展开迭代升级,作业4以五大基础逻辑门为核心,侧重基础语法与简单实体类设计,完成最核心的电平运算逻辑;作业5在原有基础上新增三态门、译码器、数据选择器、数据分配器等复杂组合电路元件,扩充引脚类型与运算规则;作业6作为最终版,新增子电路封装调用功能,同时完善全场景输入异常检测机制,兼顾程序扩展性与运行鲁棒性,符合项目迭代开发思想。经过三次练习,不仅巩固了代码编写能力,更养成规范化编程习惯,具备了基础的项目迭代开发思维。
设计与分析
第一次作业
本次作业为最初版本,核心需求需实现与门、或门、非门、异或门、同或门五种基础逻辑门电路,无复杂引脚区分、无拓展元件、无异常校验,整体开发重心放在基础类定义、输入文本解析、基础逻辑运算实现上。
在程序架构设计上,严格遵循面向对象思想进行拆分,将不同逻辑门单独封装实体类,统一抽取引脚信号存储、计算公共方法,把电路信号流转、输入语句解析、结果排序输出拆分为独立工具方法,做到功能模块化拆分。编写过程中按照题目规则,规范解析元件名称、引脚编号、全局输入电平、引脚连接关系,按照指定顺序筛选有效元件,完成电平运算后按编号有序输出结果。
代码规模:

整体代码体量偏小,业务逻辑简洁,方法功能单一,无复杂嵌套调用,代码编写与调试难度低。
类图:


类结构相对简单
程序复杂度:

算法复杂度低,核心实现五种基础门电路逻辑运算,输入解析规则简单,无需处理边界特殊场景,程序运行逻辑直观易懂。
第二次作业
本次作业在初代版本上迭代升级,新增电路元件种类三态门、译码器、数据选择器、数据分配器四类新型电路元件,同时新增控制引脚、多路输入输出引脚划分规则,修改不同元件输出格式标准,整体难度大幅提升。
设计层面不再局限于单一逻辑运算,重点优化多类型元件统一管理架构,重构引脚判定规则,区分控制引脚、数据输入引脚、输出引脚三类不同引脚用途,针对译码器、数据分配器定制专属运算逻辑与输出格式,统一全局信号传递规则,保证新旧元件信号互通流转。同时优化数据存储结构,适配多引脚、多输出电路的数据存储需求,降低新增元件带来的代码冗余问题。
代码规模:

相较于第一次作业代码行数明显增加,新增大量定制化运算方法与格式输出方法
类图:



彻底摆脱单类简易开发模式,正式形成父类统一规范 + 子类个性化实现的结构,大量运用组合关系、调用关系实现元件联动,各类之间分工明确、各司其职。
程序复杂度:

运算逻辑复杂度显著提高
第三次作业
在前两代电路功能基础上,新增两大核心重难点功能:子电路定义与跨层级调用、全维度输入异常检测机制,同时严格遵循单一职责设计原则重构整体架构。
架构设计上引入组合模式设计思想,将独立基础电路元件作为节点,子电路作为组合容器节点,实现子电路自定义封装、全局调用、层级信号传递,除此之外,搭建异常校验模块,指定异常优先级,依次校验多输出、无输入、无输出、顺序颠倒、引脚信号冲突等各类错误输入,优先捕获高优先级异常并规范输出错误提示,同时优化结果输出规则,区分主电路元件与子电路元件输出格式。符合单一职责原则。
代码规模:

相对一二次作业,代码规模有一定提高,整合前两代全部功能,新增子电路管理类、异常校验工具类、层级信号转发类等多个功能类。
类图:

系统类划分界限清晰,符合面向对象开发规范
程序复杂度:

整体业务逻辑、层级调用逻辑、异常判定逻辑三重叠加
踩坑心得
1.文本输入处理难点
本系列作业所有数据均依靠自定义格式字符串输入,包含INPUT全局电平、引脚连接语句、子电路定义语句、end结束标识等多种格式,编写时易出现字符串分割错误、元件名称正则匹配失误、引脚编号提取错乱等问题。同时混用空格、特殊符号分割内容,使用Scanner读取多行输入时容易出现换行读取遗漏、空字符读取异常等情况,耗费大量时间调试输入解析模块。
2.面向对象类设计难点
经过迭代调试后,不断拆分实体类、抽取公共工具,明白合理划分类结构、明确对象调用关系是大型程序开发的核心前提。
3.电路逻辑运算与规则理解
题目中各类门电路、译码器、数据选择器运算规则细致繁琐,引脚编号排序、控制引脚生效条件、无效电平判定、子电路信号映射等规则极易记混。初期编写时常出现异或门、三态门控制电平判定错误,译码器编码对应引脚出错等逻辑问题,反复修正核心算法。
4.格式规范与优先级细节疏漏
作业对输入连接格式、结果输出格式、异常提示语句格式要求极其严格,大小写、符号、空格偏差都会导致运行结果错误。同时异常错误存在固定判定优先级,初期编写未按照优先级顺序编写校验逻辑,出现多条异常同时触发时输出提示错误,需要重新梳理异常判定顺序,严格依照题目优先级完成代码编写。
5.信号冲突与引脚绑定管控疏漏
题目明确规定单个输入引脚仅能绑定一路输出信号,不允许出现信号冲突,前期未搭建专门的引脚绑定记录表,容易出现重复赋值引发逻辑错误。全局引脚信号映射集合,统一记录所有引脚绑定来源,提前拦截信号冲突问题,才能解决此类隐性bug。
改进建议
1.精简代码,抽取通用公共方法
目前程序中仍存在部分重复的字符串解析、电平格式转换、结果排序代码,后续可将重复频次高的代码统一抽取至通用工具类中,封装成静态公共方法,减少代码冗余度,同时降低后期功能修改的工作量,提升代码复用率。
2.完善系统化异常处理机制
现阶段仅完成题目部分指定的输入格式异常判定,复杂电路测试点未通过。后续改进程序,完善代码。
总结
经过三次数字电路模拟程序迭代作业,对Java面向对象程序设计有了更加深入的理解。经过多轮迭代优化之后,注重代码整体架构、层级划分、耦合度高低、功能扩展性以及程序健壮性,逐渐理解面向对象程序设计的核心精髓。掌握了Java输入处理、字符串处理、集合应用、类的继承与组合、抽象类使用等核心知识点,同时结合课程所学,完成子电路组合结构开发,做到理论知识与上机实践深度结合;提升了复杂格式数据解析、业务逻辑梳理、程序bug调试、项目版本迭代开发的能力,能够独立完成中小型结构化程序的设计与编码工作。
与此同时,我也清晰察觉到自身存在诸多不足:一是面向对象六大设计原则运用不够熟练,架构设计思维仍需加强;二是复杂多层级业务逻辑梳理速度较慢,代码编写效率有待提升;三是自主设计通用框架、搭建项目架构的能力尚且薄弱。
在今后的面向对象课程学习与编程练习中,我会继续深耕代码编写,主动尝试自主搭建项目架构,多参考规范开源代码优化自身编程风格,不断补齐自身短板。同时坚持多做多练,从简易程序逐步过渡到复杂综合项目,稳步提升自身软件设计与代码开发综合能力,为今后专业课程学习以及实战项目开发打下更加扎实的基础。

浙公网安备 33010602011771号