201621123041java程序设计第五周学习总结

1. 本周学习总结

2. 书面作业

项目码云地址

1. 面向对象设计大作业(团队项目,2-3人)





1.1 项目简介表格:

学生 负责任务 博客地址
林裕恒 注册类编写 博客地址
罗志凯 用户类编写 博客地址

1.2 系统常用功能框架图

2. abstract:阅读GuessGame抽象类的设计与使用源代码

2.1 Guess改造前代码很简单,而改造后的代码使用了抽象类、抽象方法,看起来更复杂,这样的改造到底有什么好处呢?

  • 改造前的Guess未使用抽象类,只能由控制台输出;改造后的Guess使用了抽象类既可以在控制台输入,也可以在对话框输入。好处就是,我们可以不去实现类,只需要声明方法,用于指向一个实例;同时使用抽象类更加方便和稳定,不需要专门去为一个环境写一个相适应的代码,也不许重复声明一些具有相似特点的类,大大的简化了代码。

2.2 GuessGame(改造后).java中有抽象方法与非抽象方法,你觉得抽象类中什么样的方法应该声明为abstract,什么方法不需要声明为abstract直接实现即可。

  • 类中拥有共同行为的,可以将其声明为abstract,但是比如在圆形和矩形的类中,面积和周长都有其不同的计算方式,此时就要定义抽象类,这时候就不需要声明为abstract直接实现。

2.3 重要:在这个例子中,变化的是什么,不变的是什么?尝试结合abstract等概念进行说明。

  • 输入的输出的数据时变化的,但是猜数字的方法是不变的即逻辑不变,声明的方式改变了,但是其中的方法是不变的。这个例子中的抽象类是不能直接使用的,要选择一个类或者环境去实现abstract。

3. Comparable与Comparator

3.1 结合PTA 7-1中你的代码说明,为什么某个类实现了Comparable接口,就可以直接使用Arrays.sort对该类型的数组进行排序?

  • Comparable接口可以告诉计算机你所想要的排序规则,然后通过Arrays.sort进行排序。

  • Arrays类有一个静态方法sort,利用这个方法我们可以传入我们要排序的数组进去排序,因为我们传入的是一个数组的引用,所以排序完成的 结果也通过这个引用的来更改数组.对于整数、字符串排序,jdk提供了默认的实现,如果要对一个对象数组排序,则要自己实现 java.util.Comparator接口。

-引用自Java数组排序Arrays.sort,以及Comparator接口的用法

3.2 结合PTA 7-2 中你的代码说明,有了Comparable接口为什么还需要Comparator接口呢?

  • 如果只是单独的只对姓名或数字排序,那么Comparable接口久已经足够,但是如果对多个条件排序,多个对象进行比较,这时候Comparable接口已经不能满足我们的需求,就需要使用Comparator接口。

3.3 以前的作业Shape, Rectangle,Cirlce中,Shape类中什么方法应声明为abstract?说出原因。

  • 例如计算圆和矩形的周长面积,因为圆和矩形的面积周长计算方法不同,所以应声明为abstract。

  • 用abstract修饰的方法表示抽象方法,抽象方法没有方法体。抽象方法用来描述系统具有什么功能,但不提供具体的实现。 引用自Java中的abstract方法和abstract类的问题

3.4 有很多Shape类型对象如Rectangle、Circle。希望使用Arrays.sort对他们进行排序,请写出相应代码。并简述应在哪个类上实现Comparable接口比较好?

  • 在Circle类上实现Comparable接口比较好,在Circle类上实现Comparable接口可以在比较周长的前提下实现面积的比较。

3.5 以3.4你编写的代码为例,简述面向Comparable接口编程、面向父类编程的好处。(注意:一定要结合自己编写的代码)

  • Comparable接口编程、面向父类编程可以简化我们的代码,它能给我们提供一个比较方法,不需要我们自己再去一个一个的定义新的方法去比较,例如,在PTA形状继承中,我们需要比较圆形和矩形,此时我们只要使用Comparable接口就可以实现两个类的比较。

4. 面向接口案例分析

4.1 a.画出类关系图。b.StudentDao接口有什么用?

  • b.StudentDao接口定义了三种方法:1.输出学生信息;2.读取学生信息;3.输入学生信息

4.2 StudenDaoListImpl与StudentDaoArrayImpl有何共同之处?有何区别?

  • 两者都是用来储存学生信息。StudenDaoListImpl使用ArrayList存储学生信息,而StudentDaoArrayImpl是使用数组存储学生信息。

4.3 结合Test.java中的main函数,简述面向接口编程的好处。

  • 接口隐藏了实际功能,但给用户提供统一的操作界面和使用方式。在这题的代码中sdm.diplayAllStudent();接口就是这样,我们不用去了解它是如何运行的,只要调用他实现功能就可以了。面向接口编程大大的简化了代码,子类只能继承一个父类
    却可以继承多个接口,功能区分清晰,改起来方便。

5. 什么是面向接口编程?面向接口编程的好处是什么?

  • 面向接口编程指的是系统每部分的实现和实现之间,通过interface所确定的协议来共同工作。不同类之间的通信,各模块之间的联通,在系统设计都是要考虑的,这也是系统设计的最主要工作内容。面向接口编程就是指按照这种思想来编程。在这题的代码中sdm.diplayAllStudent();接口就是这样,我们不用去了解它是如何运行的,只要调用他实现功能就可以了。面向接口编程大大的简化了代码,子类只能继承一个父类却可以继承多个接口,功能区分清晰,改起来方便。

3.码云及PTA

3.1. 码云代码提交记录

3.2 截图PTA题集完成情况图

3.3 统计本周完成的代码量

  • |周次|总代码量|新增代码量|总文件数|新增文件数|
    |-😐-😐-😐-😐-😐
    |5|221|221|4|4|
    |6|487|226|10|6|
posted @ 2017-10-21 19:44  网络1612林裕恒  阅读(264)  评论(1编辑  收藏  举报