面向对象课程作业集4~6总结

面向对象设计与构造 —— 作业4-5总结
一、前言
本阶段分为三次迭代开发数字电路模拟程序,需求逐步升级:迭代 1 实现基础五类逻辑门;迭代 2 新增三态门、译码器、多路选择 / 分配器等带控制引脚的复合元件;迭代 4 增加子电路嵌套、输入异常检测功能。整套作业循序渐进训练类设计、继承、组合关系、文本解析与拓扑仿真能力,覆盖正则解析、信号传播、异常拦截、分层封装等核心知识点。
核心学习内容:

  • Java 抽象类、继承、重写,组件统一抽象设计;
  • 组合 / 聚合关系,子电路封装复用;
  • 字符串分段解析、正则匹配元件格式;
  • 队列实现广度优先信号仿真;
  • 输入异常分级判断、错误输出规范;
  • 代码复杂度控制、模块化拆分思路。

二、设计与分析
作业4:基础逻辑门模拟器
作业要求:实现与 / 或 / 非 / 异或 / 同或门,读取全局输入与引脚连接,按规定顺序输出有效门信号,无复合元件、子电路、异常报错。
实现方式:抽象 Gate 作为父类,五种门分别继承并重写计算方法;主类完成输入解析、元件构建、队列仿真,哈希表存储引脚电平与连接关系。
代码规模:5 个门子类 + 主类,代码量 300 行左右,结构清晰。
image

类图:Main 依赖抽象 Gate,各门继承 Gate,门内部数组存储输入引脚。f6ec9b8bd101a343524c54bd24bb9cd2

复杂度分析:仿真循环、输入解析方法复杂度偏高,各类计算函数逻辑简单。
image

Bug 分析

  1. 公测:门名称正则匹配不全,空输入未判空引发空指针; 2. 互测:元件排序错乱,缺失输入的门未过滤; 3. 测试:手动编写串联、并联标准样例校验输出。

作业5:复合组合元件拓展
作业要求:新增三态门、译码器、MUX、DEMUX,区分控制 / 输入 / 输出引脚,各类元件自定义输出格式。
实现方式:重构顶层 Component 抽象组件,基础门、复合元件均实现统一引脚操作接口,统一仿真调度逻辑。
代码规模:新增 4 类元件,总代码 700 行。
image

类图:所有电路组件继承 Component,独立封装引脚映射。
6cd585c7862a4aea25959ebe09803973

复杂度分析:元件创建分支变多,译码、分配器计算逻辑分支较多。
image

Bug 分析

  1. 公测:译码控制条件写反,三态高阻状态处理错误; 2. 互测:引脚编号匹配出错,输出格式符号错乱; 3. 测试:单独构造控制端有效/无效场景测试。

作业6 :子电路与异常检测
作业要求:支持子电路定义与调用,检测五类连接异常并按优先级输出报错,子电路独立存储内部元件。
实现方式:新增 SubCircuit 类,内部聚合各类组件;增加独立校验方法,分层解析子电路与主电路,区分两层引脚上下文读取电平。
代码规模:新增子电路、校验模块,总代码 1100 行。
image

类图:SubCircuit 聚合电路组件,主类统一调度主 / 子电路仿真。
203971860dee80f9d21cd0b0b8ae562e

复杂度分析:分段解析、异常校验方法分支较多,信号传播循环设置迭代上限防死循环。
image

Bug 分析

  1. 公测:子电路缓存未清空,异常优先级颠倒; 2. 互测:引脚冲突漏检测,连接顺序校验失效; 3. 测试:单独构造各类异常输入,验证报错优先级。

三、采坑心得
迭代过程暴露多处共性问题:一是文本解析正则不完善,分段读取未清理临时数据,造成数据污染;二是初期单次遍历电路无法处理多级串联,改用队列广度仿真后又出现重复入队死循环,增加电平变更判断才解决;三是前期未抽象统一组件接口,大量重复代码,重构后复用性提升;四是子电路未区分层级,引脚电平读取出错;五是异常判断未遵循题目优先级,多异常同时输出错误提示。
这些问题让我意识到,复杂程序必须提前做好分层设计,将解析、计算、校验、输出拆分为独立模块,减少单个方法的分支与循环复杂度,同时必须覆盖边界、非法输入完成完整测试。

四、改进建议
引入工厂模式创建各类元件,消除创建方法冗长 if 分支,便于后续新增时序元件;
封装自定义异常类,替代字符串报错,提升程序规范性;
拆分主类,将解析、仿真、打印分为独立工具类,降低主类复杂度;
增加 JUnit 单元测试,对门计算、异常校验自动化回归;
标准化子电路组合模式,统一主、子电路信号传播逻辑。

五、总结
三次迭代完整实现数字电路仿真系统,熟练掌握抽象、继承、组合等面向对象核心设计手段,学会通过模块化拆分控制代码复杂度,掌握文本解析、拓扑仿真、异常处理实用编码技巧。同时发现自身短板:设计模式落地不足,自动化测试意识薄弱,异常处理逻辑较为简陋。
课程作业由简到难的迭代模式十分适合入门面向对象。

posted @ 2026-06-24 23:46  ihaoruo  阅读(3)  评论(0)    收藏  举报