OO第二单元作业总结
0.前言
在此单元的作业中,难度较上次有一定程度的提升,投入的时间、精力也要更多,但最终得分并不理想。对课堂知识点要及时消化,并运用于作业当中,否则不懂的知识堆积起来会造成作业上的知识盲区。
1.作业过程总结
①作业知识迭代关系:
三次作业中各有难题,各有考察点,随着课堂教学内容逐步递进。头一次作业的知识点由正则表达式和类之间的继承等构成,“水文数据处理与校检”那题很难,尝试了蛮久都没能完成,但后两题难度适中;第二次作业考察抽象类abstract,对于这一方面的知识我并没能学入脑,感觉自己的修为仍不到家,需要课后不断打磨,不然面对灵活一点的题型,我将无从下手;第三次作业则相对容易一些,有考察算法的部分,许多算法在论坛可以自学,了解其内涵,化为己用。
②如何通过作业逐步理解面向对象的封装性、继承性与多态性三大技术特性:
题目中将这三大技术特性融入了细节中,在处理题目的时候,我们常常要结合三特性去解决一些问题。封装性,就像是你对手机的使用不需要知道它的内部构造;继承性,就是对类的活用,万物皆可划分,当然,有一些类似的、有属于关系的对象就可以利用java继承性的特点,达到一些比较便捷的操作;多态性则体现在作业中的接口和实现类等方面。
③作业过程中遇到的问题及解决方法:
在处理接口问题时,常会有基础上的错误;重写、重载的区分;有些概念上的固定格式没能记牢等等问题。在查询相关知识点和论坛代码后,问题大都能解决。但有些题目,像第一次作业第一次,就感觉完全没什么头绪,代码连基础测试点都过不去,写了那么久最后还是以失败告终。
④每次作业花费的时间比例:
每次作业的都含有难题、易题,每次作业都有查询资料的过程,单独依靠上课学的内容是远远不够的,这就造成大量时间用于课后自习,而不是用于作业代码的编写。具体时间没经过计算。比例大概是 4:3:2
⑤对编程过程的严谨性的认识及教训:
在代码编写过程中,代码大体完成后,测试常常会占用很多的时间,其中除了对知识点的不熟练,还有就是不严谨导致的错误。所以在解决问题时,我们要独立思考类图中内容,确立类与类的关系,实现的功能要有区分,不能低头蛮干,要有目的性、全局观。
2.OO设计心得
①对面向对象三大技术特性之间关系的理解:
封装性的意义在于保护代码数据不被改变操作,保证成员属性的隐私化;继承性则主要用于提高代码的复用性,这也是与C有较大不同的地方,可以大大节省程序员的时间,以此简化代码;多态性指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式,方法表是动态调用的核心,也是 Java 实现动态调用的主要方式。
②面向对象设计的基本原则理解(单一职责原则及“开-闭”原则):
开闭原则:即对扩展开放,对修改关闭。这是另一种非常棒的设计原则,可以防止其他人更改已经测试好的代码。理论上,可以在不修改原有的模块的基础上,扩展功能。
单一职责原则:类被修改的几率很大,因此应该专注于单一的功能。如果你把多个功能放在同一个类中,功能之间就形成了关联,改变其中一个功能,有可能中止另一个功能,这时就需要新一轮的测试来避免可能出现的问题。
③OO编程思维的理解:
OO编程思维是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。面向对象编程思想中一个程序的基本组成单位是一个类,既不是类中的方法也不是类中的属性,这就要求我们在初期设计程序时,要思考一个个类的关系和功能。只有让类产生彼此间的强纽带关系,提高代码复用性,使程序高效且相对简洁,这才算得上是贯彻了面向对象的编程思维。
④类设计心得:
着重对类图的理解与规划,即全局观。通过对于面向对象编程的类继承、抽象类、接口等知识的学习,我学会了使用新的方式去解决某些以前无法完成的难题。
3.测试的理解与实践
①测试对于编码质量的重要性:
我认为代码编写所占的任务比重最多只能占到60%,紧随其后的测试是至关重要的。永远没有完美的代码,只有当我们不断测试、不断完善代码时,代码才能朝着更优的方向前进。缺少测试的代码是失败的、不完整的代码。
②查阅资料,假设使用Junit进行程序的测试是否可行:
经查阅资料,假设使用Junit进行程序的测试可行。
4.课程收获
总结这四周来在OO方面的教训及收获:
教训:在编写工作量较大的代码时,在类图分析方面要下大功夫,设计很重要;在测试方面消耗的精力取决于你编写时的严谨程度,在第一遍构造代码主体时就应该完全认真,否则后期工作会耗费很多时间。
收获:相比之前,对OO的思想有了更深刻的理解认识,习得了面向对象编程的类继承、抽象类、接口等新知识。
5.对课程的建议
①第三阶段作业难度、题量的建议:
考察基础知识点的题目要有,为有余力的同学设置的题目也要有。后者应该有后进生能解决的部分,不至于有人某题拿0分的情况。还有就是增加对测试点的描述,否则真是不知道自己怎么错的。
②课程内容讲解方面的建议:
希望讲解能更结合实例和作业,对于抽象概念具体化讲解。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!