编程语言
首页 > 编程语言> > Java前五周学习笔记(修正版)

Java前五周学习笔记(修正版)

作者:互联网

(1)前言 :

1) 实体类   最基本的类

2) 业务类(控制类)   目的:减少耦合

3) 接口类   界面、展示

耦合性:两个类之间的紧密程度

类之间的耦合性越低越好,方便扩展

1) 关联

2) 聚集(聚合、组合)    聚合整体和部分的生存期可以不同,组合整体和部分的生存期一致

3) 依赖

4) 继承   一个类继承另一个类的所有属性和方法,与此同时可以在父类的基础上进行扩展,拥有父类没有的属性或方法

1. 单一职责原则

2. 里氏替换原则

子类的方法父类必须有

3.依赖倒置原则

有继承关系的两个类有依赖关系,依赖抽象,不依赖具体

4.接口隔离原则

一个接口里面的方法越少越好

5. 迪米特法则

(1):不要和陌生人说话

(2):只和你的直接朋友通信

(3):最少知识原则

6. 开闭原则

对于修改是关闭的,对于增加是打开的(代码只能加不能删)

7.合成复用原则

单纯实现复用用聚集

 

能装载对象的,被叫做容器

把类型作为参数  尖括号括起来的不能是基本类型

int long short char float double byte boolean

Private public protected default

Static final abstract

Class interface

Extends implenments

Object this super   this(),this.

String 定长字符串 StringBuilder StringBuffer

StringBuffer使用原因:

1. 变长字符串

2. 并发,线程安全的

非并发用 StringBuilder,并发用StringBuffer

List ArrayList LinkedList

Arrays

Collections

Math

Random

 

(2)设计与分析:

雨刷器系列:

1、brush1

第1个雨刷器较为简单,其展示了对类的分工,体现了单一职责原则。

2、brush(MVC)

MVC模式是软件工程中的一种软件架构模式,它把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。该实验则在原本的基础上加以改进,具体体现在将各实体类中的构造函数为 private,这样该类就不会被实例化。

 

2、brush(继承)

