面向对象程序设计课程总结Blog
一、前言
1、本课程是线上课程配合着线下课程的教学方式,老师先让我们在线上课程进行预习,这让我们在进入线下课堂前,对知识有了初步认知,带着问题和思考去听课,课堂上理解新知识更加轻松,知识吸收也更为深入。两种课程相辅相成,极大提升了我们的学习效率,让知识理解更为透彻。
2、线下课程难度有点大,老师很多地方不讲,许多内容需要我们提前自主学习。如果没有做好预习准备,课堂学习就会变得十分吃力课堂上就很难跟上老师的节奏。不过,后期的线下课老师会组织我们统一带电脑在课堂上完成一些要运用到当堂知识点的编程,可以及时实践实操,把知识点运用到实际上。
3、课程每周都会布置一次 PTA 作业,作业难度循序渐进。前面几次是巩固一下java的基础语法,后面难度渐渐提升,也有了迭代作业,后续作业是在前一次作业的基础上进行功能扩展或优化。总得来说没有很难,除了个别如电梯的题目,但只要投入时间认真钻研,都能有所收获,每次题目集都需要花时间认真完成。跟着老师的步伐完成相应的pta作业能巩固我们那段时间所学的知识,刚好可以亲自实践运用一下,知道自己对哪还不是很熟悉,对哪部分还没有理解,可以及时补救、查漏补缺。
4、每完成一次pta迭代作业后就有一次blog作业,Blog 作业主要是对前几周迭代大作业进行全面总结,包括完成作业时的心路历程、学到的新知识与技能、遇到的问题及解决方案、犯下的错误以及后续学习的改进方向。blog作业包括这次一共有2次,相较于其他作业,Blog 作业更侧重于自我反思与总结,没有过高的技术难度要求。这个只要总结,我们能系统地复习 PTA 作业中涉及的知识点,发现自己在编程过程中的不足,发现问题并及时改进,实现学习能力和编程水平的逐步提升。
5、实验共有5次,每一次都是在上一次的基础上进行迭代,增加所学的新的知识点,每一次的内容都是面向对象课程的不同重点。第一次是java的调试,第二次是类与对象,第三次是继承与多态,第四次是抽象类与接口,第五次的javafx作业。实验内容没有很难,但是需要全部一个一个打到实验系统里,很繁琐需要比较多的时间。每次实验结束后,都需要撰写实验报告,在报告中详细总结实验过程,包括遇到的困难、采用的解决方案以及运用到的关键知识点。通过实验操作和报告撰写,我们能将理论知识与实践紧密结合,进一步深化对课程内容的理解与掌握。总结实验过程中的遇到的困难和运用的知识点
6、最后一次GUI作业老师给了我们二十多天的时间,针对pta题目集09中航空货运管理系统的功能需求使用JavaFX实现老师给出的UI设计及功能,这个过程远比想象中漫长,整体来说比实验五中的javafx作业难很多,要运用到比较多的知识,涉及的知识点比较广,实现起来很难。我先学javafx再运用到实践来,边写边学,用了很久的时间,但是同时不仅让我学了很多新知识点,更让我巩固了之前所学的知识点,写完之后给了我很大的成就感。
二、面向对象技术总结
学习到的相关知识点
1、类与类之间有四种关系,分别是关联、依赖、聚合、组合、继承,复用用聚合或者组合,不用继承,当出现需要可扩展性需求时用继承。
2、继承是is-a的关系,子类中重复代码抽取到父类,同时子类也可以在父类基础上增加新功能。但是一个子类只能继承一个父类,及单继承,可以多层继承。构造方法不能被继承,this.是本类变量,super.是父类变量。只有父类中非private,非static,非final才能被继承。final父类,子类能继承但是不能重写。同时子类对象可以赋给父类类型
3、抽象类不能实例化对象,也不创建对象,只可以创建引用。抽象方法只存在与抽象类中,父类的抽象方法到子类要重写,如果没有重写,则子类仍为抽象类。抽象类的父类不可以是抽象类。抽象类中可以有具体的方法,要用protected定义属性,private修饰的成员只能在定义的类中被访问,其他类无法直接方法。
4、多态的好处是使用父类型作为参数,可接收所有子类对象,有扩展性与便利性。Fu f=new Zi(),方法调用时编译看左边,运行看右边。变量调用时编译看左边运行看左边。多态的条件:继承关系、方法重写、父类引用指向子类对象。例如:
Shape circle = new Circle(5);
Shape rectangle = new Rectangle(3, 4);
System.out.println(circle.area()); // 运行时调用Circle的area()方法
Zi();
5、接口里的方法默认为抽象方法,接口可以写具体方法,接口类属性默认为常量。
6、抽象类与接口的区别:
(1)一个类只能继承一个抽象类,一个类可以实现多个接口
(2)抽象类:是不是-extends-is-a
接口:能不能-implements-can-do
(3)可同时继承接口与父类,但是接口更抽象,更规范,满足依赖倒转设计原则
7、接口比较器:Comparable为内部比较器,Comparator为外部比较器
Comparable 接口:内部比较器,实现compareTo(T o)方法例如:
public class Student implements Comparable<Student> {
private int id;
@Override
public int compareTo(Student other) {
return this.id - other.id;
}
}
Comparator 接口:外部比较器,实现compare(T o1, T o2)方法例如:
public class AgeComparator implements Comparator<Person> {
@Override
public int compare(Person p1, Person p2) {
return p1.getAge() - p2.getAge();
}
}
8、JavaFX 结合了面向对象编程的特性,使得 UI 组件可以灵活扩展和复用。JavaFX 支持使用 CSS 美化 UI,通过setStyle()方法或外部 CSS 文件应用样。属性绑定:实现 UI 组件与数据模型的双向绑定。支持平移、旋转、缩放、淡入淡出等动画效果。JavaFX 应用通常采用 MVC 或 MVVM 架构,分离数据模型、视图和控制器。
常用控件:Button、TextField、Label、CheckBox、RadioButton等。
布局管理器:VBox、HBox、GridPane、BorderPane、FlowPane等。
属性绑定:实现 UI 组件与数据模型的双向绑定。例:
TextField nameField = new TextField();
Label nameLabel = new Label();
nameLabel.textProperty().bind(nameField.textProperty());
基于事件驱动模型,通过注册事件处理器处理用户交互。例如:
java
Button btn = new Button("Click me");
btn.setOnAction(event -> {
System.out.println("Button clicked");
});
掌握情况
在近期的课程学习中,我对 JavaFX 和面向对象编程两部分内容的掌握程度呈现出明显差异。面向对象编程通过线上线下结合的课堂模式,我深入理解了类与类之间的关系、继承、多态等知识。课后 PTA 作业和实验进一步巩固所学。反观 JavaFX 部分,由于采用翻转课堂、同学分组讲解的形式,学习效果欠佳。因同学讲解深度和全面性不足,理解仅停留在表面。在 Scene Graph 构建、动画效果实现等内容学习时,理解仅停留在表面。布局管理器只会基本用法,难以应用于复杂界面;组件事件处理、CSS 样式应用等知识也掌握不扎实,实际开发 JavaFX 应用时,常出现代码逻辑混乱、功能实现不完善的问题。
欠缺
练习的题目不够多,还需要写更多题来熟练,练手。有的时候在创建对象时总会忘记要和构造函数的顺序相同,导致每次都出现错误,耽误好久。因为一些小错误而花费好几个小时,因此必须要更加细致。在写代码方面要增加注释,注意方法的规范命名,减少if-else的使用,尽量避免出现一堆相同的代码。javafx中布局管理器只会基本用法,难以应用于复杂界面;组件事件处理、CSS 样式应用等知识也掌握不扎实,实际开发 JavaFX 应用时,常出现代码逻辑混乱、功能实现不完善的问题。有点时候需求没有看完或者没有看懂直接写,要先看懂需求,想好类间关系以及类图再来写代码。
三、踩坑心得
1、增加代码的规范与可读性:统一命名、添加注释,注意方法的规范命名,提升维护效率。不要自己过段时间都看不懂自己的代码,何况别人
2、在进行类和类间关系设计时,应从现实场景出发寻找灵感,设计过程中,需严格遵循单一职责原则,确保每个类只负责一项核心功能;运用里氏代换原则保障子类可安全替换父类;依据开闭原则让系统对扩展开放、修改关闭;践行合成复用原则优先使用聚合或组合实现代码复用;秉持依赖倒转原则依赖抽象而非具体实现。在满足这些设计原则的基础上,还需反复推敲代码,确保其既能满足功能需求,又具备清晰的逻辑结构与合理的实现方式,避免出现违背常理或逻辑混乱的代码。
3、优化逻辑,使逻辑更加清楚正确。要增加逻辑思维的锻炼
4、读懂需求,设计好类间关系画好类图再写代码。一上来就写代码效率极低,错误率非常大
四、改进建议及总结
改进建议
1、实验可以直接交源码录制的视频运行效果,手打一遍太麻烦了,后面还会出现很多错误要一个个改,有点浪费时间,有的时候打代码的时间甚至比写实验的时间还多,效率很低。在完成 JavaFX 界面布局的实验时,由于代码中涉及大量组件属性设置和布局参数调整,一个字母的拼写错误或者符号遗漏,都会导致程序无法正常运行。
2、我知道翻转课堂老师是想给同学们一个上台演讲的机会,锻炼一下自己。奈何同学们对知识点的理解肯定没有老师理解的深刻,当然也没有老师讲的通俗易懂、深刻。导致javafx的有关内容学得比较差,很多知识点没有理解。因此,建议在涉及复杂知识内容时,仍以教师讲解为主,翻转课堂可作为辅助形式,用于巩固和拓展一些相对简单的知识点,这样既能达到锻炼同学的目的,又能保证知识传授的准确性和深度。
3、教师课堂上可以讲得再细致一点,希望老师能够更加关注同学们的知识接受程度和学习反馈。考虑一下同学们的情况
4、作业可以适量,不要太多。课程作业的设置本意是帮助我们巩固所学知识,但目前作业量有时过大,导致疲于应付。对于相对简单的内容,则减少重复性作业。同时,优化作业布置的时间安排,避免多项作业集中在同一时间段,让我们有足够的时间和精力去钻研每一项任务,真正实现通过作业提升学习效果的目标。
总结
通过一学期面向对象程序设计课程的学习,让我更好地理解了面向对象,为什么要面向对象编程以及如何面向对象编程,掌握并能运用面向对象和java的基本知识。除了深入理解面向对象编程,这门课程还让我接触并了解了 JavaFX 的相关知识。JavaFX 为我们提供了丰富的图形界面组件,能够轻松创建出美观、交互性强的用户界面。通过这一学期的学习,不仅让我掌握了面向对象编程的基本知识,还培养了我分析问题、解决问题的能力。让我从理论到实践,一步步成长,对我未来进一步编程的学习有了很大的帮助
浙公网安备 33010602011771号