Week03-面向对象入门 黄泽鑫201621123077
1. 本周学习总结
1.1 写出你认为本周学习中比较重要的知识点关键词,如类、对象、封装等
1.package与类路径
2.类和对象,修饰词
3.封装
1.2 用思维导图或者Onenote或其他工具将这些关键词组织起来。

(使用了XMIND)
2. 书面作业
1.以面向对象方式改造数据结构作业'有理数'(重点)
1.1 截图你主要代码(需要在程序中出现你的学号和姓名)并粘贴程序的git地址。

git地址
1.2 对比你的代码与历程的代码,说明面向对象编程与面向过程编程有何区别?
1.面的对象编程:将事物对象化,通过对象通信来解决问题,具有较强的封装性。
2.面向过程编程:以过程为中心,然后利用函数进行一步一步的解决。
2. 构造函数与初始化块
2.1 结合PTA 5(构造函数与toString)说明构造函数有什么用?其函数格式有何特征?
1.构造函数主要用于初始化对象的属性。
2..构造函数的命名必须和类名完全相同;构造函数不能被直接调用,必须通过new运算符在创建对象时才会自动调用;
2.2 如果一个类不写构造函数,它有构造函数吗?如果一个类中只有带参的构造函数,它有没有不带参数的默认构造函数?
1.一个类在没有构造函数的情况下,系统会默认构造一个函数;
2.如果类中本身自带这一个构造函数,系统不会默认构造一个不带参数的构造函数,需要自己构造。
2.3 查看String类的源代码,找出3个看得懂的String类的构造函数,并使用自己的话描述这3个构造函数的区别。
1.String(String original):分配一个字符串以表示它的序列。
2.String() :初始化一个新创建的字符对象。
3.String(char value[]):分配一个新的字符串,其中包含来自子数组的字符数组的参数。
2.4 结合PTA(构造函数与初始化块)说明初始化块与构造函数的异同。并说明,初始化块与构造函数谁先执行?初始化块与静态初始化块有何不同,谁先执行?
1.初始化块先执行,然后才是构造函数。
2.初始化块分为静态初始化块和非静态初始化块,静态初始化块中想初始化变量,那仅能初始化类变量,即static修饰的数据成员。静态初始化块先执行。
3.代码分析:Math类
3.1 使用java.lang.Math类的方法时,为什么不需要new出一个Math对象,然后调用该对象上相应的方法?
因为Math在java.lang(java的基础类包)包中所以无需new.
3.2 如果new Math()会产生什么错误?尝试阅读Math类源代码,分析原因。

因为Math已存在,不需要再次进行实例化。
3.3 进一步:你觉得什么样的对象需要new出来才能用,调用什么方法时不必创建相应对象就可以使用?(重点检查)
1.为类创建对象时使用。
2.当一个方法被声明为static的时候,就可以直接使用类名.方法,而不需要new。
4. 重载Overload
4.1 什么是重载?什么是构造函数重载?怎么才能区分两个重载的方法?
1.同名不同参数的函数或者方法之间,互相称之为重载函数或者方法
2.根据类型进行区分。
4.2 在java.lang.Math类中举出1个方法重载的例子?
static float abs(float a)和static double abs(double a)
5. 代码阅读: final
final修饰的变量不能改变,为什么如下代码却可正常运行?
final int[] NUMBS= {1,2,3,4,5}; NUMBS[2] = 1;
final修饰的变量不能改变意思是final所修饰的引用变量不可改变,引用变量所指的对象不受此影响。
6. Java8中的时间日期类:编写函数public static boolean isMondayToFriday()
功能:判断今天如果是周一到周五,返回true,返回false。main函数中调用该函数,如果为true则输出“工作日+姓名学号”,否则输出"休息+姓名学号"。
截图:关键代码。
提示:使用LocalDateTime, DayOfWeek类

7. 封装。
7.1 结合PTA(形状),请用自己的话简单总结一下面向对象中封装是什么意思?有何好处?
1.将具体的实现细节装到一个容器中,并封闭起来,防止容器外部直接访问容器内部的实现细节,仅公开暴露指定的访问路径
2.外部对象是无法直接访问对象的内部实现细节,内部实现细节的的改动不会影响到外部对象的访问原则;被封装后的对象可以被外部多个对象访问,而无需为每个外部对象去指定不同的服务对象;可在不知道内部细节的情况下通过名称了解对象资料。
7.2 和封装有关的关键字有哪些?
1.
public2.protected3.private
8. 结对编程实践(未完成,0分)
找一个水平相近的同学完成1-2题实验题。开始编程前,可先对内容进行讨论。
写出体验报告,包括以下内容:1.对方姓名。2.所完成的题目。3.感想。4.照片(上次很多同学并未贴照片,请贴上)
1.合作对象:雷江楠。
2.合作完成的题目:编写函数public static boolean isMondayToFriday()
3.感想:主要与舍友一起探讨了在编写函数public static boolean isMondayToFriday()所需要调用到的几个java基础包。在一番测试之后,采用了import java.time.DayOfWeek;,import java.time.LocalDate;这两个包,并在模仿作业参考之后,完成了该题。
4.图片:
3. 码云及PTA
3.1. 码云代码提交记录

在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 然后搜索并截图
3.2 截图PTA题集完成情况图


需要有两张图(1. 排名图。2.PTA提交列表图)
.3 统计本周完成的代码量
需要将每周的代码统计情况融合到一张表中,可使用最新版的代码统计工具的-history参数,详细用法见项目wiki地址。表格如下所示:
| 周次 | 行数 | 新增行数 | 文件数 | 新增文件数 |
|---|---|---|---|---|
| 1 | 0 | 0 | 0 | 0 |
| 2 | 271 | 271 | 10 | 10 |
| 3 | 386 | 115 | 13 | 3 |

浙公网安备 33010602011771号