• 微信公众号:美女很有趣。 工作之余,放松一下,关注即送10G+美女照片!

第二阶段Blog作业

开发技术 开发技术 2周前 (05-02) 7次浏览

                                               第二次作业总结

第二次题目集总结:

(1)   前言:

第一次作业知识点:

1.正则表达式的构建与使用规则。

2. 使用聚合的关系将不同的类之间建立联系。

3. 类中方法的创建。

4. 无参,带参的创建方法。

5. 继承类的定义方法及使用方式。

6. 重写父类中的方法。

7.使用private实现数据的封装。

8.使用switch语句进行选择。

9.使用super()方法在子类中调用父类的方法。

10.使用System.exit(0),退出程序。

11.使用Integer.parseINT(input.next())将输入的字符串类型数据转化为整形数据。

12.if-else嵌套语句。

13.使用StringBulider对字符串数据处理。

14.聚合类的关系

第一次作业题量:

第一次题目一共有3题,第1题与第2题代码量与题干信息量都算比较大的,第3题的代码量比前两题稍短。

第一次作业难度:

这次作业中最难的题目肯定是第一题了,因为它的信息量与需求比较大和复杂,需要我们对题干去分析理解,挖掘有效信息,第三题的的代码虽然较多,不过只要跟着类图走,把类的逻辑理清楚,其实不算难。

第二次作业知识点:

1.字符串输入。

2.使用split()方法对字符串进行处理。

3.使用字符数组对处理后的字符串进行储存。

4.使用Arrays.sort()方法对数组进行自动排序

5.使用Switch()-case方法进行方法选择。

6. list.length()方法获取数组的长度。

7.冒泡排序法的使用。

8.插入排序法的使用。

9.选择排序法的使用。

10.Array.list()方法接口的使用。

11.使用System.exit(0)方法退出程序。

12.使用list.match()方法对数据进行处理。

13.聚合类方法的使用。

14.使用Integer.parseINT(input.next())将输入的字符串类型数据转化为整形数据。

15.类中方法调用,类中数据的调用。

第二次作业题量:

第二次作业一共有5道题目,前三题为基础题,第四题和第五题代码量开始变大,尤其是第五题类多,方法多。

第二次作业难度:

第二次作业难度大的是第四题和第五题,前面三题的难度不大,为基础题,第四题需要学习接口方法,第五题则要考虑类间的关系,类中方法的调用,日期的计算方法,难度较大。

第三次作业知识点:

1. 使用matches()函数完成正则表达式的使用。

2.使用str.length()函数测量字符串的长度。

3.使用冒泡排序法对字符的ASCII值进行排序

4.使用if-else语句进行判断。

5.类与类之间的继承。(抽象类与子类)

6. ArrayList<>常用方法及和数组的关系。

7. 泛型的应用。

8. Arrays及Collections的简单应用。

9. 多态的原理及用法。

10.接口的定义方法。

第三次作业题量:

第三次作业一共有6题,不过前几题的解题方法其实是大同小异的,并且前几题的代码量不多,主要是第5题,第6题的代码量比较大。

第三次作业难度:

前面四题考查正则表达式与字符串的使用,难度不算大,难度集中在后面两题,其中包括第五题ArrayList<>的使用方法,对list进行元素的添加修改使用等,toString()及String.format()方法的使用collections方法对元素的位置进行互换,都是自学的内容。

(2)设计与分析

题目集4(7-2):

报表内容分析:

 第二阶段Blog作业

 

 

 类图展示:

 第二阶段Blog作业

 

 

解释与心得:

因为这次题目使用了类的原因,让平均复杂度不会像以前只有一个主类那么高,并且每个类里写什么方法的条理也比较清晰,只是主类稍微比较复杂了点,有多个if-else,让主类的复杂度最大;合理使用类与类之间的关系,可以让代码变得更简单易懂。

题目集5(7-5):

报表内容分析:

 第二阶段Blog作业

 

 

类图展示:

 第二阶段Blog作业

 

 

解释与心得:

在DateUtil类中进行日期的计算时使用了较多的if-else进行日期的加减,导致复杂度比其他类大,但这个类中用到if-else的内容也比较多; 需要把DateUtil类里的算法进行进一步的优化

题目集4(7-3)

报表内容分析:

 第二阶段Blog作业

 

 

类图分析:

 第二阶段Blog作业

 

 

解释与心得:

本题主类中使用了switch-case嵌套,又在里面嵌套了if-else让复杂度比别的类多的多,其他类中只是返回了相应的数据所以复杂度很低;本题类与类之间是继承关系,Circle类等都继承自抽象类Shape;抽象类里只能有抽象方法。

题目集6(7-5):

报表内容分析:

 第二阶段Blog作业

 

 

类图分析:

 第二阶段Blog作业

 

 

解释与心得:

在主类中使用了较多的for语句,if-else判断复杂度较高,因为shape类是抽象类,里面只有抽象方法所以复杂度为0;本题使用抽象类作为父类,子类对抽象类中的抽象方法进行重写,

