Java面向对象程序设计课程总结性Blog
一.前言
在整个学习面向对象程序设计课程的过程中,我进行了多次作业与课程的学习,总体而言,这门课程的学习内容设置对我而言较为合理,我也能比较好的接受。Blog作业次数虽少,但因其对深度反思与全面总结的高要求,对我来说富有挑战性,投入的时间精力也远超预期,但每次经过Blog作业后,都深刻揭示了我在代码规范、设计思维和项目梳理上的问题,能够让我清晰地看到自己在面向对象程序设计上存在的问题。而在PTA上的作业训练我是最为感觉合适的,题量适度,每道题目都精准针对面向对象编程的对应核心技能进行训练,难度设置合理,既避免过于简单又未陷入过度困难,在稳步提升我的编码习惯和设计能力方面成效显著。贯穿始终的实验环节则有效连接了理论与动手实践,让我通过自己完成的程序进一步逐渐了解了多态,继承等等面向对象程序设计中的知识点。同时,通过线上课程提供的系统化Java知识内容与在线下课堂时的老师面对面教学、即时互动及深入指导紧密结合,各自展现出独特价值和帮助,相辅相成地为我提供了高效的学习路径,促成了我在Java面向对象编程领域的显著成长与技能学习,让我受益匪浅。
课程所涉及知识点:
在对于面向对象程序设计课程的完整学习中,我从零到有学习了多种在面向对象程序设计中非常有用的知识点和编程思想。实现了数据的隐藏与模块化构建的封装,构建了类之间的层次关系并促进代码复用的继承,为方法赋予了灵活的执行形态的多态,极大地提升了程序的抽象能力和扩展性。同时掌握了抽象类的使用方法,并深入理解了接口和抽象类在规范行为和实现基于接口的多态扩展中的关键作用。在保障程序安全运行方面,老师还教学讲解了异常处理机制,学会了如何通过捕获(catch)、抛出(throw)和自定义异常来处理程序运行中的错误与异常状况,使程序更加稳定可靠。此外,课程将所学知识应用于实践,教授了JavaFX作为构建现代图形用户界面(GUI)的解决方案,通过了解了其核心组件、事件处理机制和基本的UI布局概念,为开发交互式程序应用奠定了初步基础。这些内容共同构成了本课程涵盖的完整Java面向对象编程与应用开发知识体系的关键组成部分。
整体课程题量感受:
课程的作业题目数量总体上较少,但具体内容并没有因为题量较少而导致考察的内容不足,很好地通过少量而精的题目对学生的知识点以及方法对象的设计进行了多方面的检测。但为了完成度的保证,完成作业和面向对象程序设计的学习的过程往往需要投入的时间较多,也不会过于轻松,经常让我投入了大量的时间。能够让我较好地完成我对于面向对象设计知识的练习。也能较好地训练我的基础编程能力和习惯,处于一个总体上比较合适,但还是希望略少一点的范围。
整体课程难度感受与建议:
总体而言,本课程的学习难度呈现较为平缓但结构合理。老师在线上与线下授课中对核心概念等知识点的讲解清晰透彻,极大地降低了理论知识点的理解和入门门槛,使得课程主体知识框架的构建过程整体上感觉顺畅、易于跟进。然而,这并不意味着课程缺乏深度或挑战,紧密结合各知识单元的实验任务、需要深度总结反思的Blog作业以及综合应用JavaFX的实践环节,都带给了我非常大的挑战和成长,要求将所学知识置于真实应用场景中,要求投入大量的时间进行调试、设计、反思与优化。正是这些具有挑战性的实践与应用环节,最终确保了对Java面向对象编程能力进行扎实而深入的锻炼。在清晰的教学引导与难度的实践要求之间取得了较好的平衡,促成了富有成效的学习历程。
二.面向对象技术总结
在整个面向对象程序设计的过程中,所涉及到了在java语言与面向对象程序设计中各种主要的知识点和思想,比如多态,继承,抽象类,设计原则等等,在此联系对应的实验对其专门分别进行总结与分析。
| 章节实验 | 涉及知识点细节 | 难度评级 |
|---|---|---|
| 实验一:Java程序结构 | • Java基础语法与数据类型 • 控制结构(循环/分支) • 方法定义与参数传递 • 数组与字符串操作 • 基础输入输出 |
⭐ |
| 实验二:类与对象 | • 类定义与构造方法 • 对象实例化与属性访问 • 封装与访问控制修饰符 • getter/setter方法 • 方法重载与静态成员 |
⭐⭐ |
| 实验三:继承与多态 | • 类继承与super关键字 • 方法覆盖(@Override) • 多态与向上转型 • instanceof类型检查 • final关键字的用法 |
⭐⭐⭐ |
| 实验四:抽象类与接口 | • 抽象类定义与抽象方法 • 接口实现 • 接口多继承特性 • 方法设计模式 |
⭐⭐⭐⭐ |
| 实验五:用户图形界面 | • JavaFX框架基础 • FXML布局与Scene • 事件处理机制 • 控件绑定与属性监听 • CSS样式定制 • 异常处理 |
⭐⭐⭐⭐ |
Java程序结构(实验一)
知识点主要内容
在实验一的学习中,我系统地进行了命令行环境下的基础操作实践。通过实际运行诸如java -version这样的关键命令,我不仅成功确认了系统中所安装Java运行环境的详细版本信息和配置细节,更深入地理解了Java程序在底层执行时所依赖的环境设定及其重要性。这个动手验证的过程,为我清晰构建起了Java运行时环境的核心概念框架,并为我后续的学习与实践打下了坚实基础。
知识点掌握程度
掌握了环境认知后,我逐步展开了对Java程序的调试实践。在动手编译与运行自己编写的示例代码过程中,我一点点熟悉并掌握了如何利用命令行参数辅助调试、分析程序执行流程以及解读关键信息输出的基本方法。更为重要的是,通过反复尝试和修正,我得以在实践中直接接触到了多种常见Java代码错误,如语法书写问题、类型不匹配等,真切体会到了它们产生的典型场景和相应的修改策略。这不仅锻炼了我的纠错能力,也极大地加深了我对Java编程规则和基本原理的实际理解,为后续更深入的学习奠定了重要的实践基础。
而现在我也已经熟悉了Java语言的使用方法与原则,能够轻松根据运行要求部署环境,也能够自由使用java语言编写自己需要的代码
类与对象(实验二)
知识点主要内容
在Java里,类Class扮演着核心与基本模板。它不仅仅定义了特定实体的抽象数据类型,更精确定义了组成该实体的属性(通常称为成员变量或字段,如一个人的姓名、年龄)和行为(即方法,如一个人有说话、行走的能力)。类的定义过程本质上是程序员进行数据抽象和行为封装的关键步骤,它将现实世界中某一类事物的共性特征和操作集中在一起描述,构成了一个逻辑上的整体。特别重要的是,类中包含一种特殊的方法——构造方法,它在创建该类的新实例时被自动调用,承担着初始化新对象状态的重要职责。理解类作为构造对象的模板这一本质,是掌握面向对象编程的基石。
而类的运用需要通过对象才能真正实现其价值和作用。对象是类的具体实例化产物,是运行时根据类的定义在堆内存中创建出来的一个具有特定状态和行为的独立实体。通过 new 关键字触发构造方法来创建对象(如 Person person1 = new Person("Alice", 30);),随之在内存中分配的独立空间,存储该对象独特的属性值。每个对象都拥有自己的状态并能执行类中定义的行为。同时,封装的原则要求对对象内部属性的访问通常应通过特定的公共方法(如 getName(), setAge() 这样的 getter 和 setter)进行,这确保了数据的安全性和可控性。Java程序的运行核心就是对象之间的交互与协作,理解对象是类的实例、承载实际数据和操作的实体,是进行有效Java程序设计的关键。
知识点掌握的程度
在实验二中,通过设计和实现模拟“动物进冰箱”的程序,我对Java中类的结构框架与对象的实质意义获得了深入的理解和掌控。我成功构建了描述不同核心实体的类,清晰定义了它们各自的内在逻辑与具体的行为表达,例如如何描述一个动物的状态及其核心动作,以及如何界定一个冰箱的运作原理和交互规则。更重要的是,我熟练掌握了通过特定机制将类的抽象描述转化为程序中具有独立生命力的具体对象的过程。这一实践深刻诠释了类作为基本单元与对象作为执行实体的根本关系,并将面向对象的设计思维从抽象理念落地为具体的构建能力。
实验初期,对于为类中的状态信息专门设计访问路径,尤其是运用getter和setter这样标准方法的做法,我并未给予足够重视,主观判断其略显繁琐且作用有限。然而,随着程序承载的功能逻辑日益深化,特别是不同对象间信息交流的复杂度显著增加后,轻视规范化状态管理所带来的问题开始集中暴露。我深刻体验到缺乏有效控制通道所引发的混乱,关键数据可能被无意或意外修改,破坏程序整体逻辑的稳定性,对象内部状态的安全性与完整性受到潜在威胁。这也让我后来严格执行使用getter和setter方法,彻底改变了我的认知。我认识到,getter和setter远非简单的访问工具,它们是实现对象间信息交换的安全通道,保障了状态变更遵循预定逻辑,它们是维护对象封装性这一核心设计理念的重要屏障;同时,它们为程序提供了可预测、统一的交互接口,极大地增强了系统的清晰度、健壮性与可维护性。这次实验是我对Java设计理念认知发展的重要一步,深刻理解了getter/setter方法在构建可靠、安全且易于管理的面向对象程序中的基础性地位和不可或缺的价值,是提升程序内在质量的关键实践。
继承与多态(实验三)
知识点主要内容
继承允许新类(子类)基于现有类(父类)构建,通过extends关键字实现对父类属性与方法的复用与扩展。这种层级关系本质上是"is-a"的逻辑表达(如"猫是动物"),形成清晰的类族体系。多态性则通过继承树中"父类引用指向子类对象"(如Animal a = new Cat())实现,其核心在于运行时动态绑定——当调用被重写的方法时,实际执行的是子类的具体实现。配合方法重写@Override的强制规范,多态性使得程序能基于抽象类型统一处理多种具体对象,极大增强了代码的扩展性与灵活性。
知识点掌握的程度
在构建分层体系(如多种不同动物类继承自动物基类,多种不同电器类继承自电器基类)时,我深入实践了继承关系的设计逻辑。通过重写动物叫声等关键方法,我亲手体验了多态的作用,使用统一的父类引用却能触发不同子类的特异行为。这一机制提高了我对代码通用性的理解,只需维护基类接口即可兼容未来任何新子类。也让我真正理解到了拓展这一非常重要的概念,这是我之前从未想过的。让我掌握了在保持多态优势的前提下安全处理对象类型的技巧。这次实验使我真正领悟到继承与多态作为面向对象的核心要素,对构建高弹性、低耦合系统的重要意义。
抽象类与接口(实验四)
知识点主要内容
抽象类(abstract class)通过声明抽象方法强制子类实现特定行为,其自身可包含具体方法和字段,常用于构建具有部分实现的基础模板。接口(interface)则是纯粹的行为契约,在Java 8后可通过默认方法提供基础实现,并通过implements关键词实现多继承能力。两者本质区别在于:抽象类强调"是什么"的继承关系(如冰箱是家电),关注代码复用;接口聚焦"能做什么"的能力声明(如可打开关闭),强调行为规范。@Override注解在实现抽象方法时起到关键校验作用,而接口多继承特性为类赋予了多维能力组合的自由。
知识点掌握的程度
在为电器设计抽象类和为动物定义战斗力接口时,我深刻体会到分层抽象的便利。通过重写抽象类中的抽象方法,同时实现接口的方法,我切身理解了接口和抽象类如何打破单继承局限,使对象能力突破限制的。尤其当尝试为同一接口配置不同实现类(如大象/老虎均实现叫声接口)时,基于接口编程的标准化优势展现出来。这次实践让我清晰掌握了在"部分通用"与"能力拓展"两种场景下,如何精准选用抽象类与接口来构建优雅灵活的系统架构。也让我在代码的编写中学会了熟练地使用抽象类和接口来完善代码结构,制作涉及出更加完善健全的程序。
用户图形界面(实验五)
知识点主要内容
JavaFX 构建用户界面的核心依赖于几个基础结构单元。舞台 (Stage) 是整个应用程序的最顶层窗口容器,承载着可见的界面内容。每个舞台包含一个 场景 (Scene),它定义了界面内容的整体尺寸和根容器。在场景内部,需要放置 布局容器 (Pane 及其子类,如 StackPane, VBox, HBox, FlowPane 等) 来组织和排列各种 视图组件。这些视图组件包括用于可视化元素的 图形基元类 (Shape 的子类,如 Rectangle, Circle, Line) 和用于信息展示的 文本显示类 (Text, Label)。理解并运用这些基础单元是构建可视化界面的第一步。初步接触的 MVC (Model-View-Controller) 设计原则 则强调了分离核心数据逻辑(Model)、界面表现层(View,主要由上述图形、文本等组件构成)和用户交互控制逻辑(Controller)的理念,为构建结构清晰的程序奠定基础。
知识点掌握的程度
通过构建基于JavaFX的简单图形化应用(例如展示动物状态或模拟冰箱开关),我系统性地实践了核心界面单元的运用。从创建并配置主舞台 Stage 开始,到为其设置合适的场景 Scene 大小,再到向场景中添加作为根容器的 StackPane 或 VBox 布局,我对这个层次化容器结构建立了直观认知。在布局容器中,我练习了添加基础视图元素:运用 Rectangle、Circle 等图形类设计动物或冰箱的图形化表现,利用 Text 或 Label 类清晰展示关键状态信息(如动物类型、战斗力),并尝试使用不同布局容器来组织这些组件的排列方式,以及制作动物进入冰箱的动画。虽然交互功能还处于基础阶段(如按钮点击事件),但已初步应用了事件处理方法(如为按钮设置 setOnAction),并在控制器类中编写响应逻辑。这个过程让我深刻体会到 MVC 原则的价值——视图层(各种图形、文本组件构成的界面)专注于展示,控制器响应视图事件并操作模型数据,模型则管理核心状态(如动物是否在冰箱内)。这次实验成功将抽象的界面元素和设计原则落到了实处,让我掌握了利用 JavaFX 基础单元搭建可视化界面结构的核心技能,理解了组件层级关系(舞台→场景→布局→视图组件)和分离关注点(MVC)的必要性,为开发更复杂的交互界面打下了概念和技术基础。不得不说,javafx作为交互的基础学习过程是相当复杂的,这也是我目前仍难以完全掌握的内容,不过我仍然会尽力去完善对于javafx使用的学习。
航空ui程序
在开发航空货运管理系统的过程中,我系统性地掌握了JavaFX的核心技术应用能力。通过构建多模块界面,深入理解了嵌套布局的灵活运用,特别是如何通过不同布局容器的组合实现复杂界面结构。在数据展示层面,实践了表格控件与动态数据源的深度集成,实现了数据的实时刷新与多维度排序功能。交互设计方面,建立了完整的事件响应机制,将用户操作与业务状态变更紧密结合,同时通过状态机模型确保订单流程的合规性。视觉呈现上,感受了CSS样式对用户体验的提升价值,运用颜色编码、动态效果等视觉语言增强信息传达效率。最终形成了一套涵盖界面构建、数据联动、交互响应、视觉设计的完整解决方案,为JavaFX在应用开发中的实践积累了重要经验。
登录页面


