zoukankan      html  css  js  c++  java
  • 201621123033 《Java程序设计》第5周学习总结

    1. 本周学习总结

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

    接口 Comparable Comparator

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

    2. 书面作业

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

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

    作业提交结构如下:

    1.1 项目简介表格:

    项目码云地址
    团队成员表格

    学生 负责任务 博客地址
    秦玉 商品类和购物车类的实现以及主函数的搭建 秦玉的博客链接
    姚雯婷 商品类和商品类的实现以及主函数的搭建 姚雯婷的博客连接
    黄秋菊 菜单类以及主函数的美化 黄秋菊的博客链接

    1.2 系统常用功能框架图

    1.3 系统总体类图

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

    测试数据:

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

    和上次系统作比较,这次改为用ArrayList来写,使得实现商品的添加、删除更为方便,还增加了清空购物车的功能,同时也优化了界面和主函数。下次打算增加选择购买商品的功能。

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

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

    使用抽象类、抽象方法,虽然看起来更复杂,但是却使代码更为灵活,可以通过改变相关方法达到在不同环境中输入输出的目的。

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

    抽象类中需要后期修改、复用的方法应该声明为abstract,而不需要修改、复用的方法就直接编写好。

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

    变化的是输入输出的方法,从具体的实现方式变为抽象方法public abstract void print(String text)等;不变的是整个程序的实现方式。

    3. Comparable与Comparator

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

    接口的定义类似于抽象类,Comparable接口中只有public int compareTo(T o)一个方法,一个类实现Camparable接口后通过重写public int compareTo(T o)方法达到排序的目的。

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

    如果只使用Comparable接口的话只能进行一种排序,而题目要求进行Name和Age两种排序,所以需要比较器Comparator来实现多种排序。

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

    因为我们计算不同图形的周长和面积时,计算的方式不同,所以无法确定方法的具体步骤,定义成抽象类,再根据不同的形状实现具体的方法。

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

    在Shape类上实现Comparable接口会比较好,因为Shape类是父类,后面的各种子类都继承自父类,所以在父类上使用Comparable接口能够对多种形状的面积进行排序。

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

    面向父类编程,可以对多种形状进行周长和面积的计算,且代码简洁不冗余,而面向Comparable接口编程,我们只需要根据实际情况重写其中的方法即可达到比较的目的。
    3.4的代码结合了这两者,通过使父类Shape类实现Comparable接口使得能对两种不同的形状的面积进行比较。

    4. 面向接口案例分析

    阅读Case-StudentDao.zip案例

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

    StudentDao接口定义了三种方法:writeStudent() 写入学生信息,readStudent() 读取学生信息,diplayAllStudent() 展示学生信息。这三种方法是不同存储方式所共有的。

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

    两者都实现了StudentDao接口,但StudenDaoListImpl是用ArrayList来存储学生信息的,而StudentDaoArrayImpl是用数组来存储的。

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

    StudenDaoListImplStudentDaoArrayImpl都实现了StudentDao接口,所以在main函数中创建不同的对象,都能实现其共有方法。
    此例中无论是哪种存储方式都能实现同样的功能,面向接口编程将共有方法放入同一个接口中,然后根据类的不同来执行具体的方法,这样更灵活、更有针对性。

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

    结合题目4案例中的Test.java的代码进行分析。不要百度原封不动照搬!
    案例中Test.java无论是ArrayList存储还是数组存储都能实现同样的功能。所以接口就是像是一个定好的框架,通过这个框架去扩展去执行。
    面向接口编程的好处:

    • 更具灵活性。像Shape那题,通过接口实现对不同形状的面积排序
    • 更加标准统一。接口把方法和类封装的更彻底,就像制定一个统一的标准,即使多人合作也不会影响系统架构。

    3.码云及PTA

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

    3.1. 码云代码提交记录

    3.2 截图PTA题集完成情况图

    3.3 统计本周完成的代码量

    周次 总代码量 新增代码量 总文件数 新增文件数
    3 547 547 12 12
    5 971 424 20 8
    6 1577 606 29 9
  • 相关阅读:
    Html禁止粘贴 复制 剪切
    表单标签
    自构BeanHandler(用BeansUtils)
    spring配置中引入properties
    How Subcontracting Cockpit ME2ON creates SD delivery?
    cascadia code一款很好看的微软字体
    How condition value calculated in sap
    Code in SAP query
    SO Pricing not updated for partial billing items
    Javascript learning
  • 原文地址:https://www.cnblogs.com/holmec/p/7705209.html
Copyright © 2011-2022 走看看