OOP四到六次作业总结
OOP四到六次作业总结
一. 前言:
第四次作业为答题怕判题程序,要求设计实现答题程序,模拟一个小型的测试,要求输入题目信息、试卷信息、答题信息、学生信息、删除题目信息,根据输入题目信息中的标准答案判断答 题的结果。五六次为家庭电路分析程序。
在第四次作业中,我着重于对类进行修改,对多选题单选题选择题进行辨析
在第五次作业中,接触家庭电路系统,输出类设计不当
在第六次作业中,我修改了输出类,并优化类的设计
二,设计与分析:
1. 答题判题程序-4(第四次作业)
第四次作业中我对题目类进行修改,将题目类拓展,实现单选题,多选题,填空题的分类,统一设计题目类为父类,包含序号等属性,三个子类中各含自己的计算方法。
同时对输出类进行设计,优化排序结构。
同时对信息读取进行分析,优化正则表达式使用。
2.家具强电电路模拟程序-1(第五次作业)
在本次作业中,我对类的设计较为直白,输出类也没有进行优化,在数据计算为完毕后进行输出,然而这可能导致排序出现错误。
此外各类计算方法较为复杂,if结构使用太多,导致部分特殊结构分析出错。
在后续作业中,我对父类设计与计算方法设计进行优化。
各种类均使用Arraylist来进行存储,实际上对于,电器的使用,电路的匹配使用统一的输出类或使用HashMap较为简单。
此次作业的思考让我对类的设计与类间关系有了更加清晰的认识,进行大型程序的设计时,优先考虑类的关系,这样思路就比较清晰,然后进行类的设计,然后进行数据读取的设计。过去思路较为凌乱,总是先考虑类的设计而忽略了类关系的设计,导致手忙脚乱,不停的修改类的设计。
复杂类图如下:
可见对于匹配的设计过于繁杂,后续进行优化
UML图如下:
对于总线类设计也应继承于Appliance父类,便于遍历
3.家具强电电路模拟程序-2(第六次作业)
在本次作业中我对输出类进行优化
排序后进行输出
增设sort方法,便于进行统一排序,优化输出结构。
同时我将总线类设计为Appliance的子类,增设并联电路。便于对总线进行遍历。
同时对计算方法进行改进,优化电压的计算,优化了遍历结构,便于进行计算。
但是对于子类的设计仍略显繁杂,计算方法仍有改进空间。
同时由于if结构使用过多,程序难以进行修改
复杂度:
可见总计算方法较复杂
UML图如下
三,采坑心得
-
if结构使用过多,导致许多特殊情况测试失败,且导致程序难以修改,导致可拓展性大大降低。在进行程序初步设计时,应对特殊情况进行考虑,思考普遍性方法,减少if结构使用,以提高程序可拓展性
-
2.对于面向对象程序设计,需优先对类的设计与类的关系进行考虑,首先确定设计的思路,考虑类的关系为是或包含等等,然后对类进行设计,实现上一步类间关系的设计,然后对主题程序进行设计。其次,对于输出较多且内容不同的设计,需更加细致小心,要明细需在何时输出,否则由于引用关系繁琐导致程序设计繁琐。
-
对于数据的读入,应综合使用split方法,charAt方法与正则表达式,正则表达式匹配精确且分组方便,便于后续对数据进行处理,但使用步骤较为繁杂,且数据结构发生变化时,需不断进行修改。Split方法用于对字符产基于某字符的分组,使用很方便,但分组结构会产生错误,甚至需要多次使用达到精确分组效果。charAt方法用于对字符某字符进行提取,图区极为精确,但提取字符较少,使用情况较少。
-
对于输出,在数据计算后进行输出显然不够严谨,可能导致排序错误,计算混乱等,可以增设输出类或使对应类实现comparable接口,便于排序,输出。
-
此外,诸如,基础数据变量初始化时需赋值,类变量的引用,public,private等变量修饰符的使用,这样的细节问题需注意。
四,改进建议 -
使用有意义的变量名和方法名。避免过长的代码行和复杂的嵌套结构。使用空格、缩进和空行来分隔代码块,以提高可读性。变量名和方法名应清晰地反映其用途和含义。遵循Java的命名规范和编码规范。除非在广泛接受的上下文中,否则避免使用缩写和模糊的名称。
例如各个类的设计,名称,方法设计进行优化,有利于后续对于程序的修改,以及电压计算方法的简化。 -
对于集合的使用,善于利用各种集合会使程序大大简化。Arraylist类似于数组,方便遍历修改增加等操作,hashmap中键值对的使用使用数据的对应使用更加方便,但同时也由于只能存键值对导致遍历相对繁琐。set类似于数学中集合,其中元素不重复,不同于前两个,元素按照大小进行排列。每种数据存储结构均有其优缺点,明细这一点对程序进行改善。据需求选择合适的数据结构。例如,如果需要频繁地插入和删除元素,LinkedList可能更适合;如果需要快速查找元素,HashMap或HashSet可能更合适。
在本次作业中,将各个小电器使用HashMap存储,会使对总线遍历更加方便简洁。 -
对于程序可拓展性,善于使用接口,抽象类会事半功倍
接口和抽象类可以定义一组规范,由不同的类来实现这些规范。实现解耦,通过将实现与接口分离,可以提高代码的灵活性和可扩展性。
使用模块化设计,使应用程序的组成部分更加清晰,有助于应用程序的扩展。每个模块都可以独立开发、测试和维护。
例如对于计算方法的设计,进行模块化设计,可大大减少其复杂度。
五,总结
在近几次作业中,最大的问题就是输出结构与if结构的使用,在后续作业中,我会着重于对这两方面进行修改
此外,对于各种接口,数据集合的使用会使程序设计事半功倍,随着java学习不断深入,我对这些数据集合,接口的使用会更加熟练,深入,提高程序便捷性。
善用Eclipse等开发环境,可以提高编码效率,同时也有利于学习调试和代码管理等技能。
在Java学习中期,我应该已经掌握了Java语言的基础知识和核心概念,并能够编写一些简单的程序。我通过实践来加深对Java语言的理解和掌握。同时,我需要关注Java社区和行业动态,了解最新的技术趋势和最佳实践,以便不断提升自己的技术水平。
我认为java语言的上限较高,意味着我仍有很长的学习java之路要走。不断练习,最重要的是不断练习,通过编写各种类型的程序来巩固所学知识,并逐步提升编程能力。
此外,在学习的过程中,只有通过不断地学习和实践,才能真正掌握Java语言,并在未来的职业发展中取得更好的成绩。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~