luyanwei24201920

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

目录

一、前言

本门课程的教学部分分为线上课程和线下课程两个部分,而作业部分则是分为PTA作业、线上课程习题、翻转课堂、实验设计与实验报告和总结Blog。
在线下课程的部分按照对象和类、抽象类和封装、继承与多态、抽象类与接口、Javafx基础和异常处理、一些集合框架。线上课程则是与线下课程类似,还包含正则表达式和工具类。
作业部分以四次PTA作业、两次实验和一次Blog作业为循环,时间一个月左右。其中的实验和Blog作业的工作量偏大(认真亲力亲为完成的情况下),然后PTA作业虽然看起来不多,确实浓缩了密度很大的知识,对于水平一般的同学来说也很耗时间,难度较大。前期的PTA题目偏基础、中期最难偏算法、后期侧重于实现面向对象编程,抽象类设计、继承和接口等。在整个学习过程中,需要同学具备迎难而上的精神,面对环环相扣的教学场景和各种各样的困难,跟着老师的步伐,一步一个脚印才能最后提升能力,学到知识。
对我来说,实验设计和实验报告是最耗时间的,尤其是在实验指导书不完善的情况下,而PTA的习题则是难度偏大。

二、面向对象技术总结

结合了整个课程的各个环节,对我的面向对象各方面知识的学习情况做出了总结

PTA 作业

在 PTA 作业中,我对面向对象的核心概念有了扎实的实践。封装方面,通过定义类的私有属性和公共方法,实现了数据的隐藏与保护,逐渐理解了合理封装对代码安全性和可维护性的重要意义。继承和多态的应用,让我体会到代码复用的便捷,以及程序扩展性的增强。例如,通过创建父类和子类,子类继承父类属性和方法,并在多态机制下根据不同子类对象调用重写方法,实现多样化功能。
然而,在电梯算法相关题目上,我暴露出不少问题。对 单例电梯算法和面向对象原理的结合理解不够深入,导致在处理复杂数据存储和逻辑处理时,代码效率低下。异常处理方面,也存在捕获异常不全面、处理逻辑不完善的情况,程序稳定性有待提高。例如在航空货运系统的题目里,输入验证:在接收用户输入后,立即验证其有效性,如类型检查、格式验证等。异常捕获与处理:使用 try-catch 块捕获可能的异常,如输入格式错误、数值超出范围等。明确的错误提示:当输入无效时,应向用户提供明确的错误信息,指出具体的错误原因。终止程序或重试机制:对于严重错误(如航班载重量不足),程序应终止并给出明确提示;对于可恢复的错误(如输入格式错误),应允许用户重试。
在有关航空货运系统的题目里
进一步理解单一职责原则,如 Good 类专注货物属性与计费重量计算;开闭原则,通过工厂模式扩展新客户 货物类型时不修改现有代码。
提升了类间关系设计能力,合理运用继承(Customer 子类)、组合(Order 包含 OrderItem)等。
要增加注释说明关键逻辑(如费率计算规则),规范命名,提升代码可维护性。
使用 Scanner 读取用户输入,需注意处理换行符(如 input.nextLine() 消耗多余换行),避免输入错位。
学会根据错误信息定位问题,通过阅读代码、检查类定义与调用处参数,快速修复问题,提升调试效率。
此外,对于一些着重练习抽象类和接口的习题里面,教会我如何从设计每一个类开始设计整个java程序,同时考虑设计的合理性和完成的完整程度,还有打字的速度等等。

线上课程习题

线上课程习题紧密围绕知识点展开,帮助我及时巩固所学。通过习题,我对抽象类和接口的区别与联系有了清晰认知。抽象类提供部分实现,为子类搭建基本框架;接口则完全定义规范,实现类需严格遵循。这使得我在设计程序架构时,能够更准确地选择合适的抽象方式。这次线上课程给我的感觉很好,学到的不仅仅是知识本身。课程的​​知识点组织得很有条理,一环扣一环​​,再加上用了​​好几种学习方式配合着来​​,比如让大家在课堂上深入讨论思考,还有做那些跟着课程内容设计的练习题,这些都让我学得效率更高,理解也更透了。课程内容安排得很清楚,从最基础的类和对象讲起,再到封装、继承、多态这几个核心概念,最后是搞清楚什么时候该用抽象类、什么时候该用接口,难度逐步增加,学起来就很容易理解进去。线上课的形式也使得学生的学习方式更加灵活可以自由安排学习的内容和时间,同时如果有不懂的地方也可以反复地去温习,思考。

翻转课堂

翻转课堂中,同学们对javafx技术的讲解和讨论,拓宽了我的思维视角。在对 、布局等概念的探讨中,我学习到许多新颖的设计思路和应用场景。例如,在分析项目案例时,大家提出的不同封装策略,让我意识到封装不仅是语法规则,更是一种设计艺术。但在 JavaFX 相关案例设计中,我掌握得不够理想。对于 JavaFX 的布局管理、事件处理等功能,仅停留在表面使用,未能深入理解其设计思想,导致在创建复杂界面时常常感到无从下手。在本次以 JavaFX 为核心的翻转课堂中,我深感掌握程度尚不理想。
翻转课堂这种形式特别好​​。因为它不是光听老师讲,而是要我们自己先准备,再到课上跟大家讲和讨论。这让我从“坐着听”变成了“主动想”。特别是听其他同学分享,他们对“怎么封装才算合适”(度)的看法,或者讨论“在不同情况下该用哪种集合”(选型),这些都给我打开了思路,让我看到同一个问题有很多种解决办法,也让我明白软件设计​​不光讲技术,也得讲究怎么做才实用、才巧妙​​(有艺术性也有工程性)。​​线上的那些练习题特别及时有用​​。它们就盯准了每一讲的关键点来出题。比如专门设计题目让我分辨什么时候适合用提供了一些基础代码的抽象类(模板式继承),什么时候又该用只规定方法名称的接口(契约式规范)。通过解决这些模拟真实场景的设计难题,我被迫把刚学的理论用起来,感觉那些书本上的知识点一下子变活了,做设计时心里也更有底了。当然,我也知道自己还有不足的地方,比如在用 JavaFX 搭建复杂点的用户界面结构时,还得多练练。但这也很清楚地告诉我下一步该重点学什么、练什么了。总的来说,这种线上课程​​把我学习的积极性给调动起来了​​。它不仅帮我扎扎实实地打好了知识基础,更重要的是,​​训练了我用面向对象的思路去分析问题、设计解决办法的能力​​,想问题也更讲条理了。这对我以后继续学习技术和做项目,都打下了挺好的基础。

