作业总结
0.前言
该篇博客主要用于总结先前的作业经验,对于一个学期来的OO学习进行总结性盘点,以便于后期的学习更具目的性。
1.作业过程总结
课后作业是对课堂所学知识点的最有效回顾并应用,整个过程对自身的代码编写能力、概念理解能力起到了决定性的作用,不仅是温故知新,还能查漏补缺。
目前为止,一共发布了11次作业,这些作业的考察点不断更新扩展,难度逐渐提升。Homework1是起点,是由OP过渡至OO的开端,主要用于熟练我们对于java语言风格的运用,还没有深入java核心,但也是打下坚实基础功的重要一步。Homework2则是加入了方法的创建、运用等等,对于java语法的掌握基本熟悉后,便由学生自主思考并体会面向过程和面向对象的区别、各自的优缺点,虽然不能即刻贯彻到自己代码的字里行间,但使我们有意识的区分面向过程和面向对象,以便于对之后概念性的知识点进行理解。Homework3是对类的着重考察,类是处理一道题、一个工程的基本单位,只有清晰理解了类的概念、用法,才能更好的谱写java代码,使之更具简便性、java的便捷性;也是第一次加入类图的概念,让我们拥有自己的全局观,把代码构成建立在最初设置好的蓝图上,而不是漫无目的地想到哪儿写到哪儿。Homework4是实验形式,内容主要是掌握如何用记事本写代码以及jdk中提供的java程序去运行java程序。Homework5是关于类的继承,并将其运用于一些困难的工程代码上,对于现阶段的我还是具有一定难度的,完成效果并不是很好。Homework6则是以继承为基础,结合java的多态性进行出题。Homework7的主体框架由comperable排序法构成。Homework9为减少代码耦合性相对加入代理类来应对。Homework10考察统计关键字的出现次数并用comperable进行排序输出,再以正则表达式删除无关代码,最后遍历代码比对重复部分并输出结果。Homework11是结合栈的功能,把数据、运算符输入相应栈。
在代码编写过程中,代码大体完成后,测试常常会占用很多的时间,其中除了对知识点的不熟练,还有就是不严谨导致的错误。所以在解决问题时,我们要独立思考类图中内容,确立类与类的关系,实现的功能要有区分,不能低头蛮干,要有目的性、全局观。
2.OO设计心得
OO编程思维是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。着重对类图的理解与规划,即全局观。通过对于面向对象编程的类继承、抽象类、接口等知识的学习,我学会了使用新的方式去解决某些以前无法完成的难题。面向对象编程思想中一个程序的基本组成单位是一个类,既不是类中的方法也不是类中的属性,这就要求我们在初期设计程序时,要思考一个个类的关系和功能。只有让类产生彼此间的强纽带关系,提高代码复用性,使程序高效且相对简洁,这才算得上是贯彻了面向对象的编程思维。
面向对象有三大基础特性——封装性、继承性、多态性。之所以区分于面向过程,也是由于这三点带来的优越性,相比下面向过程要显得更笨重,这也是java如今能活跃作用于各个领域的主要原因。
以下是我对三大特性的理解。
封装性:这一特点保证了数据的安全性,使之隐私化;同时还减少了大量重复的冗杂代码。封装将复杂的功能封装起来,对外开放一个接口,简单调用即可。这样也就将描述事物的数据和操作封装在一起,形成一个类;被封装的数据和操作只有通过提供的公共方法才能被外界访问(封装隐藏了对象的属性和实施细节),私有属性和方法是无法被访问的,这样也就使数据的安全得到了保证。
继承性:继承使类与类之间产生关系,大大减少了代码复用时的冗杂程度,为过渡到多态作出了重要贡献。具体来说它的实现过程很简单(也可能是我的理解不够透彻):子类可以拥有父类的属性和方法,不再重复编码便能形成相同的数据类型,同时子类还具有自身的特性,按需求可产生出相应的、特有的属性和方法。
多态性:一个父类的引用变量,可以指向其任意一个子类对象。多态性不仅对派生类很重要,对基类也很重要。任何情况下,使用基类实际上都可能是在使用已强制转换为基类类型的派生类对象。基类的设计者可以预测到其基类中可能会在派生类中发生更改的方面。
3.测试的理解与实践
在处理软件问题时,代码编写固然重要,但所有代码只有经过数次测试的再检验才能称得上是合格的代码。编写时总会有疏忽的细节,而这些小错误一般很难发现,这就需要高精度的测试去完善代码,把先前代码未涉及的功能补全或者将已存在的bug修复。日常生活中的手机、电脑使用过程,也是一个测试过程,在这个过程中,用户对于自身的体验经历提出相关建议,软件方再加入相应补丁修复、更新,这也就是测试的意义。没有永远完美的代码,所有代码都要经历不同时代的测试,在一切未知中实践并更新换代。
4.课程收获
这门课程是由面向过程过渡至面向对象的启蒙。在编写工作量较大的代码时,在类图分析方面要下大功夫,设计很重要;在测试方面消耗的精力取决于你编写时的严谨程度,在第一遍构造代码主体时就应该完全认真,否则后期工作会耗费很多时间。相比之前,对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 让容器管理更轻松!