第三周《java语言程序设计——面向对象入门》学习总结

1. 本周学习总结

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

答:面向过程编程的关注点是函数,而面向对象编程的关注点是先要有对象,然后调用对象的方法。而所谓对象是状态与行为相绑定。
常用的对象“String”对象。 对象:是表现现实世界中某个具体的事物。 类:是对对象的抽象描述。类只是作为模板,有了它才可以创建对象。
cir = new Circle( ) ; (变量cir存放的不是对象本身,而是指向该对象的引用)。
1、public:公开,所有其他类均可访问(常用于修饰方法,表示希望该方法可以被其他类访问)。
2、private :私有,只有对象自身可访问(一般来说属性都要声明为 Private !)
3、无修饰词:表示包访问权限制,自己及同一个包内其他类才可访问;
4、修饰符的作用范围: public > 无修饰符 > private
5、 构造函数主要用于初始化对象的属性。
6、封装性的好处:隐藏类的实现细节,便于修改,增强代码的可维护性、可进行数据检查。

1.2 用思维导图或者Onenote或其他工具将这些关键词组织起来。

``设计原则有六点:

                          1、一个类只负责一项职责   
                           
                          2、子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法    
                           
                          3、子类中可以增加自己特有的方法
                           
                          4、当子类的方法重载父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松    
                           
                          5、当子类的方法实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父类更严格
                          
                          6、高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象
       
       设计模式:是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结
               
          总结:面向对象设计模式描述了类与相互通信的对象之间的组织关系。目的是应对变化、提高复用、减少改变``

2. 书面作业

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

1.1 截图你主要代码(需要在程序中出现你的学号和姓名)

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

答:面向对象的编程主要是注重于如何把相关的功能,包括函数和数据有组织地捆绑到一个对象的身上。而面向过程的编程更加注重于如何使用函数去实现既定的功能。

2. 构造函数与初始化块

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

答:构造函数可以对类进行初始化操作,如初始化类的属性值。
构造函数的特征:1、构造函数名称与类名相同 2、构造函数无返回类型(不是void)

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

答:1、如果一个类不写构造函数,则系统默认有一个无参构造方法。
2、可以定义不带参数的构造函数,可以同名,但是不可以有相同参数。``

2.3 查看String类的源代码,找出3个看得懂的String类的构造函数。

答:三个构造函数所含参数不同。

2.4 结合PTA(构造函数与初始化块)说明初始化块与构造函数的异同。并说明,初始化块与构造函数谁先执行?初始化块与静态初始化块有何不同,谁先执行?

答:1、当只有一个对象时,就执行一次初始化块和构造函数,但是如果有多个对象时执行顺序明显不同:先初始化块后构造函数。
2、区别:静态初始化块只执行一次,操作的内存在静态区而初始化块则需要每个对象构造时都需要执行一次,操作的内存在用户区,静态初始化块先执行。

3.代码分析: Math

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

`` 答: 因为``.Math``类中的成员变量和成员方法都是静态的,所以不需要创建 ``Math`` 对象。``

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

 答:.会出现 ``new Math() ``的错误  ``The constructor Math() is not visible ``,
    因为是由 ``private``构造函数,所以不能被外部调用,因此不能用new来产生新对象。

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

 答:1、需要用堆栈(栈)处分配一个存储空间保存引用时需要 ``new``来引用。    
         2、直接调用类的方法时不需要创建相应的对象就可以使用。

4. 重载Overload

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

答:重载:方法名相同但参数名不相同 构造函数重载:可以定义多个构造函数,但是参数类型不能相同。 区分:从方法的参数的数量、顺序以及它的类型来区分。

5. 代码阅读: final

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

  final int[] NUMBS= {1,2,3,4,5}; NUMBS[2] = 1;
  答:因为用关键字 ``final `` 修饰引用类型。但是变量所指向的对象的值是可以修改的,因此以上代码可以正常运行。

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

功能:判断今天如果是周一到周五,返回true,返回false。main函数中调用该函数,如果为true则输出“工作日+姓名学号”,否则输出"休息+姓名学号"。
截图:关键代码。
提示:使用LocalDateTime, DayOfWeek类
参考资料:
JAVA 8:健壮、易用的时间-日期API - ImportNew.pdf
Java8DateTimeTest.java ``

 import java.util.Kalendar;

 public class Test {

 static boolean is Monday To Friday() {

 Kalendar c = Kalendar.gewnstance();

 int date = c.get(Kalendar.data);

 if(date>=1&&5<=date){

 System.out.println("工作日+ 马玉兰 201621123009 ");

 return true;

 }

 else {

 Systsem.out.println("休息+ 马玉兰 201621123009 ");

 return false;}

}   

``

7. 封装

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

答:客观事物封装成抽象的类,对一些不可信的进行信息隐藏。 好处:可以重复调用类的属性 提高程序的安全性。

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

答:常见的有 `` public  `` 和 `` private  ``

8. 结对编程实践(未完成,0分)

找一个水平相近的同学完成1-2题实验题。开始编程前,可先对内容进行讨论。
写出体验报告,包括以下内容:1.对方姓名。2.所完成的题目。3.感想。4.照片(上次很多同学并未贴照片,请贴上)
1、队友:叶崇峻松       2、PTA 第一题7-1 jmu-Java-03面向对象基础-01-构造函数与toString
3、这道题是在实验课上在机房结对完成的。结对编程和个人单独编程感觉完全不一样。因为结对完成时,不同的两个人,完全不同的思路。

俊松基础比我好很多,通过这道题我向他请教了不少,他很耐心的指导我。第一题因为老师讲过,所以遇到的问题不算很大,一个人编程太枯燥
了,结对编程挺有趣的,即使遇到问题也可以鼓励和队友商量思考一起解决问题。如果是一个人编程遇到问题可能会选择放弃。

9. 选做:Runnable Jar

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

3. 码云及PTA

3.1. 码云代码提交记录

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

3.2 截图PTA题集完成情况图

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

3.3 统计本周完成的代码量!

posted @ 2017-09-27 19:27  网络1611马玉兰  阅读(382)  评论(0编辑  收藏  举报