首页 > 编程语言 >面向对象程序设计BLOG1

面向对象程序设计BLOG1

时间:2024-10-27 17:10:54浏览次数:5  
标签:逻辑 题目 BLOG1 试卷 面向对象 判题 程序设计 设计 代码

前言
在本次博客中,我将对题目集1~3进行总结与分析。这些题目集是基于面向对象编程(OOP)原理的实践题目,主要考察了OOP的基础知识、程序设计、输入输出处理、集合的使用、复杂对象的管理等方面的能力。这三次题目集逐步递进,从基础的类与对象的使用,到复杂的试卷管理与答题系统设计,最终实现了包含学生信息管理及题目删除的综合性系统设计。
题目数量
每个题目集中包含了不同数量的编程题目,题目集1主要是5个相对独立的问题,每个问题的设计相对基础;题目集2增加到8个问题,复杂度有所提高,尤其是在面向对象的结构设计上进行了更深层次的考量;题目集3共7个问题,涵盖了试卷、答卷、学生信息管理等复杂系统的实现。
难度分析
题目集1的难度较为基础,目的是帮助学生巩固面向对象的基础知识,如类的封装、对象的创建、基本的输入输出处理等。题目集2则通过引入试卷和答案的管理,要求学生设计更加合理的类结构,同时还增加了集合类(如List、Map)的使用。题目集3在前两个题目集的基础上,进一步复杂化,加入了学生信息的处理以及题目删除后的处理逻辑,要求更加精细的系统设计和异常处理。
知识点总结
题目集1至题目集3涵盖的知识点广泛,主要集中在以下几个方面:
1.类与对象的封装:从基本的类设计到复杂的类结构设计,如题目类、试卷类、答卷类等,都需要学生具备良好的面向对象设计能力。
2.集合类的使用:题目集中多次用到List、Map等集合类来处理题目、答案、学生信息的存储与管理,这要求学生对集合的使用有较为深入的理解。
3.输入输出处理:从基础的输入输出,到需要对复杂输入进行格式校验、解析,再到处理异常输入,这些都考察了学生对输入输出的灵活处理能力。
4.异常处理:在每个题目集中,程序都要求处理格式错误、输入不全等异常情况,这提升了代码的健壮性与容错能力。
接下来,我将详细分析每个题目集的设计与实现,重点分析每个题目集的最后一题,展示其设计逻辑、实现细节及心得体会。
设计与分析
题目集1:基础答题程序
题目要求:设计一个模拟小型测试的程序,输入题目信息和答题信息,程序根据标准答案判断答题的结果。
类设计
该题目设计相对简单,主要通过Question类来封装每一道题目。Question类包含题目编号、题目内容和标准答案三个属性,并且提供了相应的访问器(getter)方法用于获取这些属性的值。程序的主流程则是通过解析输入信息,创建Question对象,并根据用户的答案与标准答案进行对比输出结果。

设计分析
这个程序的设计较为基础,但通过对输入的处理、题目的封装,已经体现了面向对象的思想。在实际操作中,通过封装题目信息,能够避免直接对输入数据进行频繁操作,提升了代码的清晰度与可维护性。
提交的源码分析
使用了SourceMonitor对代码进行静态分析,结果显示该程序的整体复杂度不高,主要的逻辑分布在解析输入、处理输出以及判题的部分。对于这类题目,由于其较为基础,适当的条件判断是必要的,但代码结构仍有改进空间,比如可以将输入解析和判题的逻辑进一步封装成独立的方法,从而降低主方法的复杂度。
心得体会
题目集1的最后一题相对简单,但通过这个题目,我掌握了如何使用类来封装题目信息,并通过合理的类设计,简化了判题的逻辑。在实际开发中,这样的设计思路能够有效降低代码的耦合性,使得程序的可扩展性更强。
题目集2:试卷管理系统
题目要求:在题目集1的基础上,设计一个支持试卷管理、答卷判题的程序。程序输入的信息包含题目、试卷和答案,题目顺序可以不按编号排列。
类设计
题目集2在题目集1的基础上引入了TestPaper类和AnswerSheet类,分别用于管理试卷和答卷信息。
1.TestPaper类:用于存储试卷编号以及题目编号和分值的对应关系。该类的设计体现了面向对象中“组合”的思想,将每张试卷的题目和分值组合在一起进行管理。
2.AnswerSheet类:该类用于保存答卷信息,每份答卷包含题号与答案的对应关系。通过此类,程序可以在判题时根据试卷的题号顺序来输出答案结果。

