面向对象初学总结
前言: 作为刚接触面向程序设计的大一学生,在经过一段时间对面向程序课程的学习,对该课程有了初步的认识。本阶段的三次作业均已给出问题,要求以Java编程对问题进行解决的形式,对所学知识进行巩固并加以熟练。三次作业提出了关于日期计算,税率计算,三角形形状判断等问题,要求能够利用if else,for循环等基本语句及利用创建数组定义不同的函数及类去实现题目要求功能以下是我对本阶段三次作业的总结。
一、作业过程总结
1.对三次作业中知识迭代关系的总结
Homework1:本次作业主要考察对于基本Java编程语句的使用以及Java基本结构认识,包括对基本数据类型int、double、string等以及对数组的使用。对基本语句的考察主要为if else语句及for循环语句等。
Homework2:第2次作业主要考察对于函数(方法)的定义及使用,包括对于函数的调用及向函数的(方法)传参。
Homework3:第3次作业主要考察的是对类的定义以及对类的使用,对类中成员属性的封装将成员以private定义,以及对类中函数的方法的定义及调用。
三次作业所考查的知识内容循序渐进,层层深入,对知识层面的要求,逐渐提高。从对基本语句的使用到对累的定义及使用,每一次作业除了考察新的内容以外,还包含以往的内容,在考察对累的定义及使用的同时,也包含了对函数方法的定义及调用,是对新内容的考察,也是对学过内容的复习以及巩固。
2.如何通过作业从面向过程过渡到面向对象
面向程序设计所面对的主体主要为程序本身所能够实现的功能;面向对象程序设计面对的主体则主要为针对对象能够实现的功能。 我认为类和对象作为面向对象程序设计中最基本的两个元素,在作业中要重点考察对类的使用。 让我们在完成作业的过程中,能够理解各类之间的关系以及类与对象之间的关系。从而让我们慢慢将编程思维的主体由对程序本身逐渐转至对对象本身。
3.作业中遇到的问题及解决办法
[1]对于部分算法的应用不熟练,设计的算法较为繁琐效率低下,造成程序运行超时等问题。
解决方法:通过查阅相关资料,了解相关算法。在结合pta中对所写代码反馈的测试结果,对自身算法进行改进。
[2]在定义类时对于类中返回值为多个且返回值类型为该类的数据类型的方法时,无法将计算结果返回。
解决办法:在方法中采用new语句创建一个新的类,将方法的计算结果赋予该类并将该类返回。
4.每次作业花费的时间比例
每次作业花费的时间平均为两天左右,作业花费时间如下:
Homework1---花费1天左右;Homework2---花费2天左右;Homework3---花费2.5天左右
比例为2:4:5。
5.对编程过程的逻辑严谨的认识及教训
对于编程逻辑的严谨性,我认为是需要对问题多加以考虑,将问题考虑全面。特别是对于问题可能出现的特殊情况,更需要考虑全面。 例如在作业中对于计算日期后n天的问题, 这就需要考虑到一些特殊因素。例如该年是否为闰年以及2月份只有28天或29天等特殊情况,这就需要具体问题进行具体分析。如果缺少了对于某种特殊情况的考虑,就会导致整个程序最后的计算结果错误,最终执行错误的指令。
二、设计心得
1.面向对象与面向过程的比较
面向对象程序设计与面向过程程序设计相关的语法语句都是大同小异。有很多相同的地方例如基本的数据类型int、float 、double 、short、char、 byte、 long。基本语句如判断语句if else选择语句switch循环语句while、 for语句等。同样二者间也存在差异。它们的基本结构不同,面向过程主要的结构为头文件以及主函数,而面向对象程序设计则需先创建package,在package中进一步创建public class,在类中创建主函数。而二者最大的区别则是他们所面对的主体不同。面向过程面对的主体为程序本身能够实现的不同功能,而面向对象则是以对象为中心,注重能够为对象实现不同的功能。举个例子来说,输出语句“hello world.”面向过程关注printf可实现的功能去输出不同的语句如输出“world hello.”,"what's that."等,而面向对象则关注对于语句“hello world”本身能够实现的功能,如计算语句中字符'o'出现的次数,整个语句中含有多少个字符等。
2.面向对象设计的基本原则理解
(1)单一职业原则:类的职责单一,不能将太多的职责放在同一个类中。
(2)开闭原则:软件实体对扩展是开放的,但对修改是关闭的,即在不修改一个软件实体的基础上去扩展其他功能。这也是基本原则中的最重要原则。
(3)里氏代换原则:在软件系统中,一个可以接受基类对象的地方,必然接受一个子类对象。
(4)依赖倒转原则:针对抽象层编程而不针对具体层编程。
(5)接口隔离原则:使用多个专门的接口来取代一个统一的接口。
(6)合成复用原则:在系统中应该尽量多的使用组合和聚合关联关系,尽量减少对继承关系的使用。合成复用原则能够维持类的封装性,使新旧类之间的耦合度降低,复用的灵活性提高。
(7)迪米特法则:一个软件实体对其他实体的引用越少越好,或者说如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用,而是通过引入一个第三者发生间接交互。使用该原则能够降低类之间的耦合度,提高模块的相对独立性,提高类的可复用性和系统的扩展性,并且能够减少暴露类成员,类本身不能改变降低对类的访问权。但过分的使用,该原则会产生大量的中间类和传递类,导致系统复杂度加大,因此要权衡使用迪米特法则,使系统构架清晰。
编写面向对象程序代码时,应权衡遵循基本原则,能够使程序结构更加清晰明了,提高程序效率以及程序的灵活性。
3.oo编程思维的理解
oo设计主要任务是将设计尽量与现实世界的事物一致化,使程序设计的思路符合现实世界的规律。类和对象是oo编程中最重要最基本的两个元素,设计时先确定需要处理的各个对象,在寻找个对象的共同祖先逐层抽象,最后确立各类的关系,遵循面向对象程序设计的基本原则构建整个程序。
三、测试的理解与实践
1.测试对于编码质量的重要性
为已经编码完成的程序设置相应措施是十分必要的。这是对代码质量的检测设置相应测试,能够对程序的相关漏洞及错误得以检测,同时能够检测代码灵活性及适用范围,进而使得代码能够改正相应的错误,提高代码的质量。
2.若自己设计测试用例的做法
若自己设计测试用例会设置代码所解决问题会出现的一般情况、特殊情况、最大使用范围、最低使用下限,以及随机输入n组数据对编码进行检测,并将测试结果加以反馈并提示可能错误的原因。
四、课程的收获
通过这4周对于面向对象程序设计的学习,使我了解到了面向对象程序设计的新思想,对解决问题有了新的思路,对程序的结构更加清晰,程序的模块化也更为明显,各个部分编码的分工也更加明确使得编码的编写及修改程序时能够更加快速便捷。同时在使用面向对象程序设计时,也拓宽了对代码解决问题的适用面,能够解决更多的问题。对相应函数的应用也使得在解决问题时能够采用更为便捷的算法对问题进行解决。
五、对课程的建议
在讲解新的内容时,如果能够多增加几个例子,使知识点更加浅显易懂能够加深我们对该知识的理解,同时在课后的作业中增加对于学习新内容的考察,通过练习使我们对所学新内容在熟练知识点更为巩固。
浙公网安备 33010602011771号