Java第二周期作业总结

0.前言

本次博客主要是继续上一次的博客进行进一步的作业总结,主要对这几周的所学到的知识进行进一步的理解和加深,包括水文数据校验及处理、蒙特卡罗方法求圆周率、图形的继承等等。

1.作业过程总结

①总结三次作业之间的知识迭代关系;

从第四次作业到第六次作业,题目中给出的uml类图逐渐变的简易,给了我们更大的思考空间,当然,这也进一步加大了题目的难度,对于我的思维和逻辑要求逐渐提高,并且,大部分知识需要我进行网上的自学,老师仅仅只是给了我一个引子,所以相较于前几次作业,所花费的精力和时间变得更多

 

 

 第4次作业的第一题是我目前几次作业中最难的一题,需要思考水文数据校验及处理的思路分析和正则表达式的使用,由于这是第一次接触到正则表达式,而这道题对于正则表达式的要求过高,检测数据的输入规范性,首先要以回车为标识,把一长串的字符串分为小的一句字符串,接着用正则根据不同的符号,如“/”, ”  “:”,用split方法将数据分割,获得我们要求中需要的数据,再用正则匹配进行检验。

第5次作业主要考察的是继承与多态,相比于正则表达式,我认为这些知识相对比较简单,但在编程的过程当中,子类的繁琐和用途不确定性,对于编程过程而言也是相当难受

而第6次作业,看似还是继承和多态,仅仅只是加了一个Comparable接口,但根据老师的讲解,逐步意识到封装的重要性

②如何通过作业逐步理解面向对象的封装性、继承性与多态性三大技术特性;

 

封装性

1.封装性就是保证类内部的定义不被外部可见

2.所有属性都必须使用private封装,封装后的属性如果要被外部所访问,要定义相应的setter和getter方

第一次作业的图形继承中主要是对封装进行体会,并且运用了简单的多态,例如,Circle类继承自Shape类,虽然此时的Shape类并没有实质性的作用。

继承性

1.继承性的好处:①减少了代码的冗余,提高了代码的复用性;②更好的扩展性 ③为多态性的使用提供了前提

 

 

多态性

多态存在的三个必要条件

一、要有继承;

二、要有重写;

三、父类引用指向子类对象

多态的定义:指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息就是函数调用)

 

 

 

 

③作业过程中遇到的问题及解决方法

第4次大作业水文校验题主要是对于类之间的结构缺乏逻辑思维能力,如何对大量数据分割并且储存在类和Arraylist中,在这一部分花了很长的时间,

此外,正则表达式的运用相当不熟练,很长一部分时间是用来修改正则表达式,如哪里顺序错了,那里多了一个括号,此外,还花费一部分时间去网上找视频来学习,所以做到后面没有太多的耐性了

第五次作业一元式的求导同样要求对正则的熟练掌握,更需要掌握对字符串各种截取方法,还有主要是对Collection集合框架以及他的用法和原理不太理解,

第6次作业,主要是不明白cardSort(),compareTo(Card card)这几个在排序中的具体用处

 

④每次作业花费的时间比例

7:2:1

第4次作业第一次接触正则表达式,且缺乏对于题目的逻辑能力,导致运行时输入数据一直无法得出答案,所以时间是最长的

 

 

2.OO设计心得

面向对象三大技术特性之间关系的理解:

①对面向对象三大技术特性之间关系的理解

面对对象的三大技术现在也是学习的差不多了,其中封装性可以隐藏内部细节,对外提供公共访问方式,提高安全性,提高代码的复用性。

继承的好处 :提高了代码的复用性,提高了代码的维护性,让类与类之间产生了关系,是多态的前提

在三大特性里,彼此之间都是有很大的联系,各个迭代,相互依存

 

面向对象设计的基本原则理解(单一职责原则及-原则):

单一职责原则(Simple Response Principle):就一个类而言,应该仅有一个引起他变化的原因。

当一个类承担了过多的职责,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其它职责的能力。这种耦合会导致脆弱的设计,当设计变化时,设计会遭受到意想不到的破坏。

软件设计真正要做的事,就是发现职责,并把这些职责相互分离。

判断是否职责单一的方法:如果你想到多于一个动机去改变一个类,这个类就具有多于一个的职责,就应该对类进行职责分离。

 

开放-封闭原则:软件实体(类,模块,函数等),应该可以扩展,但不可修改。

即:对于扩展是开放的(Open for extension),对于更改是封闭的(Closed for modification)。

一个较好的实践方式是等到变化发生时立即采取行动。在我们最初编写代码时,假设变化不会发生。当变化发生时,我们就创建抽象来隔离以后发生的同类变化。

4.课程收获

通过这四周的学习,学习到了如何去设计一个类,也学会了类的继承,多态以及什么是抽象类。对类之间相互调用也变得更熟悉。

学会了如何去修改类图,按照自己的理解去编程

5.对课程的建议

希望能够把pta的最好的答案发布一下,以便学习

 

 

 

 

 

 

 

 

 

posted @ 2020-05-02 16:47  Rcombo  阅读(121)  评论(0)    收藏  举报