作业03-面向对象入门.md

时间:2022-11-26 06:29:26

1. 本周学习总结

初学面向对象,会学习到很多碎片化的概念与知识。尝试学会使用思维导图将这些碎片化的概念、知识点组织起来。请使用工具画出本周学习到的知识点及知识点之间的联系。步骤如下:

1.1 写出你认为本周学习中比较重要的知识点关键词,如类、对象、封装

1.2 用思维导图将这些关键词、关键概念组织起来。注意:一般来说不要在导图中写太多字。

参考资料:

XMind

如何使用XMind

2. 书面作业

1.以面向对象方式改造数据结构作业“有理数”(重点)

注意:属性必须为private

1.1 截图你主要代码(需要在程序中出现你的学号姓名)并粘贴程序的git地址。

1.2 对比你的代码与历程的代码,说明面向对象编程与面向过程编程有何区别?

参考资料:

有理数C语言例程下载

BigDecimal类中的方法设计。

2. 构造函数与初始化块

2.1 结合PTA(构造函数与toString)说明构造函数有什么用?其函数格式有何特征?

2.2 如果一个类不写构造函数,它有构造函数吗?如果一个类中只有带参的构造函数,它有没有不带参数的默认构造函数?

2.3 查看String类的源代码,找出3个看得懂的String类的构造函数,并使用自己的话描述这3个构造函数的区别。

2.4 结合PTA(构造函数与初始化块)说明初始化块与构造函数的异同。并说明,初始化块与构造函数谁先执行?初始化块与静态初始化块有何不同,谁先执行?如果建立过个对象,静态初始化块会执行几次?

3.代码分析:Math类

3.1 使用java.lang.Math类的方法时,为什么不需要new出一个Math对象,然后调用该对象上相应的方法?

3.2 如果new Math()会产生什么错误?尝试阅读Math类源代码,分析原因。

3.3 进一步:你觉得什么样的对象需要new出来才能用,调用什么方法时不必创建相应对象就可以使用?(重点检查)

4. 重载Overload

4.1 什么是重载?什么是构造函数重载?怎么才能区分两个重载的方法?

4.2 在java.lang.Math类中举出1个方法重载的例子?

5. 代码阅读: final

final修饰的变量不能改变,为什么如下代码却可正常运行?

final int[] NUMBS= {1,2,3,4,5}; NUMBS[2] = 1;

6. Java8中的时间日期类:编写函数public static boolean isMondayToFriday()

功能:判断今天如果是周一到周五,返回true,返回false。main函数中调用该函数,如果为true则输出“工作日+姓名学号”,否则输出"休息+姓名学号"。

截图:关键代码。

提示:使用LocalDateTime, DayOfWeek类

参考资料:

JAVA 8:健壮、易用的时间-日期API - ImportNew.pdf

Java8DateTimeTest.java

7. 封装

7.1 结合PTA(形状),请用自己的话简单总结一下面向对象中封装是什么意思?有何好处?**

7.2 和封装有关的关键字有哪些?

8. 结对编程实践(未完成本次作业得0分)

找一个水平相近的同学完成1-2题实验题。开始编程前,可先对内容进行讨论。

写出体验报告,包括以下内容:1.对方姓名。2.所完成的题目。3.使用结对这种方法进行编程的感想(非实验总结)。4.照片(上次很多同学并未贴照片,请贴上)

9. 选做:使用阿里巴巴静态代码扫描工具 扫描自己的代码

9.1 简述自己代码中在规范方面出现的问题

9.2 如何解决这些问题

10. 选做:Runnable Jar

我们以前编写的程序,必须打开Eclipse或者将相应的.class文件拷贝出来在命令行下执行相应命令才能运行,如果.class文件较多且类文件中有包名,需要将完整的目录结构及文件拷贝出来,才能运行。现在希望将Eclipse项目中的Java文件打成一个可运行的jar包,在命令行直接运行。改造题目6,使其从命令行接收参数,参数为年-月-日,如1999-09-09。最后将项目打成可运行的jar包,然后在命令行通过java -jar运行,并截图。参考文件如下:

Eclipse生成Runnable jar

3. 码云及PTA

3.1. 码云代码提交记录

  • 在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 然后搜索并截图

3.2 截图PTA题集完成情况图

本周完成(构造函数与toString,构造函数与初始化块,形状)

需要有两张图(1. 排名。2.提交列表)

3.3 统计本周完成的代码量

需要将每周的代码统计情况融合到一张表中,可使用最新版的代码统计工具的-history参数,详细用法见项目wiki地址。表格如下所示:

周次 总代码量 新增代码量 总文件数 新增文件数
1 200 200 3 3
2 500 300 7 4
3 600 100 8 1

参考文件:

第3周作业参考文件

其他:

  1. 阅读代码EmployeeTest.java,回答:

    5.1 为什么Employee类的属性应设置为private?你觉得设置为public好不好,为什么?

    5.2 为Employee类增加一个无参构造函数,调用其有参构造函数,设置name为雇员1, salary为3000, hireDay的年月日为2017年3月5日。(粘贴关键代码)

    5.2 为Employee类再增加一个有参构造函数,参数只有name与salary,hideDay为当前日期。(粘贴代码)