题目集6(7-6):

报表内容分析:

 第二阶段Blog作业

 

 

类图分析:

 第二阶段Blog作业

 

 

解释与心得:

本题使用了接口方法MJ,内容不多,并不复杂,类与类之间的关系也比较简单。

题目集5(7-4):

报表内容分析:

 第二阶段Blog作业

 

 

类图分析:

 第二阶段Blog作业

 

 

解释与心得:

本题只使用了一个主类,主类里 包含了while,for语句,if-else循环,尤其是for语句的嵌套以及for语句和if-else语句的嵌套使得复杂度较高;可以把排序的那个算法使用别的方法减少代码量和算法的复杂度。

 

①   题目集4(7-2)、题目集5(7-4)两种日期类聚合设计的优劣比较:

这次的类图与上次不一样,原因是类与类之间的关系发生了变化,7-2题中类与类之间的关系比较单一,为依赖关系,必须从一个类中去使用下一个类,但7-5中类的关系就比7-2中的更高级,为组合关系,类与类之间不会相互影响,使用方法的时候只需要从Main类中构建相应的对象即可。

②   题目集4(7-3)、题目集6(7-5、7-6)三种渐进式图形继承设计的思路与技术运用(封装、继承、多态、接口等):

设计思路:

根据设计类图中给出的类,以及图中箭头代表类与类之间的关系构建子类与父类。

运用技术:

封装:使用private定义变量类型,对变量的值用get,set方法进行修改调用。

继承:区分抽象类与非抽象类,抽象类中只能有抽象方法,子类使用extends继承父类后要对父类的方法进行重写。

多态:对父类的方法在子类中重写。

接口:比抽象类还要抽象的类。

③   对三次题目集中用到的正则表达式技术的分析总结:

三次正则表达式难度依次降低,三次题目集都离不开正则表达式最基本的正则表达式语句,只是在使用matches()方法时有所不同。

④   题目集5(7-4)中Java集合框架应用的分析总结:

使用正则表达式对输入的字符串进行切割判断,再使用接口对元素进行储存后继续进行判断。

(3)踩坑心得:

1.在使用switch-case语句时,在写出全部case后漏了default语句,导致最后漏掉一个条件。

2.没有区分println,printf,print三种输出格式,导致答案错误。

Println使用后会换行,ptintf是对数据进行格式化输出,print输出后不会换行。

3.没有理解super()方法的作用,一直在重复父类里以及有的语句,让代码显得十分复杂。

4.输入数据时,定义的是Int类型但在输入时写的是nextDouble()。

5.toString()语句不会用.format()进行输出。

            return String.format(“%.2f “, getArea());

一开始我是想自己写一个print去输出结果,但不符合题目的要求,查了资料才发现toString的用法。

6.在进行累加的时候,没有注意到定义的那个变量的值会一直被重新定义,导致答案一直计算错误。

                       s=list.size();

                       for (int j = list.size(); j < b+sb; j++) {

                             list.add(new Rectangle(in.nextDouble(), in.nextDouble())) ;

                             if (list.get(j).validate()==false) {

                                   System.out.println(“Wrong Format”);

                                   System.exit(0);

                             }

                             total = total + list.get(j).getArea();

                       }

                       s=list.size();

在一开始时,没有做到对s进行重新赋值,只有一个赋值语句。

7.在写日期类那道题中,计算日期差时,我用的全是if-else语句,结果代码超时运行,最后也没跑出答案。

8.没有用System.exit(0)在程序输入的数据不合法时候主动退出程序。

(4)改进建议:

1.日期类中,类与类之间可以再有别的关系。

(5)总结:

学习的内容:

1.父类与子类之间的关系的使用;

2. System.out.println(),System.out.print(),System.out.printf(),三个语句的区别及用法(System.out.println()是输出后换行,System.out.print()是直接在这一行输出,System.out.printf()是控制参数输出);

3. 抽象类与接口的使用。

4. 类与类之间关系的构建。

5.使用Arraylist<>方法对对象元素进行存储,操作使用。

6.正则表达式的使用方法;

7.多态的定义方法。

需要进一步学习和研究的内容:

1.正则表达式的规范使用;

2.抽象类与接口的本质区别;

3.算法优化方式;

4.代码复杂度要怎么去降低,代码的深度,以及怎么去降低代码的维护成本,怎么让代码写的简单易懂。

5.因为这几周的上课时间比之前稍微短了一点,老师讲的内容也就加快了,需要自己加强自学的能力。

建议以及意见:

1.希望老师能把作业需要用到的知识点讲的详细一点,有时候在网上找的资料内容不够详细,不足以完成作业;

2.希望能把作业和实验的时间安排的不那么紧促,最好能在上一次作业截止后再开始下一次作业;

3.代码量有点多…

 

 


程序员灯塔
转载请注明原文链接:第二阶段Blog作业
喜欢 (0)