第二阶段大作业学习思考

       本次博客主要针对第二阶段的大作业进行一些总结思考,第二阶段大作业明显要比第一阶段大作业的难度要大得多,因此对应的也出现比第一次更多的问题。

       先来分析下此次作业的知识点,首先是第四次大作业,第四次大作业总共三个题目,后面两个比较简单,作为前菜,分别是求圆周率和一个图形类的创建和处理;圆周率的比较简单,主要是对一个随机数的生成,再根据题目的要求构建一个方法类来模拟圆周率的生成;最后一个题目是课堂上讲过的,难度不大,创建基础的Shape类,再通过此类继承创建其他类实现一些基本方法,该题很好的体现出面向对象编程的含义。最后是第一题,这一题是水文校验,这题我觉得是让我在第二阶段感觉最不得心应手的题目,这题让我第一次对正则表达式进行一个系统的学习,让我诧异的是,我在Java之前也学习过同样是面向对象编程的python语言,但是好像没有接触过正则表达式,这也提示了我,在专业学习中还是存在一些漏洞。水文校验先要通过正则表达式对输入数据进行校验,也就是checkdata类,很显然,怎样设计一个正则表达式在checkdata类甚至这一题中非常重要,如果你的正则表达式的形式设计的好,可以使得程序运行中更加稳定,也使得在后面对数据validation更加便捷。然后是第五次大作页,上一次大作业之后,后面的大作业的难度有所降低,主要是老师考虑到我们第一次接触正则表达式,让我们有个了解的过程。第五次大作业总共两题,第一题是在上次最后一题的基础上加上一个排序,怎样进行排序?之前面向过程排序,曾经讲过一些类似冒泡排序的一些算法,冒泡排序应该是我学编程第一次接触的一个算法,在上学期的数据结构也学过一些类似快速排序和希尔排序,但是在面向对象编程中,更注重的是怎样设计类,以及类与类之间的相互调用,对于一些基本的操作,Java又或是其他面向对象编程语言都有很多已经定义好的函数和接口可以选用,在对图形类进行排序中,就可以用到List,List对成员的添加以及操作都比较方便,代码也变较简洁,排序可以用到comparable接口的compareto函数,对它进行重载,修改它的参数,最后直接List.sort就可以轻松搞定排序,第二题是多项式求导,这题首先跟上次大作业的水文校验一样,利用正则表达式对多项式进行格式校验,然后就是对其进行拆解求值。第六次作业依然是创建类,实现基本方法然后对其排序,不过在这次的类比较复杂,总共的类超过了5个,所以非常需要理清它的关系,此时在心里应当有一个图,这个类是什么,属于谁,实现哪些方法,类与类之间有什么关系,此题是有个card类,下面还有许多不同的子类,这些子类又是通过Shape类继承过来的,同时还要用到多态的概念,值得一提的是,在后面主方法类中,对类成员访问非常繁琐,东西多就容易乱,所以需要让自己的思绪清晰。

       现在,来借这次作业和自己平时的一些经历,谈谈封装多态和继承,面向对象编程有封装,继承和多态三个特点,这三个特点使得面向对象编程比面向过程编程能胜任适用于多个场合。所谓封装,就是隐藏其内部成员属性,方法,相当于把类制作成了一个盒子,你不能对其内部进行操作,在软件使用乃至开发过程中,我们其实不对它内部细节感兴趣甚至多次关注它,这是我们可以利用set和get方法进行封装,使得我们只关心使用,不影响内部的细节,这样使得软件和程序方便维护,使得面向对象编程能够更加简洁,适用各种复杂的场合。然后谈一谈继承,继承就是一个子类继承父类的属性和方法,面向对象编程最令人惊喜吃惊的是它能如此惊人地模拟现实世界,继承比较符合现实地认知,通过继承我们能将我们对现实世界认知的关系载入类中,使得类与类之间关系明了,修改代码更方便。最后,谈谈 多态性,多态也是现实世界很明显的一个特征,一种物质有多种展现形式,借由继承和多态使得面向对象编程的效果非常好,如此得栩栩如生。

       本次阶段作业主要就是正则表达式的问题,因为第一次接触,所以也投入了很多时间,正则表达式的可读性不是很好,每次自己写一个比较复杂的正则表达式,会先写好然后在网上有个在线的正则表达式的校验工具,多写几次之后发现自己熟练了很多。此次阶段的三次大作业比上个阶段花的时间要多出很多,第四次和第六次花费的时间比较多,第四次的作业比较陌生,第六次大作业比较繁琐。

       通过这阶段的大作业,对单一职责原则和开闭原则有了进一步的认识。单一职责原则即一个类只能负责一个功能,你不能在一个类中实现两个功能,这样做在编译和逻辑上是没有问题,但是在面向对象设计整体结构中表现得并不友好,将多个功能耦合在一个类中,这样在程序维护和代码修改乃至开发思维上都是不利的。开闭原则指的是一个程序应当对扩展是开放的,对修改是封闭的,在软件开发过程中,这种特性对一个已开发完毕即将面对市场的软件是极其有利的,没有这个原则,软件可能会频繁地出现bug甚至崩溃。

       最后对于本阶段大作业和课程谈一谈自己地一些感想,本阶段大作业的题量和难度个人觉得是非常合理的,既有能够巩固自己编程知识和提高编程速度的题,也有能够有效提高自己编程水平的题目。在这里想提一下自己对以后大作业的一些意见,觉得大作业在内容上重复性高,比如有关日期的出现了很多次,有关图形的也出现了很多次,希望以后的大作业题目每题都能有全新的编程背景而不是把一个主题不断复用。

猜你喜欢

转载自www.cnblogs.com/yxc873671106/p/12817950.html
今日推荐