第三次Blog作业
一、前言
学习java这门课程对我来说是一场心酸的历程,但是通过Blog作业、PTA作业、实验、线上课程以及线下课程等多种形式,不仅涵盖了丰富的理论知识,还让我在实践中深刻理解。
从工作量来看,这门课程安排得相当充实。Blog作业要求我们对所学知识进行总结和分享,这不仅加深了我对知识的理解,还锻炼了我的写作和表达能力。PTA作业则提供了大量的实践机会,让我在解决实际问题中巩固所学知识。比如PTA作业09,这个作业要求我们设计一个完整的物流订单管理系统,涵盖了客户、货物、航班、订单等多个类的设计和实现。这个作业要求我们能够综合运用封装、继承、多态、集合框架等知识来实现一个复杂的系统。通过完成这个作业,我深刻体会到了面向对象编程的强大功能和灵活性。
实验更是让我深入探索面向对象编程的各种应用场景,通过动手实践,我对各种概念有了更直观的认识。在完成JavaFX图形界面项目时,我经历了前所未有的挑战。例如,实验五要求我们设计一个基于JavaFX的电器动物互动系统。这个实验不仅考察了我们对面向对象编程的理解,还要求我们能够综合运用JavaFX框架来实现一个图形用户界面。我设计了一个包含冰箱、洗衣机、微波炉等电器的类体系,以及大象、老虎、狮子等动物的类体系,并通过多态实现了动物进入电器的行为。对于动物在电器中的位置,我苦恼了很久,动物的圆球进入电器后,如果都堆在同一个位置,那看起来可太乱了,也不符合实际场景。最后我决定先固定了十个位置,每进入一个动物就把位置标记一下,这样就不会重复使用了。这样一来,动物圆球在电器里就分布得整整齐齐的,看起来也舒服多了。同时,我还学会了如何使用JavaFX的动画功能来实现动物的移动效果,这样看起来体现效果更好,这使得程序更加友好和易于使用。
在难度方面,课程整体难度适中,但部分知识点和实践任务确实具有一定的挑战性。例如,在理解抽象类和接口的区别、实现复杂的继承体系以及处理多态中的类型转换等问题时,我曾感到困惑。特别是在实验五中,需要综合运用继承、多态和JavaFX框架来设计一个复杂的电器动物互动系统,这不仅考验了我对各个知识点的掌握程度,还考验了我将这些知识点综合应用的能力。
从基础的类和对象的定义,到封装、继承、多态等核心概念,再到抽象类、接口、集合框架、异常处理以及JavaFX等高级主题,让我逐步构建起了完整的面向对象编程知识体系。例如,在实验五中,我设计了一个电器动物互动系统,涵盖了电器和动物等多个类的设计和实现。通过这个项目,我不仅学会了如何定义类和对象,还学会了如何通过继承和多态来实现代码的复用和扩展。具体来说,我定义了一个抽象的电器类Appliance,并让冰箱类Fridge、洗衣机类Washer、微波炉类Microwave继承自它。这样,我就可以在父类中定义一些通用的方法,如打开门opendoor()、关闭门closedoor()等,子类继承后可以直接使用,大大减少了代码的重复。同时,我也学会了如何合理地使用继承,避免过度继承导致的代码复杂性。
二、面向对象技术总结
封装:通过封装,我们可以将对象的属性和行为封装在一起,隐藏内部实现细节,只暴露必要的接口供外部访问。它不仅提高了代码的可维护性和可扩展性,还增强了代码的安全性。例如,在实验五中,我设计了一个电器类Appliance,将电器的名称、容量、是否打开等属性封装起来,并提供了相应的getter和setter方法。这样,外部代码只能通过这些方法来访问和修改电器的属性,避免了直接操作属性可能带来的错误。通过这种方式,我学会了如何合理地设计类的接口,使类的内部实现对外部透明,同时又能够满足外部对类的操作需求。
继承:继承是面向对象编程中实现代码复用的重要手段。通过继承,子类可以继承父类的属性和方法,并且可以添加新的属性和方法或对继承的方法进行重写。例如,我定义了一个抽象的电器类Appliance作为父类,然后让冰箱类Fridge、洗衣机类Washer、微波炉类Microwave继承自它。这样,我就可以在父类中定义一些通用的方法,如打开门opendoor()、关闭门closedoor()等,子类继承后可以直接使用,大大减少了代码的重复。同时,我也学会了如何合理地使用继承,避免过度继承导致的代码复杂性。
多态:多态是面向对象编程的另一个核心概念,它允许我们使用父类类型的引用指向子类类型的对象,并在运行时根据实际对象的类型调用相应的方法。多态的实现主要依赖于方法重写和接口。例如,在PTA作业09中,我定义了一个抽象的货物类Cargo作为父类,并在其中定义了一个获取货物类型的方法getType()。然后,我在普通货物类NormalCargo、加急货物类ExpediteCargo、危险品货物类DangerousCargo等子类中重写了这个方法。这使得我的代码更加灵活和可扩展,能够更好地应对需求的变化。例如,如果我想增加一个新的货物类型,如易碎品货物类FragileCargo,我只需要继承货物类并重写获取类型的方法,而不需要修改现有的代码。这大大提高了代码的可维护性和可扩展性。
抽象类:抽象类可以定义一些通用的属性和方法,但不能被实例化,只能被继承。例如,在PTA作业09中,我定义了一个抽象的客户类Customer,并在其中定义了一些通用的属性和方法,如获取客户姓名、电话和地址的方法。然后,我让个人客户类IndividualCustomer和企业客户类CorporateCustomer继承自它。这样,我就可以在抽象类中定义一些通用的行为,子类继承后可以直接使用或进行扩展。
接口:接口则是一种特殊的抽象类,它只能定义常量和抽象方法,一个类可以实现多个接口,突破单继承的限制。例如,我定义了一个Payment接口,用于规范支付方式的行为,然后让微信支付类WechatPayment、支付宝支付类AlipayPayment、现金支付类CashPayment实现这个接口。这样,我就可以在支付类中实现具体的支付方法,而不需要在每个类中都定义支付逻辑。然而,我发现在理解抽象类和接口的区别以及如何合理地使用它们时,还是存在一些困难。有时候会混淆它们的使用场景,需要进一步加强理解和实践。
集合框架:Java的集合框架为我们提供了丰富的数据结构,如List、Set、Map等,用于存储和操作一组对象。例如,在实验三中,我使用ArrayList来存储动物对象,通过集合框架提供的方法,如add()、remove()、get()等,我能够方便地对动物集合进行操作。
异常:用于处理程序运行过程中可能出现的错误和异常情况。在学习异常处理时,我掌握了try-catch-finally语句的基本用法,通过合理地使用异常处理机制,我能够使程序在遇到错误时不会直接崩溃,而是能够给出友好的错误提示,并进行相应的处理。
JavaFX:通过JavaFX,我能够创建出具有丰富交互功能的图形界面,如窗口、按钮、文本框等。在实验五中,我设计了一个基于JavaFX的电器动物互动系统,我使用了StackPane、Rectangle、Label、HBox、Circle、VBox、BorderPane和TranslateTransition等JavaFX控件来构建一个交互式的电器动物互动系统。
三、踩坑心得
在学习这门课程的过程中,我走了不少弯路,也常常崩溃。以下是我总结的一些心得:
没有深入理解知识点:对于一些概念,我只停留在浅层的理解,但是并没有融会贯通。就像继承,我知道子类可以继承父类的属性和方法,但是并不会合理地使用继承。还有一开始我不明白为什么要用接口,觉得和抽象类很像。后面大概明白了是因为Java不支持多重继承,但是一个类可以实现多个接口。
综合应用能力不足:我在将所学的各个知识点综合应用到实际项目中时存在一定的困难。例如,在一个较大的项目中,需要同时使用封装、继承、多态、集合框架、异常处理等知识来设计和实现一个完整的系统。然而,我常常会因为对某个知识点的理解不够深入或者对知识点之间的联系不够清晰,而导致无法很好地完成项目。
心理障碍:在面对一个相对庞大的任务时,我总是先入为主地认为我完成不了,反而更加不愿意去尝试,但是在努力过后才发现好像也没有自己想的那么困难。
四、改进建议及总结
这门Java面向对象编程课程让我受益匪浅,不仅让我掌握了面向对象编程的核心概念和实践技巧,还培养了我的编程思维和解决问题的能力。回顾这段学习历程,我深刻体会到编程不仅是一门技术,更是一种思维方式的重塑。从最初面对类和对象时的茫然,到现在能够熟练运用封装、继承、多态三大特性设计程序,这种成长让我感到无比欣喜。
从电梯运行到完整的物流管理系统开发,每一个项目都是对知识的检验和应用。特别是在JavaFX图形界面项目中,从界面布局到事件处理,从动画效果到交互逻辑,每一个环节的优化都让我积累了宝贵的经验。当看到自己设计的电器动物互动系统最终流畅运行时,心中的成就感油然而生。
总的来说,这门Java面向对象编程课程是一次非常宝贵的学习经历。通过这门课程,我不仅学到了很多知识和技能,还培养了自己的学习能力和解决问题的能力。虽然在学习过程中遇到了一些困难和挑战,但正是这些经历让我不断成长和进步。更重要的是,这门课程培养了我持续学习的习惯和信心。我相信,通过这门课程建立起的编程思维方式和问题解决能力,将为我后续学习打下了坚实基础,也必将助力我的持续发展与进步。

浙公网安备 33010602011771号