一.本周学习总结

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

    接口、interface、comparable、comparator

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

二.书面作业

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

  • 1.1 项目简介表格:
学生 负责项目 博客地址
张苏涛 Main、ShoppingCart类 我的博客
吴福强 用户注册、登录 吴福强的博客
林志伟 Goods类 林志伟的博客

git在这儿

  • 1.2 系统常用功能框架图

  • 1.3 系统总体类图

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

  • 1.5 其他:跟上次的系统比较,系统的设计等有何修改。其他感想。

    上次其实比较懵,不知道怎么去设计,这次分了User类来定义用户的属性、Goods类来定义商品的属性、购物车类来实现各种方法,没有了之前在购物车里定义属性的错误,但是时间不太够,只能实现简单的功能,其他功能之后再完善。

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

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

    改造前,代码的输入输出是与控制台绑定的,如果以后不是在控制台运行,那么修改的代码量就非常大了,改造后,运用了抽象类,无论以后怎么输出都很方便修改。

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

    当一个方法不确定如何具体实现时,可将其声明为abstract以方便以后继承和更改。

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

    变化的是运行的地方(控制台或者其他地方),不变的是游戏的执行过程;因为运行地点不确定,所以声明为abstract,而执行过程是不变的,所以不必为抽象方法。

3. Comparable与Comparator

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

    因为类只要实现了Comparable接口,就一定含有compareTo方法,比较的时候就可以调用。

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

    Comparable的比较方法比较固定,如果要进行多种方式的比较,就必须用到Comparator

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

    Shape类中的getPerimeter()和getArea()应被声明为abstract,因为不同图形的周长和面积的计算实现方法不同。

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

      abstract class Shape implements Comparable<Shape>
    {
    final double PI=3.14; abstract double getPerimeter() ; abstract double getArea() ; public int compareTo(Shape o)
    {
    return (int)(getArea()-o.getArea());
    }
    }

    在Shape类上实现Comparable接口比较好,因为这样其他继承Shape类的都可直接用这个方法。

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

    面向Comparable接口编程、面向父类编程简化了代码,直接在父类中定义方法,子类都可使用(例如代码中的compareTo方法在父类中,子类都可使用);还加强了代码的可变性,如果要改变比较对象,直接修改父类方法即可,无需子类一个一个去修改。

4. 面向接口案例分析

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

    • 定义了三个抽象方法,方便继承他的两个类去定义实现的具体方法。
  • 4.2 StudenDaoListImplStudentDaoArrayImpl有何共同之处?有何区别?

    • 共同:都继承了StudentDao接口
    • 区别:StudenDaoListImpl使用的是动态数组,而StudentDaoArrayImpl使用的是数组。
  • 4.3 结合Test.java中的main函数,简述面向接口编程的好处。

    面向接口编程的好处在于让代码更简洁统一。像上面代码中,在StudentDao接口中定义抽象方法,可到各自的类中去定义具体实现方法。

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

  • 结合题目4案例中的Test.java的代码进行分析。

    面向接口的编程是指定义接口,让继承自他的类使用接口中的抽象方法再去进行各自具体的实现。大体相同但细节不同,使得代码更简洁统一也便于修改。

三.码云及PTA

  • 3.1. 码云代码提交记录

  • 3.2 截图PTA题集完成情况图

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

周次 总代码量 新增代码量 总文件数 新增文件数
1 193 193 6 6
2 625 432 35 29
3 1076 451 41 6
4 1472 396 47 6
5 1932 460 53 6

最新文章

  1. [从产品角度学EXCEL 02]-EXCEL里的树形结构
  2. C++初始化列表
  3. 【转】关于启用 HTTPS 的一些经验分享
  4. C#并行编程-并发集合
  5. 2006Jam的计数法
  6. 对访问修饰关键字public, protected, internal and private的说明
  7. SVN服务器搭建和使用(一)(转载)
  8. nagios监控linux主机监控内存脚本
  9. POI导入
  10. svn教程
  11. 《通过脚本查看哪些ip被占用》shell笔记
  12. VJP1456 最小总代价(状压)
  13. 201521123034《Java程序设计》第十周学习总结
  14. 【数据库】MySql分割字符串
  15. Zookeeper节点增删改查与集群搭建(笔记)
  16. tomcat8常用配置说明
  17. laravel 路由缓存
  18. PostgreSQL之连接数修改
  19. 【Linux】Cent OS 虚拟机开机自启动配置
  20. 最常出现的字符串 Most Common Word

热门文章

  1. maven仓库的作用以及仓库的分类
  2. CSS3 @keyframes 规则以及animation介绍和各种动画样式说明
  3. 证书吊销列表(CRL)介绍
  4. How to Install and Configure Bind 9 (DNS Server) on Ubuntu / Debian System
  5. Debian 使用 cron 执行定时任务
  6. [Selenium]对弹出的Alert窗口进行操作
  7. 数据分页c#
  8. shift + 空格 快捷键 使输入法 在全角和半角直接切换。。 但是全角输入一个 空格 ,会造成jsp页面 无法正常解析。。比如 无法获得参数。。
  9. org.apache.hadoop.ipc.RemoteException: java.io.IOException:XXXXXXXXXXX could only be replicated to 0 nodes, instead of 1
  10. Reverse string using recursion