课程总结Blog

一、前言

1.Blog 作业

(1)工作量:本学期 Blog 作业一共有三次,第一次是对 PTA 作业题目集5到题目集7中的电梯题目的总结,第二次是对 PTA 作业题目集8到题目集9中的航空货运系统题目的总结,第三次是对本学期该课程整体的总结。工作量不算多,每次写 Blog 的时间给的很充足,一次 Blog 大概要花4小时。

(2)难度:难度不大,Blog 作业是对一个阶段所学知识的总结,有助于查漏补缺。

2.PTA 作业

(1)工作量:本学期 PTA 作业一共有12个题目集。每个题目集大概要花3天的时间(除个别题目集中包含较难题目),工作量中等,很有效地帮助我巩固对应阶段所学的知识。

(2)难度:

         1)题目集01:难度较小,属于入门级别的难度,帮助学生熟悉java语言的语法

         2)题目集02:题目难度参差,入门、简单、中等、较难级别难度的题目都有。但大部分题目上学期用C语言写过,算是有一定基础在,比如“计算到站时间”系列题目,除题目“求下一天”花较多时间,其他题目难度一般。

         3)题目集03:题目难度都较小,主要是考察使用数组

         4)题目集04:该题目集是为提升学生基础编程能力,主要是考察类设计,都比较简单。

         5)题目集05~07:上面提到这几次题目集,除电梯题目外,其他题目难度中等。

         6)题目集08~09:这两次题目集主要考察学生对面向对象设计原则的掌握程度,题目本身不难,主要难在设计原则,其他题目难度也较为中等。

         7)题目集10:虽然这次题目集中的题目难度归为中等和较难,但是题目中给了类图,所以难度也是比较中等的。本次题目集考察继承、多态、接口及集合框架。

         8)题目集11:本次题目集除题目“统计java程序中关键词的出现次数”较难,另外三道题目都较简单。题目本意是想让我们用 Set 和 Map ,我这道题目用的是正则表达式,但有一个测试点没过,至今不知道原因,对我来说算是较有难度。

3.实验

(1)工作量:除第一次实验和第五次实验规定时间为一周,其他三次实验规定时间都为两周。实验分为两部分,一部分是在实验提交系统上提交源码,另一部分是写一份实验报告,每次实验都分为这两部分。工作量中等。

(2)难度:

          1)第一次实验:目的为熟悉Java开发及运行环境Java程序开发基本步骤等,内容较基础,难度不大。

           2)第二次实验:主要目的是掌握类与对象的基本概念和使用方法,也都是比较基础的要求,难度中等。

           3)第三~四次实验:本次实验要求学生掌握继承与多态的基本概念及使用方法,第二次到第四次的实验是迭代的,第四次实验目的是掌握抽象类与接口的基本概念及使用方法。但是难度没有很大的变化,主要是实验目的和要求变了,这三次实验难度都比较中规中矩。

           4)第五次实验:本次实验要求创建用户图形界面,我对JavaFX的基本用法已经有了一定的了解,但是本次实验对我来说还是有一定的难度。

4.线上课程与线下课程

(1)工作量:线上课程主要是平台“学堂在线”上的慕课以及所学章节对应的题目,线下课程以老师讲授面向对象程序设计课程为主,翻转课堂也为线下课程的一部分。工作量中等。

(2)难度:线下课程与线上课程是相互结合、相辅相成的,讲授的都是该课程的基础知识,如面向对象技术的封装、继承、多态等。难度不大。

整体上:总体来说这门课程的工作量与难度为中等往上。

二、面向对象技术总结

1.封装、继承、多态

(1)学到了什么

根据本次 Blog 上文提到的,PTA 作业题目集08~10、第三次实验以及第四次实验都要求使用封装、继承、多态。

          1)通过私有化属性 private 和公开方法 getter 和 setter 控制访问,隐藏实现细节。

          2)使用 extends 实现代码复用,子类继承父类属性和方法。

          3)通过方法重写父类引用指向子类对象实现运行时绑定。

          4)掌握封装、继承、多态能够减少工作的重复

(2)技术认知

        1)封装性提高了代码的安全性和可维护性。

        2)封装性是设计模式的基础。(如工厂模式:封装对象创建过程,客户端无需直到具体实现类;单例模式:通过私有化构造器控制实例化过程)

        3)根据里氏代换原则,子类必须能完全替代父类,避免破坏父类契约。

        4)多态是面向对象灵活的核心,需要掌握运行时绑定、类型转换及现代Java特性。

 

 

 

 

2.抽象类和接口

在实验四中要求用到抽象类与接口

 

(1)学到了什么

        1)抽象类是用abstract定义的,抽象类中可包含抽象方法和具体方法,但是不能被实例化,只能被继承。抽象类中不一定包含抽象方法,这点没有强制要求。

        2)接口是用interface定义的,接口可实现多继承效果。

        3)抽象类可提供部分通用实现,减少代码重复。

 

