201521123077 《Java程序设计》第5周学习总结
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,能否编译通过?提示什么错误?分析原因。
也不能编译通过
- 因为Parent为默认的包访问权限 即只有在同一个包内才可以访问这个类
System.out.println(p.j);
这里也不能访问jSystem.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周学习总结的更多相关文章
- 20145213《Java程序设计》第九周学习总结
20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...
- 20145213《Java程序设计》第二周学习总结
20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...
- 20145213《Java程序设计》第一周学习总结
20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...
- 21045308刘昊阳 《Java程序设计》第九周学习总结
21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...
- 20145330孙文馨 《Java程序设计》第一周学习总结
20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...
- 20145337 《Java程序设计》第九周学习总结
20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...
- 20145337 《Java程序设计》第二周学习总结
20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...
- 20145218《Java程序设计》第一周学习总结
20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...
- 《Java程序设计》第九周学习总结
20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...
- 《Java程序设计》第二周学习总结
20145224陈颢文<Java程序设计>第二周学习总结 教材学习内容总结 一.类型.变量与运算符 1.类型 整数: 可细分为为short整数(占2字节),int整数(占4字节),long ...
随机推荐
- react入门之使用react-bootstrap当轮子造车(二)
react入门之使用react-bootstrap当轮子造车(二) 上一篇我们谈了谈如何配置react的webpack环境 react入门之搭配环境(一) 可能很多人已经打开过官方文档学习了react ...
- k-means算法概述
算法过程: 随机选取K个种子点 求所有点到种子点的距离,将点纳入距离最近的种子点群 所有点均被纳入群内后,将种子点移动到种子群中心 重复上述2.3过程,直至种子点没有移动 优缺点: 优点:容易实现 缺 ...
- python3 接口测试 一般方法
第一步: 导入相关包 import http.client 第二步: 将ip和端口号,使用如下命令,赋值给变量. conn = http.client.HTTPConnection("124 ...
- SpringMVC注解@RequestMapping之produces属性导致的406错误
废话不多说,各位,直接看图说话,敢吗?这个问题网上解决的办法写的狠是粗糙,甚至说这次我干掉它完全是靠巧合,但是也不否认网上针对406错误给出的解决方式,可能是多种情况下出现的406吧?我这次的流程就是 ...
- MySQL用户管理:添加用户、授权、删除用户
文章首发于[博客园-陈树义],请尊重原创保留原文链接. 添加用户 以root用户登录数据库,运行以下命令: create user zhangsan identified by 'zhangsan'; ...
- html&css笔记(1)
本文是在阅读<head first html and css>时记下的一些需要注意的地方. 第3章 浏览器不会显示html文本中的空白符和换行. 标签的属性用来定义一个元素.p53 hre ...
- 获取token之后,再调用匿名方法
js获取token bpm.api.beginDownload = function (filePath, fileName) { var url = "/Home/GetToken&quo ...
- 谈谈培训机构的"骗局"给新人一些建议
前言 本文只谈"骗局",不谈其他,绝不引战,如有错误,希望指出我会及时改正,想要讨论的可以在留言区写下你的观点和经历. 为什么要写这篇文章呢,近些年培训这个话题也比较火,很多在看这 ...
- 8.23.1 IO-输入输出流概念
输入输出流概念: 字节流相关的UML继承结构图: 字符流相关的UML继承结构图:
- IP地址 子网掩码 默认网关 DNS(转)
突然被问到IP地址方面的知识,吓得我赶紧上网找一找资料,觉得这篇还是写得简单易懂,share一下. Key: 1.IP地址=网络地址+主机地址,(又称:主机号和网络号组成): 2.将IP地址和子网掩码 ...