201521123117 《Java程序设计》第5周学习总结
1. 本周学习总结
1.1 尝试使用思维导图总结有关多态与接口的知识点

2. 书面作业
Q1代码阅读:Child压缩包内源代码
1.com.parent包中Child.java文件能否编译通过?哪句会出现错误?试改正该错误。并分析输出结果。
答:不能编译通过,句子 System.out.println(i)会出错。如要改正则将父类的private int i=1改成protected int i=1即可执行
输出结果如下:
1
2
2
1
1
2
1
2.另外一个包中的OutOfParentPackage.java,能否编译通过?提示什么错误?分析原因。
答:不能编译通过,提示The type Parent is not visible和The public type OutOfParentPackage must be defined in its own file,因为Parent类前面没有任何访问指定词,所以默认是包访问权限,而这个OutOfParentPackage又在Parent包之外,所以就访问不到了
3.回答:如果为了访问到protected修饰的属性或方法应该怎么办?
答:在相同的包中,protected修饰的属性或方法可以由相同的包中的类直接存取;在不同的包中,protected修饰的属性或方法可以在继承或间接继承于其所属的类的子类中访问。
Q2abstract进阶:阅读GuessGame抽象类的设计与使用源代码
1.Guess改造前代码很简单,而改造后的代码使用了抽象类、抽象方法看起来很复杂,那这样的改造到底有什么好处呢?
答:使用了抽象类、抽象方法后,代码显得更有弹性,添加的java.util.Scanner类,用于扫描输入文本的实用程序。改造后抽象类、抽象方法可以自己进行编写,输出与输入就不局限于扫描输入输出文本。
2.如果想将该游戏改造成图形界面,应该进行一些什么操作?
答:建立容器-建立组建-将组建添加到容器当中-设置布局 (PS:来自百度),设计的图形界面放在主函数中调用。
3.结合该例子,你觉得什么时候应该使用abstract?
答:对类或方法的具体实现还不够确定时,将其抽象化,再根据实际情况进行编写使得代码更具弹性。
4.重要:在这个例子中,变化的是什么,不变的是什么?尝试结合abstract、继承等概念进行说明。
答:在这个例子中,变化的是代码所处的环境,不变的是代码实现的功能即完成猜数游戏这个整体架构。abstract为抽象,抽象类或抽象方法增强了代码的弹性,方便以后根据代码的外界环境进行编写。未被继承的抽象类是没有意义的,只有实现了抽象类并应用,抽象类才有存在的意义。
Q3Comparable与Comparator
1.描述Comparable接口的用途。为什么某个类实现了Comparable接口就可以直接使用Arrays.sort对其进行排序?
答:Comparable接口强行对实现它的每个类的对象进行了整体排序。在类中实现Comparable接口后(Comparable接口有public int compareTo(T o);方法可以比较此对象与指定对象的顺序。如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。)再来看一下Arrays.sort的原型:public static <T extends Comparable<? super T>> void sort(List
2. 有了Comparable接口为什么还需要Comparator接口呢?
答:因为只能在类中实现compareTo()一次,不可能说经常来修改类的代码实现自己想要的排序,因此如果要以不同于compareTo()方法中指定的顺序排序我们的类对象,此时就可以用到Comparator接口。
Q4面向接口案例分析:阅读Case-StudentDao.zip案例
1.画出类关系图,描述每个类与接口的作用。
答:
其中:
(1)StudentDao接口:声明public Student readStudent,public boolean writeStudent和public void diplayAllStudent()三个抽象方法。即写入学生数据、读取学生数据和显示所有学生信息。
(2)StudentDaoArrayImpl类:public StudentDaoArrayImpl设置一个长度为size的students数组;public Student readStudent输入一个名字,若students数组中有学生的name与输入的名字相等,则返回该学生,否则返回null;public boolean writeStudent输入一个学生,若数组中有空位(null),则把此学生加入students数组,并返回true,否则返回false;public void diplayAllStudent()输出全部的学生。
(3)Studen类:用来创建对象,属性为学生的名字,创建对象的名字并覆盖toString方法。方法有:getName()、setName()、toString()和构造函数。
(4)StudenDaoListImpl类:设置一个以Student对象的ArrayList,并命名List;public Student readStudent输入一个名字,若List中有学生的name与输入的名字相等,则返回该学生,否则返回null;public boolean writeStudent输入一个学生,加入List,并返回true;public void diplayAllStudent()输出List的全部学生。
2.StudenDaoListImpl与StudentDaoArrayImpl有何区别?
答:StudenDaoListImpl与StudentDaoArrayImpl各自的私有属性不同,且StudenDaoListImpl是用ArrayList实现的,而StudentDaoArrayImpl是用数组实现的(学生的数量一开始就要决定,且无法改变)。
Q5什么是面向接口编程?面向接口编程的好处是什么?
结合题目3与4中的Test.java的代码讨论分析。
答:面向对象是:在系统分析和架构中,分清层次和依赖关系,每个层次不是直接向其上层提供服务(即不是直接实例化在上层中),而是通过定义一组接口,仅向上层暴露其接口功能,上层对于下层仅仅是接口依赖,而不依赖具体类。 面向接口编程的好处:面向接口编程可以将接口与实现相分离,从而大大提高程序的灵活性。不同部件或层次的开发人员可以并行开工,就像造硬盘的不用等造CPU的,也不用等造显示器的,只要接口一致,设计合理,完全可以并行进行开发,从而提高效率。
Q6结对编程:面向对象设计(大作业2-非常重要)
内容:使用Java代码完成上周做的面向对象设计大作业,需要有初步界面。实现的功能尽量简单,少而精,只包含必要的功能,不要追求高大全。
写出:类图(尽量精简,不用太多子类,两个即可)、系统常用功能描述、关键代码与界面
形式: 两人依托码云合作完成。请在这里贴出你们的学号、姓名与任务分工。
注意: 再过几次课要讲Java图形界面编程,到时候要将该系统升级为图形界面。系统的业务逻辑部分应该变化不大,变化大的是输入与输出部分。所以编码的时候,输入(Scanner)与输出(System.out)的代码,请不要将其与某个业务处理函数绑死。
选做加分: 给出两人在码云上同一项目的提交记录截图,额外加分。注:两个人在码云上新建一个项目
3. 码云上代码提交记录及PTA实验总结
3.1. 码云代码提交记录
3.2. PTA实验
实验1:关键在于实现comparable接口。通过调用Arrays.sort();实现排序,同时注意compareTo方法的重写要能先对name升序排序,如果name相同再对age进行升序排序。
实验2:Comparator:以不同于compareTo()方法中指定的顺序排序我们的类对象。在这题中,就需要我们编写NameComparator类以及AgeComparator类来实现Comparator接口
201521123117 《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 ...
随机推荐
- svn: E200007: CHECKOUT can only be performed on a version resource
这两天不知道怎么了svn一直出错:出错信息如下: svn: E200007: Commit failed (details follow): svn: E200007: Commit failed ( ...
- 【性能测试工具】- Siege
优点:比http_load好用,因为相同的url.txt文件在httpload不好使,所以在易用性上httpload不如siege,仍需进一步调研. 缺点:安装过程中,不能自动创建siege.log文 ...
- macOS Sierra Version 10.12.6 环境下Tomcat的下载与安装以及InterlliJ IDEA 2017.2 环境下配置Tomcat 与创建Web项目
一.Tomcat的下载与安装 1.官网(http://tomcat.apache.org/)下载Tomcat 9.0 Core:zip包: 2.解压到指定的文件夹即可安装完成: 3.测试是否安装成功 ...
- 关于 Overtrue 的拼音库 overtrue/pinyin 为何 travis 为 error【社交系统研发日记十】
什么是ThinkSNS ? ThinkSNS(简称TS),一款全平台综合性社交系统,为国内外大中小企业和创业者提供社会化软件研发及技术解决方案,目前最新版本为ThinkSNS+(简称TS+).社交系统 ...
- .NET并行计算和并发2-Foreground and Background Threads
后台线程不会使托管执行环境处于运行状态,除此之外,后台线程与前台线程是一样的. 一旦所有前台线程在托管进程(其中 .exe 文件是托管程序集)中被停止,系统将停止所有后台线程并关闭.
- 爬取西刺ip代理池
好久没更新博客啦~,今天来更新一篇利用爬虫爬取西刺的代理池的小代码 先说下需求,我们都是用python写一段小代码去爬取自己所需要的信息,这是可取的,但是,有一些网站呢,对我们的网络爬虫做了一些限制, ...
- TensorFlow框架(2)之TensorBoard详解
为了更方便 TensorFlow 程序的理解.调试与优化,TensorFlow发布了一套叫做 TensorBoard 的可视化工具.你可以用 TensorBoard 来展现你的 TensorFlow ...
- 一个C#操作RabbitMQ的完整例子
一.下载RabbitMQ http://www.rabbitmq.com/install-windows.html 二.下载OTP http://www.erlang.org/downloads 三. ...
- 如何删除当前正在使用的SQLLite文件?
从网上搜索一大堆,套路几乎相同,但自己就是不行,怎么也不行,为什么不行呢?不行的话别人肯定不来坑博友了呀.然后放了一会,去拿下午茶回来,再次来看,恍然大悟,What?这么简单. 一开始代码如下: he ...
- 入侵拿下DVBBS php官网详细过程(图)
几 个月前,DVBBS php2.0暴了一个可以直接读出管理员密码的sql注入漏洞,当时这个漏洞出来的时候,我看的心痒,怎么还会有这么弱智的漏洞,DVBBS php2.0这套代码我还没仔细看过,于是5 ...