实验设计与实验报告

实验设计是对面向对象技术的综合考验。在实验过程中,我将封装、继承、多态等技术应用于实际项目,成功构建了具有一定功能的系统。通过设计类的层次结构,合理运用抽象类和接口,实现了代码的模块化和高内聚低耦合。
但在实验报告撰写时,暴露出对技术原理阐述不够清晰、实验结果分析不够深入的问题。这反映出我在知识内化和表达方面还有提升空间,需要加强对技术细节的理解和总结能力。
具体实践与技术应用:​​
​​封装:​​ 在初始版本中,我分别为“大象”(Elephant)、“冰箱”(Refrigerator)设计了核心属性和基础行为(如大象的体积、冰箱的容量与开门/关门操作)。这确保了每个对象内部状态的安全性和行为的独立性。
​​引入抽象与多态(迭代关键):​​ 随着需求复杂度提升(如引入不同种类、大小的动物和冰箱),设计进行了显著迭代:
​​抽象类 Appliance:​​ 创建了抽象基类 Appliance,定义了家用器具(包括冰箱)的通用接口和行为契约(如 open(), close(), capacity)。这使得“冰箱”不再是孤立的实体,而是可纳入更广泛“器具”体系的一部分,提高了代码的抽象层次。
​​​​实现多态:​​ 在 Refrigerator 类的 store(Storable item) 方法(或者委托给一个专门的 StorageHandler)中,我们可以根据对象的实际类型进行动态行为判断(如检查体积是否匹配)。

三、踩坑心得

在整个课程的学习中各个环节都遇到一些困难,也做出过一些效率极低的工作,对于我以后的学习有启示作用。
PTA作业:设计程序的要求不高和设计目的不明确
​​坑点​​:追求“能跑通就行”,忽视代码健壮性与设计。
​​典型案例​​:
为通过测试用例,用一些if-else的语句判断电梯运行的多种情况
滥用静态变量在多对象场景中引发状态污染(如多个Animal对象共享同一计数器)。
启示:以后​​语法正确不等于设计合理​​。PTA不仅是答案验证器,更是设计思想的检验。未来需主动思考状态是否需要跨对象共享,方法行为是否依赖对象状态。
实验设计:在整个大象装冰箱的程序设计迭代里面涉及到了大量的抽象类与继承的使用,而我没有弄清楚各个类之间的合理的调用关系,代码能跑通,却说不清设计背后的原因,同时也导致我是设计程序时花费了大量地时间尝试实现实验的设计可以贴合指导书的要求。
启示:先弄清楚需求,然后思考实现需求的方法,在之后再实现程序的设计,才能既符合面向对象的设计原则又贴合需求。
线上课程的部分主要是,没有给自己安排好一个科学完备的计划来实现全面系统的学习,导致基础较为薄弱。

四、改进建议及总结

一些小建议:

线上课程部分,建议删减一些在实际开发中极少使用的 Java 语法知识点。例如,一些过于老旧或特定场景才会用到的特性,可以简略提及或作为拓展阅读内容,而非重点讲解。将精力集中在精讲常用的 Java 语法上,如数据类型、控制语句、类与对象的基础定义等,确保学生扎实掌握核心内容。
实验部分:完善实验报告,使用提供更加清晰的需求和正确的实例代码。
翻转课堂:JavaFX 部分由于内容较多且复杂,学生在翻转课堂的形式下掌握程度参差不齐。

总结

通过这门课的学习,我初步了解面向对象程序设计思想及原则的内容和实践,从最初对面向对象编程的懵懂,逐渐掌握了面向对象的设计思想和编程技巧,实现了从 “会写 Java 代码” 到 “会用面向对象思想设计程序” 的转变。
在教学方法上,采用线上线下相结合的方式。线上课程提供了丰富的学习资源,让学生可以自主学习 Java 语法等基础知识,学习节奏可根据个人情况灵活调整。线下课程则通过教师的面对面讲解与互动,深入剖析重点难点知识,尤其是对面向对象设计思想的讲解,使学生能够更好地理解和应用。此外,翻转课堂的形式也给了学生展示自己的机会,提升了学生的自主学习能力和表达能力。
从实践环节来看,PTA 作业和实验紧密结合课堂知识,通过大量的编程练习,有效提升了学生的编程能力。PTA 作业的题目难度循序渐进,从基础语法运用到复杂的面向对象设计,逐步培养学生解决实际问题的能力。实验则以迭代的形式,从简单的功能实现到复杂系统的设计,让学生在实践中加深对知识的理解,尤其是在 JavaFX 界面设计等实验中,让学生体会到理论知识在实际项目中的应用。

posted on 2025-06-20 15:55  lu_yanwei  阅读(23)  评论(0)    收藏  举报