第三次学期总结性Blog

一. 前言
经过一个学期的体系化学习,现对本门面向对象编程语言课程进行学期性总结。

该门课程共分为五个模块,包括博客(Blog)和PTA线上编程组成的作业模块、实验与实验报告组成的实验模块、线上课程和线上基础知识考试组成的线上模块、线下课程的考勤和学习模块以及翻转课堂和GUI互评作业组成的实践模块。

在作业模块中,博客作业是基于PTA线上迭代性大作业,针对本阶段迭代作业中的设计、编程、修改优化及最终实现所进行的具体细节及所遇问题进行具体的分析和阶段性总结,与大作业内容相适应,工作量适中,在大作业实现的基础上整体难度较小,但需要有一定的逻辑和问题分析能力。PTA线上编程分为复习题和迭代大作业。复习题即为对每阶段所学面向对象编程知识的实践复习和巩固,作业量较小,难度与日常所学知识内容相匹配。迭代性大作业为在该阶段知识学习的基础上,灵活运用所学并遵照面向对象的设计原则对相关实现问题进行编程和阶段性代码优化与扩展实现,整体难度较大(以第一次迭代难度占比最大),工作量较大,尤为考查学生的知识掌握和对知识的灵活运用,起到了良好的能力巩固和提升的作用。

在实验模块中,实验题共五次,均是针对对应阶段所学知识,围绕实际问题场景开展对学生知识的运用与巩固,实验报告则是对实验中的问题、细节、优化等进行记录和分析总结,以形成对对应实验的整体把握,难度适中,作业量较大,整体需要花费较多时间去完成(主要体现在编程部分)。

在线上模块中,线上课程主要针对学生对于面向对象编程知识的提前自主学习和整体内容的把握,着重对面向对象编程中的一些核心思想和技术进行了讲解和提醒,与线下课程配合可以让学生更好地掌握面向对象编程的核心知识。

在实践模块中,翻转课堂以学生为教学主体,通过身份转变,围绕Java FX基础知识与实践驱动事件等知识章节内容让学生分部分对相应内容进行准备、实现和课堂讲解,在实践中不仅考察了学生对于知识学习的自主性和有效性,同时也锻炼了学生的沟通协作能力和社会交际能力。GUI作业部分则是对翻转课堂和Java FX知识学习的扩展运用和成果具现,整体难度较高,作业量较大,对学生的知识能力提出了很高的要求。
以上是对本学期面向对象编程课程模块的概要总结,进而开始对课程背后的内容有了整体认知和进一步总结。


二. 面向对象技术总结
面向对象编程知识是以封装、继承、多态为三大核心技术思想,抽象类、接口、集合框架、异常以及JavaFX等相关内容为核心技术内容,“开-闭”原则(Open-Close Principle OCP)、里氏替代原则(Liskov Substitution Principle LSP)、依赖倒转原则(Dependence Inversion Principle DIP)、聚合复用原则(Composite/Aggregate Reuse Principle CARP)、迪米特法则(Law Of Demeter LOD)、接口隔离原则(Interface Separate Principle ISP)等为主要设计原则的知识体系。以下是对各主要部分的具体分析和总结:

封装: 封装作为面向对象编程的核心思想之一,是将对象的属性和行为封装起来,其载体就是类的架构思想。封装很好的诠释了面向对象编程的设计思想,是对耦合性的具象诠释。

继承:继承作为面向对象编程的核心思想之一,基本思想是基于某个父类的扩展,制定出一个新的子类,子类可以继承父类原有的属性和方法,也可以增加原来父类所不具备的属性和方法,或者直接重写父类中的某些方法。它使整个程序架构具有一定的弹性,在程序中复用已经定义完善的类不仅可以减少软件开发周期,还可以提高软件的可维护性和可扩展性。

多态:多态作为面向对象编程的核心思想之一,它使Java中的名称定义有了更为多样的实现,使程序具有良好的扩展性,并可以对所有类对象进行通用的处理。多态主要体现在方法的重载和类的上下转型两个方面。

抽象类和接口:如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。而接口则是作为类的公共行为规范标准,可以被需要的类接入并进行其中所定义的“行为”。

集合框架:集合框架作为Java的重点核心技术之一,是为对集合类对象提供了一个统一的架构,用于表示和操作集合,使集合能够独立于其实现细节进行操作。集合框架提供了高性能和高性能的数据结构和算法,能够在面向对象的编程实现中减少编程工作量,同时其提供接口和实现分离的框架设计是代码更具有可重用性和互操作性。

