第三次总结性blog文章

第三次总结性blog文章:
1.前言
1.首先对于blog作业来说,工作量其实挺大的,但由于期限长,次数少,我认为还是能够接受的;同时它带来的收获也是非常多的,系统性的进行总结以及反思。
2.其次就是pta作业,他的工作量其实是比较大的每一周都有一次,虽然说很正常但相较于其他的还是很重的工作量,有些题目总括性非常强,而且需要我们自己先去学习才能会,
3.然后就是我们的实验:实验的单个工作量其实是最大的,但它的期限也是最长的,我们往往有2-3个星期将其写完,所以并没有很大的工作量,反而它的难度相较于pta没这么大,能够自己做出。
4.最后就是线下课程:线下课程其实并没有什么工作量,线下并不会布置作业,只需要上课跟着老师听讲就行,反而我认为它的难度还是比较大的,因为它是我们学java和面向设计的开端,我们所有知识和
思维,都需要通过线下课程进行初步了解与形成,
总的来说:
Java课程工作量超大,它分为了以上4块内容,其中我认为最大工作量的就是pta且难度最大的也是pta;最小工作量的是线下课程,其次是blog,再是实验;而难度的话线下课程的难度居中,实验会比其他两者更大。
每周大部分的时间都需要花在面向对象程序设计上,而且有时候花再多时间,也做不出个题目来。
2.面向对象技术总结:
一。封装
掌握情况:
封装是面向对象编程的基础,通过将类的属性私有化(使用private修饰),并提供公共的getter和setter方法来访问和修改属性值,可以有效保护数据的完整性。在PTA作业中,我多次练习了封装的实现,例如在设计一个学生类时,将学生的姓名、年龄、成绩等属性私有化,通过方法来控制这些属性的读写。通过这种方式,我可以限制外部对属性的直接访问,确保数据在合法范围内被操作,比如在设置年龄时,可以添加逻辑判断,防止输入负数等不合理数据。
学到的内容:
封装让我认识到数据隐藏的重要性,它不仅能够保护对象的内部状态,还能减少外部对内部实现细节的依赖。这使得代码更加模块化,便于维护和扩展。例如,当类的内部实现发生变化时,只要保持接口(方法)不变,外部代码无需修改,大大提高了代码的可维护性。
认知与不足:
我深刻理解了封装是面向对象编程中实现信息隐藏的关键手段,它有助于构建稳定、可靠的类。然而,在实际编码过程中,我有时会过度封装,导致代码过于繁琐,增加了不必要的复杂性。例如,在一些简单的类中,某些属性可能不需要严格的访问限制,但我仍然机械地添加了getter和setter方法。此外,对于一些复杂的类,如何合理地划分封装的层次,以及如何在封装和代码简洁性之间取得平衡,还需要进一步学习和实践。
二。继承
掌握情况:
继承是实现代码复用的重要方式,通过让一个类(子类)继承另一个类(父类),子类可以继承父类的属性和方法,并且可以添加新的属性和方法,或者对父类的方法进行重写。在实验中,我设计了一个动物类作为父类,然后让猫、狗等具体动物类继承自动物类。这样,猫和狗类就自动拥有了类动物的基本属性(如名字、年龄)和行为(如呼吸、移动),同时还可以根据自身特点添加特有的行为(如猫的抓老鼠、狗的看家)。通过这种方式,我能够有效地减少重复代码的编写,提高开发效率。
学到的内容:
继承让我明白了代码复用的强大优势,它可以节省大量的开发时间,同时使代码结构更加清晰。子类继承父类后,可以形成一个层次化的类体系,这种层次结构有助于更好地组织和理解代码。例如,在一个图形绘制系统中,可以定义一个图形类作为父类,然后让圆形、矩形、三角形等具体图形类继承自图形类,这样可以方便地管理不同类型的图形对象。
认知与不足:
我清楚地认识到继承是面向对象编程中实现类之间关系的重要手段,它能够体现“is-a”(是一种)的关系。但是,继承也存在一些问题,比如过度继承可能导致代码耦合度过高。在一些复杂的项目中,如果继承层次过深,可能会导致子类与父类之间的关系过于复杂,难以理解和维护。此外,继承的使用需要谨慎,因为一旦父类的实现发生变化,可能会对所有子类产生影响。在实际开发中,我还需要进一步学习如何合理地设计继承体系,避免过度继承带来的问题。
三。多态
掌握情况:
多态是面向对象编程中最具魅力的特性之一,它允许使用父类类型的引用指向子类类型的对象,并且可以在运行时动态地调用子类重写的方法。在PTA作业中,我通过一个简单的例子来实践多态:定义一个动物类作为父类,其中有一个makeSound方法;然后让猫类和狗类继承自动物类,并分别重写makeSound方法。在主程序中,使用动物类类型的引用指向猫类或狗类的对象,调用makeSound方法时,会根据实际对象的类型动态地调用相应的方法。这样,我能够通过一个统一的接口(父类引用)来操作不同类型的对象,提高了代码的灵活性和可扩展性。

