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

    1. 本周学习总结

    1.1 写出你认为本周学习中比较重要的知识点关键词
    接口,interfaceimplements,方法签名,has-aComparableComparator
    1.2 尝试使用思维导图将这些关键词组织起来。注:思维导图一般不需要出现过多的字。

    1.3 可选:使用常规方法总结其他上课内容。

    2. 书面作业

    作业参考文件下载
    PTA题集:面向对象2-进阶-多态、接口与内部类

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

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

    作业提交结构如下:

    1.1 项目简介表格:

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

    团队成员表格

    学生 负责任务 博客地址
    高天 细节及Shop主类实现
    程会青 框架及User实现

    1.2 系统常用功能框架图

    提示:在XMind文本方框中,可通过按Shift+Enter将字竖起来。
    1.3 系统总体类图

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

    1.5 其他:跟上次的系统比较,系统的设计等有何修改。其他感想。
    答:
    这次又和搭档重新构思了一下大框架(见下图),系统里边考虑到每个用户都有属于自己的购物车,所以考虑把购物车放在了用户里边,除了图中的问题,还有就是有考虑把一个动态数组设置为用户的私有属性(没成功)

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

    2.1 Guess改造前代码很简单,而改造后的代码使用了抽象类、抽象方法,看起来更复杂,这样的改造到底有什么好处呢?
    答:
    改造前,程序代码运行、输入输出都在控制台实现;改造后,通过覆盖抽象方法来实现具体
    操作。这考虑的是抽象类具有不能实例化类的特点。

    2.2 GuessGame(改造后).java中有抽象方法与非抽象方法,你觉得抽象类中什么样的方法应该声明为abstract,什么方法不需要声明为abstract直接实现即可。
    答:
    不同类中包含的共同行为可以声明为abstract,之后在子类中按照不同需求来具体实现;相反,对于每个类中自己所特有的方法行为则不需要声明为abstract。

    2.3 重要:在这个例子中,变化的是什么,不变的是什么?尝试结合abstract等概念进行说明。
    答:
    例子中,不变的是所实现的功能;变化的是输入输出所实现的地方,2.1中提到,修改为抽象类后,通过方法重载来具体实现不同需求,不再仅仅在控制台上进行输入输出。

    3. Comparable与Comparator

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

    本题中,PersonSortable类继承了Comparable接口class PersonSortable implements Comparable<PersonSortable>,Comparable源代码和Arrays.sort中都有Comparable方法,在一个类中用重写来具体实现Comparable方法,才能被使用。即本题中在PersonSortable类中重写了Comparable方法。

    3.2 结合PTA 7-2 中你的代码说明,有了Comparable接口为什么还需要Comparator接口呢?
    答:
    题目要求是按照名字和年龄两个标准进行排序,而第一题只有一个排序标准;实现Comparable接口只能实现一个排序标准,而Comparator接口可以实现其多个排序标准。

    3.3 以前的作业Shape, Rectangle,Cirlce中,Shape类中什么方法应声明为abstract?说出原因。
    答:
    Sharp类中getPerimeter() getArea()两个方法应该声明为abstract,两个子类Rectangle,Cirlce中,都有getPerimeter() getArea()两个方法,但具体实现是不一样的;所以在父类中无法具体实现两个方法,所以应该声明为abstract。

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

    相对来说在Shape类(父类)类里实现接口较好。

    3.5 以3.4你编写的代码为例,简述面向Comparable接口编程、面向父类编程的好处。(注意:一定要结合自己编写的代码)
    答:
    Rectangle、Circle类都是继承Shape类,在Shape类中实现Comparable接口,那么在两个子类中自然就能实现Comparable接口,这样就可以实现同时对两个子类进行排序。

    4. 面向接口案例分析

    阅读Case-StudentDao.zip案例
    4.1 a.画出类关系图。b.StudentDao接口有什么用?
    a.

    b.
    StudentDao接口声明了三个方法:写入、读取、显示学生信息。

    4.2 StudenDaoListImpl与StudentDaoArrayImpl有何共同之处?有何区别?
    答:
    共同:实现了学生信息的存储功能;
    区别:StudenDaoListImpl用ArrayList来存储,StudentDaoArrayImpl用数组来存储。

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

    1.程序结构清晰,使用方便
    2.接口经过合理设计后,有利于程序设计的规范化,并可以并行开发,提高工作效率
    3.实现了程序的可插拔性,对于不同的需求切换不同的实现,降低了耦合度,随着系统复杂性的提高这个优势会越来越明显
    4.允许多重实现,弥补了继承的缺陷

    在Test.java中,可以调用不同的方法进行学生信息的存储,但又不用知道是如何实现的,简化了主函数。

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

    结合题目4案例中的Test.java的代码进行分析。不要百度原封不动照搬!
    答:

    在系统分析和架构中,分清层次和依赖关系,每个层次不是直接向其上层提供服务(即不是直接实例化在上层中),而是通过定义一组接口,仅向上层暴露其接口功能,上层对于下层仅仅是接口依赖,而不依赖具体类。
    面向接口编程详解

    参考上边材料,面向接口就是让类来实例化接口:接口只是告诉我们有这样一个方法名字,方法的具体实现则不在其中,对这些方法的具体实现过程就是面向接口编程。

    好处见上题。

    3.码云及PTA

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

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

    3.2 截图PTA题集完成情况图
    需要有两张图(1. 排名图。2.PTA提交列表图)

    3.3 统计本周完成的代码量
    需要将每周的代码统计情况融合到一张表中。

    周次 总代码量 新增代码量 总文件数 新增文件数
    1 0 0 0 0
    2 0 0 0 0
    3 619 619 12 12
    4 619 0 12 0
    5 970 351 17 5
    6 1118 148 25 8
  • 相关阅读:
    Android游戏开发22:Android动画的实现J2me游戏类库用于Android开发
    android sqlite SQLiteDatabase 操作大全 不看后悔!必收藏!看后精通SQLITE (第三部分,完整代码)
    使用OGR创建dxf格式矢量数据
    mysql 数据库引擎 MyISAM InnoDB 大比拼 区别
    android sqlite SQLiteDatabase 操作大全 不看后悔!必收藏!看后精通SQLITE (第二部分)
    mysql 更改数据库引擎
    android sqlite SQLiteDatabase 操作大全 不看后悔!必收藏!看后精通SQLITE (第一部分)
    android 数字键盘使用
    MySQL Innodb数据库性能实践
    eclipse : Error while performing database login with the driver null
  • 原文地址:https://www.cnblogs.com/chqing/p/7691146.html
Copyright © 2011-2022 走看看