提交源码分析
通过SourceMonitor生成的复杂度报告来看,题目集2的代码复杂度比题目集1有所提升,特别是在试卷管理、答卷判题部分,逻辑变得更加复杂。程序需要处理试卷分数不等于100的情况,还要确保在判题时根据试卷顺序输出结果。这一过程增加了分支判断与输入验证,代码行数和复杂度随之增加。
在PowerDesigner生成的类图中可以看出,TestPaper类和AnswerSheet类相互配合,通过面向对象的设计思想将数据和行为有机地组织在一起,降低了程序的复杂度,也提高了代码的可维护性。
心得体会
题目集2的设计更贴近实际应用,通过这道题目,我进一步理解了如何通过类的组合来管理复杂的数据关系。例如,试卷与题目的分数对应关系通过Map集合来管理,这种设计极大地方便了数据的操作。在实际项目中,面对类似的问题,通过引入组合模式可以有效提高代码的可扩展性和灵活性。
题目集3:综合测试系统
题目要求:在题目集2的基础上增加学生信息、删除题目功能,设计一个更加复杂的答题程序。程序需处理多种类型的输入信息,如题目、试卷、答卷、学生信息和删除题目信息。
类设计
题目集3对系统设计的要求更高,涉及多个类之间的交互与协作。
1.Student类:用于封装学生的学号和姓名。
2.Question类:与前两个题目集类似,但增加了删除题目的功能。删除题目后,答题系统需要能够正确处理删除后的题目,输出“题目失效”的提示。
3.TestPaper类:继续使用题目集2中的设计,但在输出时要根据是否有被删除的题目,输出不同的提示信息。

提交源码分析
通过SourceMonitor的分析,题目集3的代码复杂度明显增加。新增的学生信息管理、题目删除功能使得代码中多了更多的逻辑分支。为了保证程序的健壮性,必须对每一种情况都进行处理。删除题目的功能也增加了代码的复杂性,特别是在试卷判题时需要动态判断题目是否被删除并输出提示。
PowerDesigner生成的类图显示,题目集3中类之间的关系更加复杂,学生信息的加入使得程序的面向对象设计更加系统化。每个类都承担了明确的职责,通过类之间的协作,最终实现了一个完整的答题系统。
心得体会
通过题目集3的实践,我学到了如何处理复杂系统中的多个对象和多种输入数据。尤其是删除题目后的判题逻辑,通过类与集合的结合,实现了灵活的数据处理。在实际开发中,处理复杂的业务需求时,合理的类设计与数据结构选择是关键,能够有效减少代码的耦合,提高可维护性。
采坑心得
在开发这三次题目集的过程中,我遇到了许多编程问题和挑战。通过这些问题的解决,我获得了不少宝贵的经验,以下是一些典型的采坑和心得:
题目集1:输入解析与判题
1.问题:输入数据格式复杂,容易出现解析错误
1.解决方案:采用正则表达式对输入进行校验,确保输入格式的正确性。同时在输入处理时,增加了对空格和多余字符的过滤。
2.问题:多题答案的判题逻辑复杂,容易出错
1.解决方案:将判题逻辑封装到独立的方法中,避免在主流程中进行大量的条件判断,从而提升代码的可读性和维护性。
题目集2:试卷分数计算与答案输出
1.问题:试卷总分不等于100的情况处理
1.解决方案:在试卷解析时,立即计算分数总和,并在输出时给出提示。通过类中的getTotalScore()方法简化了分数计算的逻辑。
2.问题:答案缺失与题目顺序不一致
1.解决方案:通过集合类(如Map)对题目和答案进行管理,并且在输出时动态判断答案是否存在,输出“答案缺失”的提示。这种设计提高了程序的健壮性。
题目集3:删除题目与学生管理
1.问题:删除题目后,判题逻辑的复杂度增加
1.解决方案:引入了一个deletedQuestions集合,用于存储已删除的题目编号。在判题时,首先检查题目是否在该集合中,如果存在则输出“题目失效”的提示,否则正常判题。
2.问题:学生信息的处理复杂,学号与答卷的对应关系难以管理
1.解决方案:通过Student类与Answer类的结合,清晰地划分了学生信息与答卷信息的处理逻辑,使得判分、输出结果的逻辑更加简洁明了。
改进建议
通过这三次题目集的练习,我对代码设计提出了以下几点改进建议:
1.输入输出模块化设计:当前的输入输出逻辑集中在主程序中,虽然功能上能够实现要求,但并不够灵活。可以考虑将输入输出的处理逻辑独立封装成一个模块,这样可以在不同的程序中复用,提高代码的灵活性。
2.判题逻辑的优化:在判题过程中,目前的设计是通过遍历每道题目并进行判定,这种方式在题目数量较多时效率可能不高。可以考虑引入缓存机制,减少重复计算的次数。
3.测试驱动开发(TDD):在整个开发过程中,提前设计测试用例并通过单元测试来验证程序的正确性,可以帮助我们发现代码中的潜在问题,并提升开发效率。
总结
经过三次题目集的编写与提交,我系统地学习了面向对象编程的各项核心技能。这不仅包括如何设计合理的类与对象,还包括如何处理复杂的系统逻辑。通过这些题目,我深入理解了面向对象编程的精髓,学会了如何将业务逻辑抽象为类与方法,如何通过合理的类设计来提高程序的可扩展性和维护性。
在这一过程中,我也学会了如何应对编程中的各类问题,如输入输出的处理、异常处理、复杂逻辑的设计等。在接下来的学习中,我将继续深入研究如何优化代码结构、提升代码性能,并更好地运用设计模式来解决实际问题。
对于课程与作业,我建议增加更多关于复杂系统设计的项目练习,帮助我们更好地理解如何在实际项目中应用所学知识。同时,希望教师能够组织更多的编程竞赛或团队项目,通过实际应用巩固所学内容。