学到的内容:
多态让我体会到了面向对象编程的灵活性和强大功能。它使得代码可以更加通用,能够适应多种不同的情况。例如,在一个图形绘制系统中,可以通过定义一个通用的draw方法,在运行时根据不同的图形对象类型动态地绘制图形。这种动态调用机制大大提高了代码的可扩展性,当需要添加新的图形类型时,只需继承父类并重写draw方法,无需修改现有的代码逻辑。
认知与不足:
我认识到多态是面向对象编程中实现代码灵活性和可扩展性的关键特性,它能够使代码更加通用和适应性强。然而,在实际使用过程中,我有时会混淆多态与继承的关系。多态必须基于继承来实现,但并不是所有继承关系都一定会体现多态。此外,对于多态的性能问题,我了解得还不够深入。在某些情况下,多态可能会导致运行时性能的下降,因为需要在运行时动态地解析方法调用。在未来的学习中,我需要进一步研究多态的性能影响,并且学习如何在实际项目中更好地利用多态来提高代码的灵活性和可扩展性。
四。抽象类
掌握情况:
抽象类是一种特殊的类,它不能被实例化,只能被继承。抽象类中可以包含抽象方法,抽象方法没有具体的实现,子类必须提供具体的实现。在实验中,我定义了一个图形类作为抽象类,其中包含一个抽象的draw方法。然后让圆形、矩形等具体图形类继承自图形类,并实现draw方法。通过这种方式,我能够为不同的图形类提供一个统一的接口,同时将具体的实现细节交给子类来完成。抽象类的使用让我能够更好地组织代码结构,提高代码的可维护性。
学到的内容:
抽象类让我明白了如何定义一个通用的框架,为子类提供一个统一的接口。通过抽象类,可以将一些通用的属性和方法定义在父类中,而将具体的实现细节留给子类来完成。这样,可以避免代码重复,提高代码的复用性。例如,在一个游戏开发项目中,可以定义一个游戏角色抽象类,其中包含一些通用的属性(如生命值、攻击力)和方法(如移动、攻击),然后让不同的游戏角色类继承自该抽象类,并实现具体的行为。
认知与不足:
我认识到抽象类是面向对象编程中实现代码抽象和复用的重要工具,它能够为子类提供一个通用的模板。然而,在实际开发中,我有时会过度使用抽象类,导致代码结构过于复杂。例如,在一些简单的场景中,可能并不需要定义抽象类,直接使用普通类即可。此外,对于抽象类与接口的区别和联系,我还需要进一步深入理解。虽然它们都可以用于定义通用的接口,但在使用场景和语义上存在一定的差异。在未来的实践中,我需要学习如何根据实际需求合理地选择使用抽象类或接口。
五。接口
掌握情况:
接口是一种抽象完全的类,它只包含抽象方法和常量。一个类可以实现多个接口,通过接口可以实现多重继承的效果。在PTA作业中,我定义了一个Playable接口,其中包含一个play方法。然后让不同的类(如音乐播放器、视频播放器)实现该接口,并提供具体的play方法实现。这样,我可以通过Playable接口的引用指向不同类型的播放器对象,并调用play方法,从而实现多态的效果。接口的使用让我能够更好地定义通用的行为规范,同时提高代码的灵活性和可扩展性。
学到的内容:
接口让我明白了如何定义一个通用的行为规范,使得不同的类可以按照这个规范实现具体的行为。通过接口,可以实现多重继承的效果,这在Java中是无法通过类继承来实现的。接口的使用可以提高代码的灵活性和可扩展性,使得代码更加模块化。例如,在一个智能家居系统中,可以定义一个SmartDevice接口,其中包含一些通用的方法(如开关、调节亮度等),然后让不同的智能设备类实现该接口,这样可以方便地管理和控制不同的智能设备。
认知不足:
我认识到接口是面向对象编程中实现代码抽象和复用的重要工具,它能够定义通用的行为规范,使得不同的类可以按照这个规范实现具体的行为。然而,在实际开发中,我有时会混淆接口和抽象类的使用场景。接口主要用于定义行为规范,而抽象类则可以包含一些通用的属性和方法实现。此外,对于接口的实现细节,我还需要进一步学习。例如,在一个类实现多个接口时,如何合理地组织代码结构,避免代码冲突
六。集合框架与异常
掌握情况:
这一节的知识是我认为掌握最少的,根本就没掌握什么知识,不会用,不知其所以然;什么throw,catch以及它们之间的逻辑,我都没有搞明白,像上面说的五类,我都能够进行运用,知道他们的内容。
认知不足:
我分不清List、Set、Map这三种集合的特性,也不知道它们分别适用于什么场景;对于ArrayList、LinkedList、HashSet、TreeSet、HashMap等具体的集合类,我只知道它们是集合框架的一部分。对于try-catch块的使用,我只知道基本的语法结构,但不知道如何合理地使用它们来处理异常,我不知道如何制定合理的异常处理策略。
七。javafx
掌握情况:
这一节内容是老师上课采用翻转课堂的形式进行讲解的,而对于学生的讲解我理解不太清楚,导致我能够理解自己小组讲的内容,而其他小组的很模糊。但经过Javafx的实验题,我掌握了path Transition路径运动的内容,知道了纳姆塔表达(e->{})的大致使用,了解了按钮,图形的基本绘制。
学到的内容:
我学到了界面的基本创作,能够解决像实验五那样,动物移动进入容器的基本操作;学会了界面大小控制,图形美观设计。
认知不足:
我的不足是:对于Hbox,Vbox的运用不太会,界面中行距等不太会设计,以及“-fx-”的语句来规范格式等等都运用的不太熟练,其次是javafx与异常的结合,让我们进行文件管理,存放文件信息不太会;再者就是只会最基本的图形界面,没有深入的进行研究,其中的语句也只会get与set;javafx做界面的基本框架也没有,不知道从哪里入手,像我们GUI作业一样:对于多界面而且工作量大的程序很是无能为力;代码毫无章法,内容混乱。
八。类图绘制
一个学期的学习,我们的每次blog以及实验提交;都用到了我们的类图绘制,这是体现代码整体功能与类鱼类之间关系的;我慢慢的开始对类图的绘制更加得心应手,注重类图的美观。

