面向对象程序设计课程总结
面向对象程序设计课程总结
一、前言
经过一学期的学习,这门课程的学习即将结束,体会和收获颇丰,现从以下几个方面对该门课程进行概要性总结。
(1)Blog作业:该门课程总共有3次Blog作业,第一次作业总结封装特性及编程思维的培养,第二次作业总结继承与多态知识点,而本次是对整门课程的总结。及时的Blog作业总结能够更好的巩固知识点。
(2)PTA作业:PTA作业紧跟讲的知识点,有易也有难,布置的作业极大程度上提升了我的编程能力。
(3)实验:前4次实验都较为简单,除了第五次需要上网查资料解决较为困难外。而且实验的关联度高,一直在扩展需求,提高我们对编程设计的理解。
(4)线上课程:个人认为,线上课程只是辅助教学的工具。
(5)线下课程:课程有一定的难度和工作量,但是老师讲的好,不是死板的教学,能够举例说明,让人豁然开朗。
二、面向对象技术总结
1、封装、继承与多态
(1)封装、继承与多态是面向对象的三大特性。
(2)封装是实现继承与多态的基础。我们将一行行代码封装在类中,方法中,能够提高代码的复用率。比如第一次电梯作业就大量使用了打印,我们就可以把打印封装在一个方法中调用,提高代码的复用率,降低代码的冗杂程度。
(3)继承是实现多态的前提。继承是一种代码的复用方式,就是”白箱“复用,继承复用最好能够遵循里氏代换原则。总的来说,继承提高了代码的复用性,提高软件的开发效率。
(4)多态的使用需要存在继承或者实现关系,由父类引用指向子类对象或父接口引用指向子实现类对象。多态的出现使编码更加灵活和便捷。
2、抽象类与接口
(1)对于继承体系中,出现类间的方法功能声明相同,但方法功能主体不同,此时可以定义抽象方法,只抽取方法声明,不抽取方法主体。而抽象方法存在于抽象类中,二者都被abstract关键字修饰。
(2)由于Java中只有单继承,接口就出现弥补Java中单继承的不足。接口中的方法大多是抽象方法,需要子实现类实现。
3、集合框架
(1)集合框架分Collection和Map两大体系。
(2)本门课程重点学习的是Collection类中List体系的ArrayList和LinkedList俩大类,并会进行队列的增删改查操作。
(3)还重点学习了使用Collections工具类进行排序,有自然排序(实现Comparable接口)和比较器排序(实现Comparator接口)。
4、异常
本部分内容为自学内容,主要分为编译时异常和运行时异常,其中编译时异常在编写代码时就必须处理。目前只会使用try-catch去处理异常。
5、javaFX
JavaFX 是 Java 平台的图形用户界面(GUI)框架,用于构建跨平台的富客户端应用,支持 2D/3D 图形、动画、多媒体等功能,可以通过JavaFx来做一些简单的界面并实现一些基础的界面交互。个人对本部分内容掌握程度不高,另一方面,在当前的主流业务开发中,不会使用这么粗糙的框架开发,所以了解为主就可以了。
6、设计原则
(1)单一职责原则
SRP
可变封装
将可能变化的封装成一个类
高内聚 低耦合
(2)开闭原则
OCP
对扩展开放 对修改关闭
关键:抽象化
对可变性封装原则
(3)里氏代换原则
LSP
如果使用父类对象,则子类对象也可用
尽量使用父类类型来对对象进行定义(多态)
父类的方法,子类都需要有
(4)依赖倒转原则
DIP
依赖抽象类与接口
针对接口编程,不针对实现编程
关键:以抽象方式耦合
(5)合成复用原则
CRP
尽量使用组合/聚合关系,少用继承
“黑箱”复用
(6)接口隔离原则
ISP
不依赖不需要的接口
接口不应太大,拆分接口需满足单一职责原则
用多个专门的接口,而不使用单一的总接口
(7)迪米特法则
LoD
最少知识原则
a.不要和“陌生人”说话
b.只与你的直接朋友通信
c.最少支持原则
·一个软件实体应当尽可能少的与其他实体发生相互作用
优缺点:降低类间的耦合,造成系统的不同模块间的通信效率降低
三、踩坑心得
(1)一昧的学习理论知识,而没有实践。
这门课程更注重的是实践,既要学习理论知识,更为重要的是上手敲代码。
(2)编码前一定要看清楚需求。
我有好几次都没看清楚需求,把简单的问题复杂化,看清楚需求后就一目了然了。
(3)代码编写要规范。
前期学这门课时,编写代码不写注释,变量名也随意起,导致自己都看不懂自己的代码,后期逐渐养成规范编写代码后,还能查看以前的代码复习知识点。
(4)要学会调试。
不学会调试是很难解决运行时的偏差的,调试能很好的解决大部分代码逻辑错误。
(5)要学会和同学沟通。
和同学沟通,能了解更多编码思维,也能更好地拓展自己的知识面。
四、改进建议及总结
1、总结:
整门课程偏向于程序设计,而不是编写程序。本门不是围绕单一语法知识讲解,也讲解了几个设计原则,并对其进行了深入讲解,甚至也扩展了设计模式,刷新了我对这门课的认知,也极大地让我理解市场的需求。特色的翻转课堂让我有展示自己的机会。老师通俗易懂的讲解使学生能对复杂难懂的知识豁然开朗。总之,学习了此门课程,我收获颇丰,不仅是对知识点的掌握更高,更是对心性的培养和对就业市场的认知加强。
2、建议:
a、建议老师删减线上课一些不常用知识点,并精讲常用的Java常用语法;
b、建议老师线下课可以讲一些编写代码的坑和陷阱,加强对知识点的掌握;
c、建议老师能按就业市场需求的方向讲,而不是依照死板的课程大纲,市场不用的淘汰的技术,即使在课程大纲内,也不要讲,增加学生学习负担。