OO第一单元总结

本文记录了一位学生在三次作业中逐步改进程序结构的过程,从最初的状态机到使用正则表达式,再到引入继承机制,展示了面向对象编程理解的深化及应用。同时分析了每次迭代中的bug,并分享了发现他人bug的策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、基于度量的程序结构分析

(1)第一次作业

  第一次作业对面向对象的理解还不够,总体分成了三个类,分别是包含主函数的Diff,处理字符串的InputChecker和进行求导的Calculate。因为对正则表达式不够熟悉还不能熟练运用,本次作业采用了状态机的进行字符串处理。采用状态机的优点在于思路较为清晰,也比较简单,容易想到,但缺点是大量的case语句导致一个方法内的代码过长,代码风格不佳。

(2)第二次作业

  第二次作业加入了三角函数,由于第一次仅包含简单幂函数的情况下下使用状态机已经使代码过于长,第二次作业我选择对代码进行重构,使用正则表达式对输入进行判断与拆分,使得对输入的处理变得简洁了一些,但是对类的划分依旧是主函数,输入处理与求导计算三个类。

  优点:正则表达式的使用使得对输入字符串的处理更加清晰。

  缺点:对类理解与划分不够深入,也没有运用继承。

(3)第三次作业

  开始写第三次作业之前学习了继承的相关内容,在真正动手写代码前花了很长时间思考整体的架构,最终写出了如上结构的程序。对所有表达式构建了一个名为Item的父类,再根据具体表达式的形式分为常数Constant、幂函数PowerFunction、两表达式相加构成的表达式Add、嵌套的三角函数TP等6个子类,在子类中根据其自身形式对求导方法进行重写。在InputHandler类中对输入进行处理,先在字符串中识别因子,再对判断将因子合为表达式,再逐层将表达式合为表达式,最后合成一个最大的表达式,通过调用Item类中的求导方法进行求导,得到最后结果。

  优点:通过继承使得各个类变得简洁,求导也更加简便。

  缺点:没有进行化简。

 

二、Bug分析

(1)第一次作业

  表达式判断有误。

(2)第二次作业

  输入合法性判断有误,如+++ 1等情况没有识别出非法输入,对guidebook的理解有误再加上正则表达式写得不够细致导致的错误。

(3)第三次作业

  未通过强测,输入合法性判断有误,对于可嵌套的表达式第一项有正负号的情况判断错误给出Wrong Format,此外对表达式的求导也有错误。

 

三、发现别人Bug所采用的策略

  主要查看正则表达式部分的代码,分析其未考虑到的非法输入内容,再加上自行构建较为复杂的表达式进行测试。

 

四、Applying Creational Pattern

  因为初次接触面向对象,对程序的结构理解完全不够,导致三次作业几乎都是推翻重写,第一次状态机,第二次正则,第三次继承,只有判断前对输入的空格的合法判断以及判断完成后消除空格的部分在后续中有继续使用。

转载于:https://www.cnblogs.com/ruby7/p/10609683.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值