1. 本周学习总结
初学面向对象,会学习到很多碎片化的概念与知识。尝试学会使用思维导图将这些碎片化的概念、知识点组织起来。请使用工具画出本周学习到的知识点及知识点之间的联系。步骤如下:
1.1 写出你认为本周学习中比较重要的知识点关键词,如类、对象、封装
等
1.2 用思维导图将这些关键词、关键概念组织起来。注意:一般来说不要在导图中写太多字。
参考资料:
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
运行,并截图。参考文件如下:
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 |
参考文件:
其他:
-
阅读代码EmployeeTest.java,回答:
5.1 为什么Employee
类的属性应设置为private?你觉得设置为public好不好,为什么?
5.2 为Employee
类增加一个无参构造函数,调用其有参构造函数,设置name为雇员1
, salary为3000
, hireDay的年月日为2017年3月5日
。(粘贴关键代码)
5.2 为Employee
类再增加一个有参构造函数,参数只有name与salary,hideDay为当前日期。(粘贴代码)