oop前三次作业总结oop前三次作业总结

oop前三次作业总结oop前三次作业总结

一、前言

本次的大作业是关于家庭电路设计的,总体难度较大,需要对各种类以及多态的运用熟练,在做题过程中也是遇到了诸多问题,查阅了很多资料,对面向对象的概念有了很大的提升。在这三次题目集中,7-1题目通常作为每个题目集的最后一题,旨在检验我们对前一阶段知识的综合应用能力。从知识点上看,7-1题目涉及了从基础的数据结构、算法到面向对象编程的多个方面。题量上,每个7-1题目都是综合性的大题,需要我们编写较多的代码来实现。难度上,由于7-1题目通常融合了多个知识点,因此相对较难,但这也激发了我们去挑战和解决问题的动力

二、设计与分析

该题目要求我们设计一个家庭电路模拟系统,这涉及到面向对象编程中类的设计、继承、多态等概念。 按题目要求我定义了一个electricical(电器)这个父类以及诸多子类,各种设备电路皆继承于电器父类, 在源码中以多态方式实现各部分功能,多态的优势在这一过程中得到了极大的体现,代码的复用性得到了很大的改善。

题目集1分析

题目集1是上次大作业的最后一次迭代,基本功能在前面的几次迭代中基本完成了,而这次迭代只是在原基础上多了些特别格式的处理,虽然工作量比前面几次的迭代少了很多,但还是因为没搞明白测试点的提示信息,到截至的时候仍有几个测试点没过,但是绝大部分的功能都能够通过.

image

这里应该是对多选题的处理还没处理恰当,导致怎么改都还是没通过。

题目集2分析

题目集2的是新的大作业了,题目是关于家庭电路设计的,因为是第一次迭代,只包含最基本的串联情况,而且电路异常以及电器的限制也没有加上,所以还算是轻松解决了,不过因为题目比较特殊,只涉及串联,所以当时就只写了这个功能,导致后面的工作量就大了很多,而且当时一时大意,疏忽了调档变速器的挡位限制,还在后来及时改正了,赶在题目截至前通过了。

image

还好第一次迭代难度没设太高,也是全过了一次。 ### 题目集3分析 这次迭代加入的东西就很多了,新增了输入格式并联电路以及电阻,这就导致要修改的地方就很多了,电路的整体处理也麻烦不少,最关键的是将电路整体信息传递给每个电器元件并要更新元件的状态,这个计算就有些让人头疼,但经过思路整理后,发现将所有电路都看做是串联电路,然后再在电路内部做特定处理,这样就能解决大部分问题了。可惜这次的所有测试点都没有提升,所以一直都不知道自己错在哪里了,而且给的测试用例只有三个,还都没什么代表性,导致在调试的过程中就很头大了。

image 测试点19.20当时考虑了很多种特殊情况,但是都没有对上,所以也是很可惜到截至的时候还是没有通过,不过大部分的测试点都通过了也是心满意足了。
image
image
image

父类以及部分子类设计如上,这次作业对多态的考核还是蛮多的,实际操作下来对多态的掌握确实是提高了不少,果然看得再多还是不如上手做一遍。

三、踩坑心得

在源码的提交过程中,我遇到了一系列问题和挑战,其中正则表达式的编写错误尤为突出。正则表达式,这个看似简单却实则深奥的工具,时常让我在编写时陷入困境。

有时,我会因为对正则表达式的语法细节不够熟悉,或者对某些高级特性的理解不够深入,导致写出的表达式与预期不符,进而影响了整个程序的运行结果。 为了解决这个问题,我付出了大量的时间和精力。我不断地查阅相关资料和文档,深入学习正则表达式的各种语法规则和特性。

同时,我也学会了利用在线的正则表达式测试工具,通过实际测试来验证我编写的表达式的正确性。这个过程虽然繁琐,但却让我对正则表达式的理解更加深入,也让我逐渐掌握了编写正确表达式的技巧。 除了正则表达式的编写错误外,我还遇到了性能方面的问题。在处理大量文本或复杂模式时,如果正则表达式的写法不够优化,就会导致程序运行缓慢,甚至出现崩溃的情况。这对我来说是一个全新的挑战,因为我之前并没有太多关注这方面的问题。

在使用多态性的过程中,我遇到了几个主要的问题:

接口定义不明确:最初,我在Device类中定义的方法过于简单,没有充分考虑到各种设备的不同需求。这导致在后续的开发过程中,我需要不断地修改和扩展Device类的方法,增加了代码的复杂性和维护成本。为了避免这个问题,我意识到在定义接口时应该尽可能地明确和全面,考虑到所有可能的设备类型和操作。

类型转换错误:在编写代码时,我曾经试图通过类型转换来直接操作插入的设备。然而,这种做法存在很大的风险,因为如果插入的设备类型与期望的类型不匹配,就会导致程序崩溃。为了避免这个问题,我改用了多态性的做法,通过调用接口的方法来操作设备,从而避免了类型转换错误的风险。