3.踩坑心得
在这个学期学习面向程序设计中,确实遇到了很多坑:
1.有些题目需要特定的输出格式,我一直用空格进行分割,但是并没有达到题目目的,之后我了解了“/t”是处理格式的符号。

2.在处理外部请求时,需要将外部请求加入内部请求队列中,我出现过由于调用了多次函数,导致出现数据重复;也就是重复调用方法,而且是不知不觉间
3.对于像第一次blog中电梯运动,分类不完整,导致没有正常处理请求,
4.comparable中一开始不知道《》中指定的类型是什么,最后我才明白<>中就是比较内容的类型
5.有些时候做完了类的封装,将内容private化,可是在其它类或方法中调用参数却还是直接调用,忘记用get的方法间接调用
6.像pta中的题目,他只给一个实验案例,我的明明和他输出的一样,可就是有些得分点没有踩到,有一部分原因是分类不清楚(讨论了大于,小于,等于忘记讨论了,导致出错),还有些是对边界值处理模糊。
7.对于数与数的除法,我也踩了几次坑:一个数X/3,往往会被将小数约分,变成整数。
8.有些pta在实验要求中说明了要用继承,多态;可是由于在做的时候没有看,导致代码整体逻辑需要更改

9.有些时候输出了Wrong Format可是程序还在运行;

4.改进建议及总结
对于课程安排,建议老师在讲解抽象类与接口时,能通过更多实际案例来帮助学生理解它们的区别与适用场景,避免混淆。在实验和作业中,希望老师能提前强调题目要求的关键点,如是否需要使用特定的面向对象特性,以减少学生因理解偏差而走弯路。同时,针对集合框架与异常处理等较难掌握的内容,建议增加一些专项练习和详细讲解,帮助学生更好地理解和应用,
我也会在后续学习中更加注重细节,避免因格式、边界值等问题失分,同时加强对知识的深入理解和灵活运用。通过不断总结经验,我相信自己在面向对象程序设计方面会取得更大的进步

posted @ 2025-06-18 11:55  zmkkjing  阅读(35)  评论(0)    收藏  举报