异常处理:异常处理提供了一种机制,使得程序在遇到错误或非正常情况时能够优雅地处理问题,而不是突然崩溃。异常处理主要分为对系统性错误和运行时错误(空指针异常、数组越界)的处理。在Java中,异常处理通过使用try-catch-finally语句块来实现。

Java FX:JavaFX是Java的下一代图形用户界面工具包。JavaFX是一组图形和媒体API,我们可以用它们来创建和部署富客户端应用程序。JavaFX允许开发人员快速构建丰富的跨平台应用程序。JavaFX通过硬件加速图形支持现代GPU。
JavaFX允许开发人员在单个编程接口中组合图形,动画和UI控件。

在对面向对象技术知识的学习过程中,通过日常的知识学习和相关题型编程,我已经较为熟悉Java基础知识和核心技术,可以独立完成多数中难度的编程实现,但对于Java FX的知识板块学习和认知仍存在较大欠缺,无法运用知识进行复杂编程的实现,需要通过后续的部分时间进行弥补和练习。


三. 收获与心得(踩坑心得)
在面向对象编程的学习征途上,我遇到过很多编程和实现细节等方面的问题。这些问题虽非常打击人,却是对于学习面向对象编程知识之路上所必经的难关。

1.封装的本质并不只是为了设计和编程的简化,而是对于面向对象设计原则的实际体现。封装就像给物品套上包装盒,用 private 保护数据(如银行账户余额),通过 getBalance()、setBalance() 方法安全读写。通过封装,外部只需调用方法,无需知道内部细节(如同用遥控器开电视,不需懂电路原理)。但同时,过度封装会写很多重复的 get/set 方法,造成不必要的工作量和程序架构。

2.继承是对代码复用与扩展,父类与子类之间的关系类似家族遗传--子类继承父类特征(如 Dog extends Animal 自动获得 eat() 能力)。所以因为继承的特性,我也总是会犯老师多次提醒的继承问题--为省代码乱继承(如让 Car 继承 Engine),或是总是因为模糊两者之间的关系而在实际的问题中造成两者错误的继承。所以在面向对象编程的问题中要始终牢记类间关系的重要性和合理性,避免犯胡乱继承和失误继承的重大“政治”错误。

虽然在课程的学习中发生了诸如以上等很多问题,也曾一度让自己自我怀疑自己能否真正学好一门编程语言。但当利用各种方法将大部分问题和疑惑解决之后,其实并没有当时想的如此不堪,这些问题和“坑”正是让自己不断向上向前提升最好的动力!


四. 改进建议及总结
课程相关建议:
教师方面,老师在授课时可以继续深入和突出对学生的思想道德教育,提高学生的思想道德修养和软件素养相辅相成以减少学生的违规违纪行为,保持对于老师和课程相关学习的基本的个人行为和意识;课程方面,针对于翻转课堂的自主学习内容可以适当进行一些范围调整,突出学生对基础知识的自主思考和深入扩展学习,对于事件驱动等核心Java FX技术内容可以突出老师的教学授课地位,以更好地适应多数学生对相关知识点的掌握,减少讲解学生搜索资料内容与听课学生理解能力的严重不匹配;作业方面,课程中期阶段可以适量加大对基础复习题的题量以进一步巩固学生的Java·基本编程能力,更好的理解类与对象和Java核心技术的概念,适当降低前期迭代性大作业的整体编程量,同时减少问题思考和设计的逻辑难度以更好针对提升学生对面向对象编程的核心能力;实验方面,对于五次实验的实际问题内容可以进行扩展(即将对于单一问题的五次迭代转变为对多类问题的少量次迭代),在符合考察阶段性所学知识的同时丰富对实际问题的构架和编程实现,增强学生的实际运用能力;课程组织方面,课上可以扩大对实际问题编程的时间占比,注重对学生限时问题思考和编程能力的培养与编程速度的提升。而在课下可以探索由自由组队学习讨论小组推动为实际课程需要和鼓励要求,在相互促进的同时培养同学的团队学习和协作的能力,也符合实际社会交际教育的需要。

自我总结与规划:
在本学期面向对象编程的课程当中,我对于大部分知识的学习和理解复习始终保持着积极且主动的态度,面对不懂的角度也在大纲规定的范围内采取合适的途径搜索相关的解决思路去尽可能解决过程中的各种问题以更好地掌握Java的核心技术知识,直到现在,除了Java FX和事件驱动编程的知识掌握仍有欠缺之外,课程所要求的面向对象编程的相关重点知识我已基本可以掌握和实现。

在之后对于Java这门知识,我将利用暑假假期和下学期的部分时间继续对所欠缺的知识部分进行巩固复习和对其他核心知识进行深入的拓展学习,同时始终继续开展对于程序主要设计原则的学习,为之后的代码之路做好准备。