1. 本周学习总结

1.1 尝试使用思维导图总结有关多态与接口的知识点。

举个小栗子:



右侧的四个类都实现了同一个接口,所以可以让游戏类的引用指向实现类的实例,根据不同类型的实现类可以表现出不同的特性,所以他们表现出了多态性

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

  • Comparable Comparator 接口的使用
  • 抽象类的使用

2. 书面作业

Q1. 代码阅读:Child压缩包内源代码

1.1 com.parent包中Child.java文件能否编译通过?哪句会出现错误?试改正该错误。并分析输出结果。

不能编译通过
public void getParenti(){
System.out.println(i);
}
中间输出i这里会报错,因为父类Parent的i是private访问权限的,子类也不可访问。
调用继承自父类的geti()方法即可。

1.2 另外一个包中的OutOfParentPackage.java,能否编译通过?提示什么错误?分析原因。

也不能编译通过

  1. 因为Parent为默认的包访问权限 即只有在同一个包内才可以访问这个类
  2. System.out.println(p.j);这里也不能访问j
  3. System.out.println(p.geti());这里的geti()也不能访问

    2.3点的错误都是因为这两个方法/属性是protected访问权限的,该权限允许子类及同一包内访问,不允许其他包访问

1.3 回答:如果为了访问到protected修饰的属性或方法应该怎么办?

将该类放到同一包内或是继承该类

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

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

将游戏中的方法设定为抽象方法,使其不与某个特定的函数绑定,使用的时候只要对应的重写该抽象方法即可,便于在转移至另一个平台的时候修改

2.2 如果想将该游戏改造成图形界面,应该进行一些什么操作?

重写 1.print 2. println 3.nextInt方法

例如nextInt方法就可以 :

用swing做一个数字键盘,通过点击对应的数字时获取不同的数字传入go()函数内 。

2.3 结合该例子,你觉得什么时候应该使用abstract?

当某个类/方法只是作为一个模板的作用时就可以把它设为abstract,具体实现的时候再把抽象变为具体就好

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

变化的是游戏中人机交互的输入输出,不变的是猜数字这个游戏的游戏逻辑

所以我们将变化的部分设为abstract,在使用的时候写一个新类继承自这个抽象类,并实现它的抽象方法

程序编写的时候将变化与不变的部分分离开可以有效的减少未来需要修改时候的成本

Q3.Comparable与Comparator

3.1 描述Comparable接口的用途。为什么某个类实现了Comparable接口就可以直接使用Arrays.sort对其进行排序?

使实现它的类具有可排序的性质

因为类实现了Comparable接口之后,并重写了它的compareTo方法后,Arrays.sort排序的时候就可以通过调用compareTo方法确定用户类的两个对象之间的顺序

3.2 有了Comparable接口为什么还需要Comparator接口呢?

Comparable使实现它的类具有了可排序的性质,但是该类的排序规则在类编写完毕后就是确定的了

而Comparator的使用就比较灵活了,实现这个接口的类完全可以不要任何其他的方法属性,仅仅作为一种“比较器”作为排序方法的参数来使用,利用这个方法我们可以在不修改某个类的情况下对它进行不同规则的排序

3.3 可选:使用匿名内部类、Lambda表达式实现PTA编程5-2。

匿名内部类:

Lambda表达式环境不支持还没有尝试

Q4面向接口案例分析

阅读Case-StudentDao.zip案例

4.1 画出类关系图,描述每个类与接口的作用。

4.2 StudenDaoListImpl与StudentDaoArrayImpl有何区别?

二者都是对同一个接口的实现

储存数据的形式不同,前者用arraylist保存,后者直接用数组保存

然后具体的写/读数据方式都不一样,根据具体的保存方法具体定制,例如list就只要调用add方法就可以添加,数组则需要通过遍历找到第一个未被赋值的位置并赋值

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

结合题目3与4中的Test.java的代码讨论分析。不要百度原封不动照搬!

编程的时候先写好接口,然后根据这些接口来编程,项目的各个独立的部分依靠接口来对接,相当于设定了一个各部分共同遵守的规则来保证程序各部分能够正常的组合在一起

如第三题中sort方法负责根据Comparable接口确定排序规则,而用户类遵守Comparable接口规则来实现具体的比较关系

第四题中也是如此用户只需要知道StudentDao接口中的方法可以写/读数据,而不依赖具体怎么做到的

面向接口编程使程序有更高的灵活性,修改成本也变得更低

第6题提交作业的结构:*

  • 6.1
学生A孙慧君201521123098 学生B孙志威201521123077 项目地址
http://www.cnblogs.com/niverse745 / https://home.cnblogs.com/u/agts https://git.oschina.net/agts/Online_shopping.git
  • 6.2 常用功能描述框架图

  • 6.3 关键代码

    • 主要框架:

    • 购物车添加:

    • 购物车删除:

    • 查找商品/商家:

    • 保存商品到购物车:

    • 商品排序方法:

    • 商品查找:

  • 6.4 运行界面