多态性使用不当:在初版代码中,我没有充分利用多态性的优势来简化代码结构。我为每个设备类型都编写了一个专门的处理函数,这导致代码冗余且难以维护。后来,我意识到可以通过让设备类实现统一的接口,并在插座类中调用这些接口的方法来简化代码结构。这种做法不仅提高了代码的可读性和可维护性,还降低了代码的复杂性。

此外,在编写代码的过程中,我还发现了一些容易忽略的问题。比如,对于输入数据的格式和边界条件的处理,我之前并没有给予足够的重视。这导致在一些特殊情况下,我的程序会出现错误或异常。为了解决这个问题,我开始更加细心和严谨地编写代码,充分考虑各种可能的情况和边界条件。我也学会了利用一些测试工具和方法来验证我的代码的正确性,确保它在各种情况下都能正常工作。 回顾这段时间的学习和实践过程,我深感自己在程序设计方面还有许多欠缺,需要多进行实践,不断提高自己的编程水平。

同时,我也希望能够在课程、作业和实验的组织方面得到更多的指导和建议,以便更好地发挥自己的潜力和实现自己的目标。

四、改进建议

针对我在完成题目集过程中遇到的问题和挑战,我提出以下具体的改进建议:

首先,加强正则表达式的学习是至关重要的。正则表达式是一门博大精深的学问,其语法和特性繁多,因此我需要进一步深入学习,掌握更多的高级特性和技巧。这包括学习正则表达式中的元字符、转义字符、分组、选择、重复等概念,并理解它们之间的逻辑关系。

同时,我也应该多做一些实践练习,通过解决实际问题来巩固和加深对正则表达式的理解。 其次,优化代码性能是我在未来学习和实践中需要注重的方面。在处理大量文本或复杂模式时,正则表达式的性能往往成为关键因素。为了提高代码的运行效率,我需要学习和掌握正则表达式的优化技巧,如使用非贪婪匹配、减少回溯次数等。此外,我还可以考虑使用其他算法或数据结构来辅助处理文本数据,如使用哈希表来存储匹配结果,或使用字符串分割和拼接等操作来简化处理过程。

另外,注意细节和边界条件也是我在编写代码时需要特别关注的问题。在正则表达式的编写过程中,很容易因为忽略了一些细节或边界条件而导致匹配结果不符合预期。因此,我需要在编写代码时更加细心和严谨,充分考虑各种可能的情况和边界条件。特别是对于输入数据的格式和有效性验证等方面,我需要加强检查和处理,确保输入数据的准确性和可靠性。

最后,在题目设计方面,我建议增加一些实际应用场景的题目。通过模拟真实场景中的文本处理问题,可以让学生更深入地理解正则表达式的应用和价值。同时,也可以设置一些更具挑战性的题目,激发学生的创新思维和解决问题的能力。这些题目可以涉及到复杂模式的匹配.

综上所述,通过加强学习、优化性能、注意细节和边界条件以及增加实际应用场景的题目设计,我相信我能够更好地应对未来在正则表达式应用方面遇到的挑战和问题,提高自己的编程水平和解决问题的能力。

五、总结

通过这三次题目集的深入练习,我对面向对象的理解和应用能力得到了显著提升。每次的练习都为我提供了宝贵的实践机会,使我在掌握各种基本语法和用法的同时,也学会了如何将其灵活运用到实际问题中。

在练习过程中,我逐渐认识到多态的强大之处。它能够极大的提高代码的复用性,使得代码不会显得那么冗杂,在拥有相同属性的类中,各个变量可以不用多次定义,多态是编程中不可或缺的重要工具,若没有多态,那么冗杂的代码会使阅读效率极大地降低,思路也很难理清,工程的完成时间也会被延迟。

然而,在练习过程中,我也发现了自己在正则表达式应用方面的一些不足。有时,我会因为对正则表达式的语法细节不够熟悉而写出错误的表达式,导致匹配结果不符合预期。

此外,在处理一些复杂模式时,我也曾遇到性能问题,需要进一步优化正则表达式的写法以提高运行效率。 针对这些不足,我计划在未来的学习和实践中采取一些改进措施。

首先,我将继续加强对正则表达式语法和多态的学习和理解,通过查阅相关资料和文档,不断巩固自己的基础知识。

其次,我将积极参与更多的实践项目,通过实际问题的解决来提升自己的应用能力和技巧。同时,我也会注意总结自己在练习过程中的经验和教训,避免犯同样的错误。

除了个人努力外,我也希望能够在课程、作业和实验的组织方面得到更多的指导和建议。我相信,通过老师的悉心指导和同学们的相互帮助,我能够更好地发挥自己的潜力,实现自己的目标。

总之,这三次题目集的练习让我对程序设计有了更深入的理解和实践,也为我未来的学习和工作奠定了坚实的基础。我将继续努力提高自己的程序设计能力和编程水平,为未来的挑战做好准备。

posted @ 2024-06-09 15:18  一只小腊鸡  阅读(6)  评论(0编辑  收藏  举报