week05-继承、多态、抽象类与接口

1. 本周学习总结

1.1 写出你认为本周学习中比较重要的知识点关键词

答:继承 、 接口、 抽象类 、 多态 、 Comparable接口 、 Comparator接口 、 interface关键字 、 has-a

1.2 尝试使用思维导图将这些关键词组织起来。注:思维导图一般不需要出现过多的字。

2. 书面作业

作业参考文件下载

PTA题集:面向对象2-进阶-多态、接口与内部类

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

内容:继续完善上次的大作业。
注意: 再过几次课要讲Java图形界面编程,到时候要将该系统升级为图形界面。系统的业务逻辑部分应该变化不大,变化较大的地方的是输入与输出部分。编码的时候,请不要将处理输入(System.in)与输出(System.out)的代码与某个业务处理方法绑死

作业提交结构如下:

1.1 项目简介表格:

项目码云地址(点击后要求可直接跳到该项目首页)。

团队成员表格

学生 负责任务 博客地址
叶崇峻松 ShoppingCart类,主函数 https://www.cnblogs.com/jerkol/
马玉兰 Goods抽象类,Boolr类,user类 http://www.cnblogs.com/288myl/

1.2 系统常用功能框架图

http://images2017.cnblogs.com/blog/618198/201710/618198-20171016143823459-913171426.png

1.4 购物车、商品、系统关键代码截图(主要截取自己负责的部分)




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

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

 ``  答:因为改造前并没有使用抽象类,所以只能控制台输出。但是改造后使用抽象类,可以在控制台,也可以使用对话框图形界面等方法输入。 ``

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

`` 答:抽象类:声明方法的存在而不去实现它的类,用于创建一个体现某些行为的类,并为该类声明方法。可以创建一个类型为抽象类的变量,并让它指向具体子类的一个实例。    final 类的方法不需要声明为“abstract”,因为 final 类不能有子类 ``

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

答:变化的是对抽象类Guess Game中声明的方法的实现方式,不变的是声明的方法。

3. Comparable与Comparator

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

答:因为让类实现Comparable接口,并覆盖compare To方法就可以实现对象的自动排序。

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

答:因为Comparator是比较接口,我们如果需要控制某个类的次序,而该类本身不支持排序(即没有实现Comparable接口);那么,我们可以建立一个“该类的比较器”来进行排序。这个“比较器”只需要实现>Comparator接口即可。 我们可以通过“实现Comparator类来进行新建一个比较器”,然后通过该比较器对类进行排序。

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

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

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

答:Comparable接口是一个可比较对象的接口,compareTo是其中唯一的方法,使用者根据需要实现此接口,如果两者相等,返回0; 如果参数大于当前实例,返回1,否则返回-1。 面向父类编程的好处:把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化

4. 面向接口案例分析

阅读Case-StudentDao.zip案例

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

答:StudentDaoArraylmpl类和StudenDaoListlmpl类实现了StudentDao接口。 并且,StudenDaoListImpl类是用列表来存放学生信息,具体实现接口的三个抽象方法。用ArrayList的具体方法来完成相应操作

4.2 StudenDaoListImplStudentDaoArrayImpl 有何共同之处?有何区别?

答:StudenDaoListImp建立的是 List 列表,而StudentDaoArrayImpl 建立的是 Student[ ] 数组。共同点:都是StudenDao接口,但各自实现方法不同。

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

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

答: 面向接口编程:指在面向对象的系统中所以的类或者模块之间的交互是由接口完成的。 面向接口编程的好处:1、更加抽象、更加面向对象 2、提高编程的灵活性 3、提高可维护性

3.码云及PTA

题目集:面向对象2-进阶-多态接口内部类

3.1. 码云代码提交记录

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


3.2 截图PTA题集完成情况图

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

本周代码统计:

posted @ 2017-10-18 21:17  网络1611马玉兰  阅读(291)  评论(0编辑  收藏  举报