与之前的几个雨刷器实验最大的区别在于其使用了抽象类,并运用继承的方法。在该实验中充分体现了面向对象三大特性中的“多态”与“继承性”,提高了代码的扩充性和可维护性。值得注意的是:抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为public;抽象类不能直接实例化,需要依靠子类采用向上转型的方式处理;抽象类必须有子类,使用extends继承,一个子类只能继承一个抽象类;子类(如果不是抽象类)则必须覆写抽象类之中的全部抽象方法(如果子类没有实现父类的抽象方法,则必须将子类也定义为为abstract类。

 

 

 

 

 

第一次作业:

题目集1涉及类设计,题目对于类的调用及类的定义了解有一定要求,需要对类的理解较深刻清晰,这样就可以完成该题目集。其中7-3与7-4的区别需要分辨类与类之间的联系。

 

 

 

 

 

 

第二次作业:

题目集2所涉及的知识点较为单一,比较细致,整体比较简单,不存在太大的问题,按照题目示例做好输入、输出,使用恰当的选择语句,这样就可以完成该题目集。在7-7中判断三角形的类型运用操作符结合三角形的性质,就可以判断出三角形是什么类型。

第三次作业:

7-1

本题需要将字母转化为数字,这里可以利用ASII码里字母之间的差值为1,只要将a/A定义为1,这样后面的字母自然而然地转换为数字。

 

 

7-2

这里输入的这串字符中每串有效字符八位,之后有奇效验位和结束符,奇效验是根据有效字符判断,校验线路在收到数后,通过发生器在校验位填上 0 或 1,以保证和是奇数个 1。程序首先要判断各种错误情况,利用length() 方法、charAt() 方法截取字符串中子串用于判断,还有substring 方法截取指定字符串。将输入的字符串遍历一遍得到要判断的各个位置上的数字,这样就可以根据题意判断可能会出现的各种情况,先判断错误的几种情况,然后再判断正确的情况。这道题主要考验对字符串的操作,以及截取字符串。

 

 

 

 

 

7-3

本题需要截取字符串、对比字符串是否一样,我用 substring 方法截取自定位置的子串,使用 equals 方法将截取的字符串与指定字符串对是否一样,若一样则返回true,则能执行 if 语句里的语句。

 

 

 

第三次作业:

7-1

本题主要针对于对坐标的输入合法性的判断,考验我们对输入的掌握,针对以逗号或者其他符号为分隔符的情况,我们需要使用 spilt 方法设置分隔符形式以及

Double.parseDouble()方法,这样我们可以得正确的坐标输入。在计算距离时使用 Math.abs 与 Math.sqrt 两种数学函数。

 

 

7-2

本题与第二题相像,同样是对坐标输入合法性的判断,以及对switch语句的运用,还有对点构成的三角形数学运算,同样是运用 abs 等数学方法,本题涉及了几种情况的选择,所以在几种选择语句中,我选择了switch语句,这样会使代码更加简洁直观,在不同的情况下用与 & 、或 | 。在输入的时候,我将坐标存入字符数组,这样便于使用坐标。在判断两个数是否相等时,考虑到 double 运算时的精度损失,当差值小于0.00001时就看作是两个相等的数。

 

 

 

 

 7-3

      本题几乎囊括了前两题的知识点,涉及了许多三角形的数学知识,并且需要考虑多种不同的情况,这就考验了我们对知识的熟练程度,以及代码的简洁程度,所以需要构建许多类方法。我尝试用charAt(indx) 方法遍历字符数组,但结果并不是我想的那样会输出是否合法。我又换成将字符数组转换为字符串一个一个字符遍历,以flag标记是否有不符合标准的情况,结果和第一种方法一样不了了之。在本题当中涉及的数学方法,我掌握得不够好,导致有些情况实现不了。

(3)采坑心得:

       在做题过程中我因为误判奇效验的方法而写错,以至于在测试的时候一直过不了测试点,一直出现错误的输出,后来查资料才发现方法用错了。在截取字符串时不知如何将截取的子串与另一个字符串比较,需要运用 equals 方法。以及在 length 方法使用上字符串与字符数组的使用方法是不一样的,最开始做题时出现了关于length方法的报错才知道使用上的区别。在测试时输出有时为空,其实是有时程序没有走到该步骤。有时因为惯性思维单个字符我用了 " " ,单字符理应用 ' ' ,所以程序报错。在数据集2中7-2题目里,在字符串只有十一位时,返回的结果一直不正确,测试点显示错误。在数据集3中,由于我不懂如何判断输入数字是否合法,暂时也找不到方法,我尝试标记字符,但结果一直为空,我不知道是方法出现问题还是某一个环节出现差错,我还在验证当中,并且在运用数学方法上我也有所欠缺,导致有些步骤我不知道如何实现。在出现问题时应该首先看看错的地方是否有语法错误或者有逻辑错误,尤其是逻辑错误隐藏最深,容易让人忽略,导致测试一直报错。当方法用错时,或者方法不清楚时,查找资料、看书是最有用快捷的方法,当然在查找的过程中我们也应该不断思考这方法如何用、为什么要用这个方法、这个方法可不可行以及能否自己得出方法。

 

 

 

 

 

 

 

 (4) 改进建议

       每个测试点加上注释,这样可以让学生们了解明白自己到底是哪一点没有做好,为改进代码提供一个方向。在测试时不知道自己哪里错了,不清楚改的方向在哪,难免焦躁,如果有注释指明是哪种类型的数据过不了,那么我们的效率会更高,也会提高学生的积极性。

(5) 总结:

       雨刷器系列实验与题目集由浅到深,知识点层层递进,且涉及广泛。类的设计逻辑对于我来说难度有点大,这也让我意识到了自己的不足,意识到自己还有许多需要改进的地方,需要学习的地方,有些我认为自己懂了的地方,实际上我并没有真正懂。我需要更多的知识来充实自己这样才不会出现寸步难行,无法动手的情况。在知识掌握上,我还是比较浅显,所以在真正运用上还是不够熟练,有些时候甚至没有用对。在意识到自己的不足后,我会改进自己的学习方法以达到更好的学习的效果。

       我学会了:类的概念,面向对象基本设计原则,继承,MVC设计模式以及一些Java基础类。

 

标签:字符,Java,子类,截取,修正版,前五周,字符串,方法,本题
来源: https://www.cnblogs.com/lhzzz/p/16142757.html