主界面:

登录:



菜单:



添加删除:



排序:



筛选:

注册: (生成用户数据文件) (为了展示将所有用户列出)

防止暴力破解(冷却时间):

Q2面向对象设计(大作业)

3. PTA实验总结及码云上代码提交记录

3.1本周PTA截图

3.2 实验总结

4.1 将具体行为写在actionListener的actionPerformed方法里,
但是自己定义的Scanner sc会遇到无法在内部类中使用的问题,遵循建议将其设为final就行了 5.1 重写compareTo方法即可 5.2 重写compare方法即可 5.3 stack.pop的时候只要将“指针”往栈底移动就好,没必要将要pop的那一位数据清零,然后注意做好判断不要越界就好

201521123077 《Java程序设计》第5周学习总结的更多相关文章

  1. 20145213《Java程序设计》第九周学习总结

    20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...

  2. 20145213《Java程序设计》第二周学习总结

    20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...

  3. 20145213《Java程序设计》第一周学习总结

    20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...

  4. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

  5. 20145330孙文馨 《Java程序设计》第一周学习总结

    20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...

  6. 20145337 《Java程序设计》第九周学习总结

    20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...

  7. 20145337 《Java程序设计》第二周学习总结

    20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...

  8. 20145218《Java程序设计》第一周学习总结

    20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...

  9. 《Java程序设计》第九周学习总结

    20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...

  10. 《Java程序设计》第二周学习总结

    20145224陈颢文<Java程序设计>第二周学习总结 教材学习内容总结 一.类型.变量与运算符 1.类型 整数: 可细分为为short整数(占2字节),int整数(占4字节),long ...

随机推荐

  1. Session获取不到的情况及解决办法(源码解析)

    本博客是自己在学习和工作途中的积累与总结,仅供自己参考,也欢迎大家转载,转载时请注明出处,请尊重他人努力成果,谢谢. 1. 当有连个sessionFactory时,容易产生获取不到session的情况 ...

  2. CSS格式与布局中三种位置的理解与应用

    第一种位置关系:position:fixed  锁定位置(相对于整个浏览器的位置),常用在各大网站的右下角或其它位置的小广告. 如果需要调整锁定位置,需要使用如下方式:<div style=&q ...

  3. 解决:wordpress error establishing a database connection problem

    我是个网站菜鸟,刚开始搭建LAMP环境的时候,就要了我半条老命. 没办法,懂的东西太少,LAMP是什么我都不懂,域名是什么,我也被不懂,为什么想要有个网站就要有服务器我还是不懂.一步步地自己去钻,去看 ...

  4. Velocity.js的使用

    前面的话 Velocity是一款优秀的JS动画库,完全可以作为jQuery的animate的替代品.需要动画功能时,使用Velocity是一个好选择.本文将详细介绍Velocity.js的使用 概述 ...

  5. 接口测试之soapUI(WebService)

    一.WebService介绍   WebService是一种跨编程语言和跨操作系统平台的远程调用技术,XML+XSD,SOAP和WSDL就是构成WebService平台的三大技术.   1)XML+X ...

  6. 关于批量插入数据之我见(100万级别的数据,mysql) (转)

    因前段时间去面试,问到如何高效向数据库插入10万条记录,之前没处理过类似问题,也没看过相关资料,结果没答上来,今天就查了些资料,总结出三种方法: 测试数据库为MySQL!!! 方法一: public  ...

  7. 博文Contents<451--到999—>

    积分=排名>2017-05-15这一天还真是厉害了.让我等了5个月时间... 前言:博客中的随笔文章.并非都是笔者的原创文章.有些是听别人说的.有些是书上摘录的.有些是百度的.有些是别人博客的文 ...

  8. 聊聊GIS中那些坐标系

    从第一次上地图学的课开始,对GIS最基本的地图坐标系统就很迷.也难怪,我那时候并不是GIS专业的学生,仅仅是一门开卷考试的专业选修课,就没怎么在意. 等我真正接触到了各种空间数据产品,我才知道万里长征 ...

  9. 《Java从入门到放弃》JavaSE篇:综合练习——单身狗租赁系统(数组版)

    因为现在只学习了基本语法,所以在综合练习之前,先补充关于方法概念. 方法的作用:把一系列的代码放在一起,然后再取个别名.之后通过这个别名的调用,就相当于执行了这一系列的代码. 方法的语法:([]中的内 ...

  10. 剑指Offer第36题—Java版

    本题使用归并排序的思想,结合归并排序,写出的算法解. //数组中的逆序对 public static int InversePairs(int[] array){ if(array==null||ar ...