标签:逻辑,题目,BLOG1,试卷,面向对象,判题,程序设计,设计,代码
From: https://www.cnblogs.com/taodabao6/p/18508628

相关文章

  • JAVA学习笔记--面向对象_面向对象思想介绍
    面向对象的介绍 1.面向过程:自己的事情自己干,代表语言C语言     洗衣服:每一步自己要亲力亲为->找个盆,放点水,找个搓衣板,搓搓搓2.面向对象:自己的事情别人帮忙去干,代表语言Java语言       洗衣服:自己的事情别人干->全自动洗衣机如果......
  • 2024-2025-1(20241321)《计算机基础与程序设计》第五周学习总结
    这个作业属于哪个课程<班级的链接>(2024-2025-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(2024-2025-1计算机基础与程序设计第一周作业)这个作业的目标<了解并学习AI功能,回顾一周课程心得>作业正文...本博客链接https://www.cnblogs.com/guchua......
  • 2024-2025-1 20241407《计算机基础与程序设计》第五周学习总结
    这个作业属于哪个课程2024-2025-1计算机基础与程序设计这个作业要求在哪里2024-2025-1计算机基础与程序设计第五周作业这个作业的目标学习Pep/9虚拟机,机器语言与汇编语言,算法与伪代码,测试:黑盒,白盒作业正文https://www.cnblogs.com/wangyihan604505/p/18508312......
  • 2024-2025-1 20241312 《计算机基础与程序设计》第五周学习总结
    |这个作业属于哪个课程|<班级的链接>(2024-2025-1-计算机基础与程序设计)||这个作业要求在哪里|<作业要求的链接>(2024-2025-1计算机基础与程序设计第五周作业||这个作业的目标|Pep/9虚拟机机器语言与汇编语言算法与伪代码测试:黑盒,白盒||作业正文|https://www.cnblogs.com/son......
  • 2024-2025-120241425《计算机基础与程序设计》第五周学习总结
    2024-2025-120241425《计算机基础与程序设计》第五周学习总结作业信息这个作业属于哪个课程2024-2025-1-计算机基础与程序设计这个作业要求在哪里https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP/homework/13268这个作业的目标Pep/9虚拟机机器语言与汇编......
  • 2024-2025-1 20241415 《计算机基础与程序设计》第五周学习总结
    2024-2025-120241415《计算机基础与程序设计》第五周学习总结作业信息这个作业属于哪个课程2024-2025-1-计算机基础与程序设计这个作业要求在哪里2024-2025-1计算机基础与程序设计第五周作业这个作业的目标Pep/9虚拟机、机器语言与汇编语言、算法与伪代码、测试:......
  • 2024-2025-1 20241413 《计算机基础与程序设计》第五周学习总结
    班级链接https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP作业要求https://msg.cnblogs.com/item/4274387作业目标Pep/9虚拟机机器语言与汇编语言算法与伪代码测试:黑盒,白盒--------教材学习内容总结《计算机科学概论》第六章计算机硬件组成:中......
  • 2024-2025-1 20241314 《计算机基础与程序设计》第五周学习总结
    2024-2025-120241314《计算机基础与程序设计》第五周学习总结作业信息这个作业属于哪个课程2024-2025-1-计算机基础与程序设计这个作业要求在哪里2024-2025-1计算机基础与程序设计第五周作业这个作业的目标Pep/9虚拟机机器语言与汇编语言算法与伪代码测试......
  • 2024-2025-1 20241417 《计算机基础与程序设计》第五周学习总结
    这个作业属于哪个课程<班级的链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(如2024-2025-1计算机基础与程序设计第五周作业)这个作业的目标<Pep/9虚拟机,机器语言与汇编语言,算法与伪代码,测试:黑盒,白盒>作业正文https://www.cnblogs......
  • 2024-2025-1 20241320 《计算机基础与程序设计》第5周学习总结
    2024-2025-120241320《计算机基础与程序设计》第5周学习总结作业信息|这个作业属于哪个课程|https://www.cnblogs.com/rocedu/p/9577842.html|这个作业要求在哪里|https://www.cnblogs.com/rocedu/p/9577842.html#WEEK05|这个作业的目标|Pep/9虚拟机•机器语言与汇编语......