对面向对象课程设计课程的学习总结
一、前言
对于本门课程各学习任务工作量和难度的个人总结(系数总数为10.0)
| 学习任务 | 工作量 | 难度 |
|---|---|---|
| Blog作业 | 工作量中等,系数4.0,需要总结好语言去叙述,以及前期需要单独学习掌握好PowerDesiner和SourceMonitor的使用比较麻烦一点,后期适应了就还好 | 难度不大,系数2.0,认真且肯花时间即可 |
| PTA作业 | 工作量较大,系数9.0,需要花费较多时间去理解、学习、思考、实践、修改、优化,不会的地方需要多查阅资料和学习网课以及借助AI工具等 | 难度个人认为最难的部分之一,系数9.5,虽然说每次PTA的难度层次不齐,但是有一些题目是 |
| 实验 | 工作量较大,系数8.5,说实话工作量不仅仅是体现在设计和编程上,更是体现在码字和修改错误的路上 | 难度中等,系数6.0,理解和设计部分需要多多思考,编程难度较小,都是基础的编程能力可以驾驭的 |
| 线上课程 | 工作量中等,系数5.0,每天抽出一些空闲时间来看一下是没有任何问题的 | 难度较小,系数4.0,难的部分主要是一些继承的结构,其它都是基础的知识点多多练习即可。 |
| 线下课程 | 工作量中等,系数4.0,一周正常就两节课,就后期翻转课堂需要多做一些工作量,其它就正常上课 | 难度中上,系数7.0,有一部分知识还是难以理解,比如各种设计模式,工厂之类的。 |
二、面向对象技术总结
1.封装(encapsulation)
封装是面向对象核心特性之一,核心是隐藏对象内部细节,仅暴露必要交互接口。
比如在航空货运管理系统中,通过private关键字修饰成员date,height,width,length等货物的变量,将其私有化,可以避免外部直接操作;在通过公开的get,set方法进行访问封装后的数据,可以保护数据安全防止非法篡改,也可以降低模块的耦合,提高代码健壮性。
学会了以后在进行复杂项目编程的时候学会了用封装来保护数据的安全,提高代码的可维护性,让自己的代码不那么容易出bug。
2.继承(Inheritance)
继承是面向对象编程的核心特性,允许一个类(子类 / 派生类)继承另一个类(父类 / 基类)的属性和方法,实现代码复用和层次化设计。
关键:1.通过extends关键字实现继承
2.子类继承父类的非私有成员(字段、方法)
3.可通过super关键字调用父类构造器或方法
4.支持方法重写(Override)以修改父类行为
设计原则:
1.遵循 is-a 关系(如大象是一只动物)
2.Java 只支持单继承(一个类只能有一个直接父类),但可通过接口实现多重功能
比如在大象进入冰箱实验中,电器和动物作为父类可以派生出多个子类,例如冰箱,微波炉,大象,狮子等,可以复用父类的方法,比如动物的进入电器等,提高了代码的复用性,减少重复的代码书写,大大提高了编程效率和可维护性。
学会了以后用继承来提高代码复用性,减少工作量(少加班)!!!
3.多态(Polymorphism)
多态允许不同类的对象通过统一接口调用,实现 “同一方法,不同行为”。核心是父类引用指向子类对象,运行时动态绑定方法
关键:1.方法重载(Overload):同一类中,方法名相同但参数列表不同
2.方法重写(Override):子类重新实现父类的虚方法
3.运行的机制:父类引用指向子类对象,例如(Animal elephant=new Elephant())
比如大象进入冰箱实验中,各种动物(大象,狮子,老虎)实现动物父类的叫的方法,提高代码灵活性和可扩展性,支持 “依赖倒置原则”(针对接口编程而非实现)。
学会了以后能更加合理地设计类,更符合面向对象设计原则。
4.抽象类(Abstract Class)
抽象类是一种不能实例化的类,用于定义共性结构并强制子类实现特定方法。
关键:1.通过abstract关键字声明类和方法
2.抽象方法(如 abstract void roar())无需实现,子类必须重写
3.抽象类不能直接实例化,需通过子类实现
比如将动物和电器定义为抽象类,便于规范子类大象,狮子,老虎以及冰箱,微波炉等的行为,实现代码复用与扩展的平衡。
学会了设计抽象类来规范子类的行为,便于各种具有相同性质的类行为统一,便于管理和修改。
5.接口(Interface)
接口是一种完全抽象化的类型,用于定义类的行为契约,强制实现类遵循特定规范。接口中仅包含常量(默认public static final)和抽象方法(默认public abstract),自身无法实例化。
关键:1.通过interface关键字声明,实现类使用implements关键字
2.方法默认全抽象
3.支持多继承(一个类可实现多个接口,接口间可用extends继承多个接口)
4.接口是弱耦合设计的核心,实现类仅需关注 “能做什么”,而非 “如何实现”。
比如航空货运管理系统中支付方式作为接口,里面有支付方法pay(),子类可以是微信支付,支付宝支付,现金支付等等一系列支付方式,这些都是用于支付的方法。
接口通过 “契约式设计” 分离功能定义与实现,支持多态,通过学习和使用接口可以显著提升代码灵活性与可维护性。
6.集合框架(Collection Framework)
集合框架是 Java 用于处理数据集合的统一架构,提供了一套高性能、标准化的数据结构与操作工具,用于存储、管理和操作对象组。
关键:1.Collection接口(List,set)
2.泛型支持:通过<>指定集合元素类型,编译期校验类型安全
3.遍历方式:迭代器(Iterator)、增强 for 循环
4.工具类:Collections提供排序、查找、同步化等通用方法(如Collections.sort(list))
比如大象进入冰箱实验中的电器类ELecrList<>里面存储电器,实现Comparable接口用Collections.sort()对电器进行排序。
集合框架封装了常用数据结构(线性表、队列、栈、哈希表、树),避免重复造轮子,通过统一接口简化操作,提升数据处理效率,是 Java 开发中处理批量数据的必备工具。
7. 异常(Exception)
异常是程序运行时发生的非预期错误事件,Java 通过异常处理机制捕获、处理错误,确保程序健壮性。异常本质是Throwable类的子类,分为检查异常(编译期强制处理)和非检查异常(运行期可能发生)
关键:1.Error:系统级错误(如内存溢出),程序无法处理。
2.Exception:程序可处理的异常(如检查异常IOException,非检查异常NullPointerException)
例如,很多时候都会出现NullPointerException空指针错误和OutOfIndex超出范围的错误,运行之后才会出现的错误,需要自己调试测出来,无法编译时检查。
学习异常处理可以更高效快速地找到对应的错误地方,不需要从头到尾一个一个地测。
8.JavaFX
JavaFX 是 Java 平台用于构建富客户端应用(桌面 / 移动端)的开源框架,提供现代 UI 组件和媒体支持,旨在替代传统的 Swing 框架,实现跨平台的高效界面开发。
关键:1.FXML布局:通过 XML 文件声明 UI 元素,分离界面设计与逻辑代码(如Button、TextField)
2.事件处理:lambda 表达式或 FXML 绑定处理用户交互(如按钮点击事件)
3.数据绑定:通过Observable接口实现 UI 元素与数据模型的双向绑定,自动同步更新
例如,本次JavaFX课程设计中用FXML布局,结合鼠标事件,数据绑定,做了一个航空货运订单管理系统,用可视化界面与客户交互,创建订单,支付订单等操作,提升用户的体验。
三、踩坑心得
1.太好高骛远,想着早点做完PTA早点结束,以及对分数要求太高,以至于落差较大,还有题目看得不够详细,导致遗落了很多重要信息。希望以后做PTA时要仔细分析题意,做好设计,先捋顺思路,搞清楚题目含义再动手编程。
2.上课的时候要积极认真,多动手做笔记,不然上午上完课下午就忘记知识点了,不多做笔记上完一节课下来都基本上没有收获,也容易困。
3.做实验报告的时候注意要做类图,没有类图,编写出来的代码就是无源之水,所以实验总结做类图非常重要,当然对分数也很重要,哈哈哈。
4.线上课程要认真仔细,不懂的地方要及时暂停回看,避免被认为是人机,而且知识点很多,要多记,不然可能一不小心练习题就考到了,但是你却什么都没记,啥也不会做。(虽然记了也可能会错,哈哈哈哈哈哈哈哈哈)
5.Blog要仔细写哦,就像现在写的Blog一样,以后找工作可能会用上(段老师亲自提醒)。
6.做JavaFX课程设计作业的时候一定要多看多学,不会的就问大模型给例子,要肯挖掘,把每一个控件好好的学习一下,也可以多看看同学上课讲的样例,也是一个非常好的学习方法,这样才能使得自己的界面做的好看全面。
四、改进建议及总结
总的来说,学习本门课程的收获很多,学习本门课程的方式也很多,有很多的任务作业来锻炼我们的能力,老师也非常负责,用心来做很多的原创PTA题目和实验,线上课录制的也挺好,线下翻转课堂也挺有意义的,但是比较令人吐槽的一个小点就是实验的码字,其他的都还好。个人对整门课程的看法总体上是不错的,对个人能力提升很大。
浙公网安备 33010602011771号