(2)技术认知

        1)抽象类和接口都不能直接实例化对象。

        2)抽象类可以有实例变量(状态),但是接口只能是 public static final (常量)。

        3)抽象类只能单继承,但接口可以实现多继承。

        4)抽象类可以有构造方法,接口不能有构造方法。

 

(3)欠缺

        1)对“接口只能是 public static final (常量)”比较陌生,不会使用。

        2)习惯于用继承二不习惯用组合,过度使用抽象类可能导致继承层次过深,违反组合优于继承的原则。

3.集合框架

(1)学到了什么

        1)List(有序、可重复):元素按插入顺序存储,允许重复值。常用实现类有:ArratList、LinkedList、Vector。

        2)Set:元素唯一,不保证顺序,常用实现类HashSet、LinkedHashSet、TreeSet。

        3)Map:键唯一,值可重复,常用实现类有HashMap、LinkedHashMap、ConcurrentHashMap。

        4)学会了使用Collections工具类和Arrays工具类。

 

(2)技术认知

        1)ArraylList是基于动态数组的,随机访问快,但是中间插入、删除较慢。

        2)LinkedList是基于双向链表的,插入、删除快,但是随机访问慢。

        3)Vextor是线程安全版的ArrayList,性能较差,已经过时。

(3)欠缺

        1)在编写代码是,我多用ArrayList,对LinkedList的使用很不熟练。

        2)原本在PTA作业题目集11中的第三道题是要使用Set和Map的,但是我选择了用正则表达式,所以我也没有掌握Set和Map的用法。

4.异常

在JavaFX作业上我多次用到了异常处理。

 

(1)学到了什么

        1)分类:Error(系统级)、Exception(可处理)。

        2)处理机制:try-catch-finally捕获,throws声明,throw手动抛出。

(2)技术认知

        1)异常处理原则:在合适层级处理异常、至少打印日志、通过throw new MyException("mas",e)保留原始异常信息。

        2)受检异常在编译时检查,强制处理的,是可预见的异常。

        3)非受检异常是运行时抛出,不强制处理,如程序逻辑错误。

(3)欠缺

        对异常的使用极其不熟悉,使用异常时大多是借助AI。

5.JavaFX

第五次实验和JavaFX作业都是与JavaFX相关的。

(1)学到了什么

        1)要创建图形界面,需要用到Stage(窗口)、Scene(场景)、Pane(布局容器)等核心组件。

        2)数据绑定可以用Property机制。

        3)JavaFX还可以制作动画,Timeline可制作关键帧动画(如渐变、移动等),TranslateTransition可制作位移动画。

(2)技术认知

        1)BorderPane:分五个区域,可用于主界面框架。

        2)HBox、VBox:水平、垂直排列子组件,可用于工具栏、表单布局。

        3)GridPane:网格布局,支持行列合并,可用于制作复杂表单、表格视图。

        4)FlowPane:自动换行排列。

        5)StackPane:子组件堆叠。

        6)PathTransition:沿路径移动(如贝塞尔曲线。FadeTransition:淡入淡出效果。

 

(3)欠缺

        不熟悉GridPane的跨行、跨列布局

三、踩坑心得

 

(1) 面向对象设计原则理解不足:在PTA题目集08-09的航空货运系统题目中,最初没有很好地遵循单一职责原则,导致一个类承担了过多功能。后来通过拆分职责,将货物管理、航班管理等功能分离到不同类中,代码的可维护性显著提高。可以去深入了解一下Java设计模式,能够提升代码质量。

 

(2)集合框架选择不当:在题目集11的"统计Java关键词"题目中,最初尝试用正则表达式处理,遇到性能问题和边界条件处理困难。题目集11中的"统计Java关键词"题目可以改用HashSet存储关键词,用HashMap统计词频,不仅代码更简洁,执行效率也能提升3倍。

 

(3)JavaFX布局管理混乱:第一次尝试复杂界面时,混用多种布局导致组件错位。要想解决JavaFX布局管理混乱的问题,JavaFX中的组件要分不同的场景下使用,BrodPane适合主框架布局,GridPane用来处理表单类整齐排列,可嵌套使用HBox、VBox实现局部布局,使用Insets和Padding控制间距。

 

 

四、改进建议及总结

(1)课程总体评价:本门《面向对象程序设计》课程体系完整,内容循序渐进,通过PTA作业、实验和Blog等多种形式,有效培养了面向对象编程思维和Java实践能力。课程设置理论与实践并重,特别是三次Blog作业的设计,很好地促进了知识系统化整理。其中还引入了同伴互评机制。

(2)改进建议:在学堂在线平台增加“常见问题”知识库。

 

posted @ 2025-06-22 19:31  泽夏  阅读(18)  评论(0)    收藏  举报