主页面

创建订单页面


订单管理页面

订单详情页面

支付订单页面

物流查询页面


三.踩坑心得
出现的问题
- **1、正则表达式的运用总是出错:在编写和调试正则表达式时,常因对元字符、量词、分组捕获等语法规则掌握不牢固或理解偏差,导致模式匹配结果与预期不符;尤其是在处理复杂文本结构(如嵌套标签、特定格式的日志)或边界条件时,频繁出现漏匹配、过度匹配或匹配失效的问题,需反复调试且难以定位错误根源,凸显了正则表达式语法严谨性和上下文依赖性的掌握不足。
- **2、对于七大面向对象程序设计原则的理解和牢记:单一职责原则、开闭原则、里氏替换原则、接口隔离原则、依赖倒置原则、迪米特法则、组合复用原则的理论我一开始并未重视,实际编码中难以精准辨析各原则的适用场景与核心差异;常常因为自己的片面理解,导致设计僵化、代码冗余或扩展性差,缺乏将原则灵活转化为具体实现的能力。但在认真地牢记设计原则后,我也能明显感觉出编程时的便利和条理性大幅提高了。
- **3、对javafx的布局不了解导致呈现的动画效果总是有问题:对Pane、BorderPane、GridPane等布局容器的嵌套规则、坐标计算机制以及控件约束属性缺乏系统认知,导致动画效果受布局动态调整影响而出现位置偏移、尺寸错乱或图层遮挡;对Transform、Clip等图形变换操作与布局边界间的相互作用把握不足,使得平移、旋转等动画效果在容器重排时偏离预期轨迹或产生视觉残影,暴露了布局体系与动画底层机制的协同知识短板。在未来对于Javafx的运用还需要进一步熟练与学习。
四.自我改进建议
在经过整个面向对象程序设计的学习过程后,我在看到自己暴露的各种问题后,我对面向对象程序设计有了更多不同的感受,因此我提出了以下系统性改进方向:
正视不足,加强刻意练习: 针对正则表达式应用的困难,未来将主动寻找更多文本处理练习机会。从简单模式入手,刻意拆分复杂规则进行分步攻克。重点在于,每次出错后必须深入分析具体原因并归类和记录,通过大量有意识的练习,逐步形成更精确、更稳健的使用习惯。
化抽象为具体,在实践中领悟原则: 设计原则理解不透的问题,关键在于将其融入具体代码实践中去体会。今后写代码时,要养成习惯性思考:这个类的职责是否单一?需求变动时是否方便扩展?尝试主动给当前设计“挑刺”,思考替代方案(如拆分类、使用接口)是否能带来更清晰、更灵活的结构。唯有在项目或练习中反复应用、对比和感受遵守原则带来的便利(如易修改、少耦合),才能深刻理解其价值并自然应用。
耐心磨砺基础,分层解决复杂问题: JavaFX动画效果总是出错,根源在于对布局机制的基础不够重视、不够扎实。必须沉下心来,系统研究各类布局容器的运作原理(如元素的定位、嵌套影响、尺寸变化响应)。务必保证静态布局完全准确无误后,再从单一、基础的动画效果(如平移)开始叠加,每次只增加一点复杂度并充分测试确认。解决问题的关键在于回归基础,分层次构建,对细节保持高度耐心。
精做练习,注重过程反思: 改变为了完成任务而练习的心态。投入练习时,深度思考“为什么”和“如何更好”。即便完成题目,也要持续追问设计的合理性与可改进之处(如命名、结构、边界处理)。练习结束后,务必留出时间梳理关键收获,特别是记录所犯错误及根源想法。确保每一次练习都有效转化为理解和能力的提升,并将持续优化编码习惯(如追求清晰命名、合理结构)贯穿于所有实践中。
五.总结
回顾整个面向对象程序设计的学习历程,我深刻认识到这门课程提供了一次系统构建编程思维和提升工程化能力的宝贵机会。从最初接触Java基础语法与环境配置,到最终能够完成融合图形界面与核心逻辑的综合实验,整个过程中所累积的经验与认知远远超出技术本身的范畴。
课程内容的合理结构与阶梯式推进使我深刻学习到了面向对象程序设计的技巧。实验环节的设计有效引导我在实践中体会了面向对象思想的实际应用价值。反复的调试过程,不断强化了一个核心认知:清晰的结构设计与严谨的实现细节同等重要。这直接培养了我拆分复杂问题、控制变量分步验证的解决能力。
在课程的学习中我也遇到了很多困难,这些具体困难都指向更深层的启示:技术的掌握源于对基础规则的准确理解与反复验证。我明确意识到,忽略基础(如布局原理)或轻视规范(如未合理使用方法访问数据),必然导致后续工作的反复返工。这使我形成了对代码质量与设计清晰度的更严格要求——开始习惯在开发前审视整体结构,在关键环节预留验证点,并为后续调整保有空间。
这门课程最重要的成果在于逐步建立了一种系统性、结构化的编程思维方式。学习重点明确而高效;调试,代码审查的标准也让我对代码有了新的理解和思维。这种思维方式直接影响了我的编程习惯,更注重命名准确性与模块职责单一性,主动记录常见错误及其解决方案,并有意识地通过阶段性总结沉淀经验。
面对未来的学习与开发任务,我认识到技术能力的提升是一项持续性工程。这门课程建立的基础框架和培养的实践方法为后续深入学习铺平了道路。我将继续贯彻在课程中形成的严谨态度与结构化思维,不断精进设计能力与实现质量,以应对更具挑战性的软件开发任务。这次学习经历不仅提升了特定的编程技能,更重要的是塑造了工程化解决问题的思维路径,为持续成长奠定了坚实基础。
改进建议与意见
当前的实验系统在使用上流程过于繁琐,调试也异常麻烦,极大增加了不必要的操作负担;而Java面向对象程序设计实验的核心是考察对设计原则、设计模式和编程规范的理解与应用,代码量大本是训练所需,但实验提交系统施加的诸多限制——如严苛的文件目录结构、僵化的输入输出处理方式、特定的环境依赖以及僵硬的提交规则——不仅未能有效服务于这一核心教学目标,反而导致学生需要将大量精力浪费在满足这些系统规则的技术细节上,而非专注于提升设计思维和代码质量;这种偏离重心的限制性设计不仅未能促进学习,反而严重打击了学生的积极性和创造性,使学生因担忧合规性错误而无法自由探索不同的设计方案与实现模式,束缚了其发挥空间;因此,建议针对实验提交系统进行优化,重点在于简化操作流程、改善调试体验、聚焦核心设计目标的评价(如降低对非功能性格式的严苛校验、提供更灵活的输入输出与构建环境支持、引入更合理的提交策略),以此降低系统本身的易用性门槛并减少不必要的约束,将学生从应对合规性障碍中解放出来,使其能将主要精力真正投入到理解面向对象设计思想、优化代码结构和提升设计水平上,从而有效激发学生的参与热情、释放其创造潜力,最终促进学习效果的实质性提升。

浙公网安备 33010602011771号