OO第二单元(5-8周)作业总结

  0.前言

本次随笔是针对第二单元(5-8周)作业总结。籍此帮助自己在学习Java过程中及时查缺补漏,为接下来的学习打好基础。

  1. 作业过程总结
    ①总结三次作业之间的知识迭代关系

以下是此单元的作业题目

 

 

 

 

 

 

 

题目的难度在我看来以此递减,三次作业都对多态性进行了联系,而且前两次作业还有正则表达式的相关运用。

第一次作业7-1相对更难,水文数据的检验运用到正则表达式,数据的分割和转换和数据的校验,难点主要在与正则表达式。第二次作业7-2相对较难,这次的正则表达式相对简单,但对数据格式和正确性的校验较为麻烦,第三次作业7-1相对较难,7-2在7-1上相对修改即可完成,另外也增加了一些新的东西,接口,实现 Comparable 接口中的 CompareTo()方法。题目运用的java相关知识更加综合,不再是单纯的几个知识点。
②如何通过作业逐步理解面向对象的封装性、继承性与多态性三大技术特性;

三次作业都有实验指导书,里面有关于类的设计及类图,给予我们大概的框架,可以很清晰的认识到封装性、继承性与多态性。封装性是基础,而继承性与多态性在题目的多次运用中,使我们更加收悉。第二次和第三次作业的7-1,都运用了图形的继承与多态。类图如下

 

 

 

 

 

多次对相关知识点的运用,使我更加理解这三大性质。封装使数据和加工该数据的方法(函数)封装为一个整体,以实现独立性很强的模块,继承性是子类共享其父类数据和方法的机制,多态性对象根据所接收的消息而做出动作。同一消息被不同的对象接受时可产生完全不同的行动。
③作业过程中遇到的问题及解决方法

第一次作业水文校验,遇到的第一个问题就是正则表达式不知道如何表达。首先在慕课找到了关于正则表达式的基础介绍课程进行学习,然后在菜鸟教程网站https://www.runoob.com/regexp/regexp-intro.html中找到更为详细的介绍后解决了此问题。其次是数据间的拆分,转化问题,多次使用split()方法进行拆分数据,除去空格,再进行转化后解决。然后还有一个数据全对的点,某些数据间可有空格数据依然正确,在正则表达式中增加这一项即可通过。

第二次作业一元多项式的求导,首先遇到的一个问题就是如何拆分每一项,查阅了许多网站资料https://www.runoob.com/regexp/regexp-metachar.htm,https://www.cnblogs.com/hd92/p/11322415.html,仔细学习后找到拆分方法,然后是数据的转化,biginteger与字符串的转化,参考资料https://blog.csdn.net/qfikh/article/details/52832196,https://blog.csdn.net/weixin_34306593/article/details/94314352?utm_medium=distribute.pc_relevant.none-task-blog-OPENSEARCH-3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-OPENSEARCH-3,解决此问题.

第三次作业主要是对于继承,多态和Arratlist的使用,难度不大,主要是对于继承的考察。
④每次作业花费的时间比例

第一次作业花费时间较长,有40小时,第二次作业有18个小时,第三次作业6小时,时间比例为20:9:3.
⑤对编程过程的严谨性的认识及教训

首先一定要清楚题目的要求及功能,看清楚数据的格式。其次编程时一定要先有一个框架再去写,而不是直接动手,直接动手容易写错一点后,很多结构都要修改,要尽量避免逻辑错误,多用debug去调试程序,每一个功能的完成,都需要测试这个功能是否完全无误,避免整个程序写完后运行错误,不知道错误从哪里找起,浪费过多的时间.
2.OO设计心得
①对面向对象三大技术特性之间关系的理解

封装:在一个对象内部,某些代码或某些数据可以是私有的,不能被外界访问。通过这种方式,对象对内部数据提供了不同级别的保护,以防止程序中无关的部分意外的改变或错误的使用了对象的私有部分。

 

继承:继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。通过继承创建的新类称为“子类”,被继承的类称为“父类”。继承概念的实现方式有二类:实现继承与接口继承。实现继承是指直接使用基类的属性和方法而无需额外编码的能力;接口继承是指仅使用属性和方法的名称、但是子类必须提供实现的能力;

 

多态:多态就是指一个类实例的相同方法在不同情形有不同表现形式。多态机制使具有不同内部结构的对象可以共享相同的外部接口。这意味着,虽然针对不同对象的具体操作不同,但通过一个公共的类,它们可以通过相同的方式予以调用。


②面向对象设计的基本原则理解(单一职责原则及“开-闭”原则)

单一职责:就像一个人做一件事,分配的工作不能太多,否则一天到晚虽然忙忙碌碌的,但效率却高不起来。将工作细化,分成一步一步,通过不同的功能去实现.

“开-闭”原则一个模块在扩展性方面应该是开放的而在更改性方面应该是封闭的。
③OO编程思维的理解

oo设计主要任务是将设计尽量和现实世界的事务一致化。尽量使程序设计的思路符合现实世界事务的规律。类和对象 是oo编程中最重要最基本的两个元素,在设计时,先将找到要处理的各个对象,再找到各个对象的共同的祖先,逐层抽象。最后确立各个类之间的继承关系。
④类设计心得

在设计时,先将找到要处理的各个对象,再找到各个对象的共同的祖先,逐层抽象。最后确立各个类之间的继承关系。
3.测试的理解与实践
①测试对于编码质量的重要性

测试可以找到一些特殊数据的问题,也可以测试普遍的问题是否能解决,能很快检测出程序是否可用.
②查阅资料,假设使用Junit进行程序的测试是否可行

可行.JUnit 是一个 Java 编程语言的单元测试框架。JUnit 在测试驱动的开发方面有很重要的发展,是起源于 JUnit 的一个统称为 xUnit 的单元测试框架之一。可以书写一系列的测试方法,对项目所有的接口或者方法进行单元测试。

启动后,自动化测试,并判断执行结果, 不需要人为的干预;只需要查看最后结果,就知道整个项目的方法接口是否通畅;每个单元测试用例相对独立,由Junit 启动,自动调用。不需要添加额外的调用语句;添加,删除,屏蔽测试方法,不影响其他的测试方法。 开源框架都对JUnit 有相应的支持


4.课程收获
1)测试对代码真的很重要!!!!!!!!!!!!!          

2)初步并运用掌握了多态和继承.

(3)初步学习了正则表达式,了解了正则表达式的一些基本运用,运用正则表达式并运用到代码中了。

(4)熟悉了spilt()方法的运用,学会了一些数据间的转化.

5)再一次了解到类设计的重要性
5.对课程的建议
①第三阶段作业难度、题量的建议

作业难度可适当提高,增加题目的关联性和题目知识点的运用。
②课程内容讲解方面的建议
希望每节课的课后作业可以预留多一点点的时间.

posted @   –WuJunJie–  阅读(191)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示