201521123002 《Java程序设计》第6周学习总结
1. 本周学习总结
1.1 面向对象学习暂告一段落,请使用思维导图,以封装、继承、多态为核心概念画一张思维导图,对面向对象思想进行一个总结。
注1:关键词与内容不求多,但概念之间的联系要清晰,内容覆盖面向对象的核心内容即可。
注2:颜色要少、连线不要复杂,必要的时候要在连线上进行说明。
2. 书面作业
1.clone方法
1.1 Object对象中的clone
方法是被protected修饰,在自定义的类中覆盖clone方法时需要注意什么?
1.子类要实现Cloneable接口,否则会导致抛出CloneNotSupportedException异常
2.在子类中重写clone方法,并声明为public
3.在clone方法中调用super.clone()
参考重点截图:
参考文章:
Java中Cloneable接口
详解Java中的clone方法
Java 深度克隆 clone()方法重写equals()方法的重写
浅析java中clone()方法
1.2 自己设计类时,一般对什么样的方法使用protected进行修饰?以作业Shape
为例说明。
当某些方法只想被子类和同包访问的时候用protected修饰,以shape为例其中getPerimeter与getArea方法只有继承的子类才有这种方法所以用protected修饰。
1.3 在test1包中编写简单的Employee
类,在test2包中新建一个TestProtected
类,并在main中尝试调用test1包中的Employee的clone方法克隆一个新对象,能否成功?为什么?
package test1;
public class Employee implements Cloneable
{
public Employee(String n, double s)
{
name = n;
salary = s;
}
public Employee clone() throws CloneNotSupportedException
{
Employee cloned = (Employee) super.clone();
return cloned;
}
private String name;
private double salary;
}
package test2;
public class TestProtected {
public static void main(String[] args) {
Employee original = new Employee("John Q. Public", 50000);
Employee copy = original.clone();
}
}
当然不能通过啦,两个类不在同一个包里,可以在test2中import text1.Employee;
2.使用匿名类与Lambda表达式改写题集面向对象2-进阶-多态接口内部类的题目5-2
仅需粘贴关键代码与运行结果,图片不要太大。
关键代码
Comparator<PersonSortable2> NameComparator = (o1,o2)->o1.getName().compareTo(o2.getName());
Comparator<PersonSortable2> AgeComparator = (o1,o2)->o1.getAge()-o2.getAge();
Arrays.sort(persons,NameComparator);
System.out.println("NameComparator:sort");
for(int i=0;i<n;i++){
System.out.println(persons[i]);
}
Arrays.sort(persons,AgeComparator);
System.out.println("AgeComparator:sort");
for(int i=0;i<n;i++){
System.out.println(persons[i]);
}
运行结果
3.分析下列代码,回答shapeComparator
所指向的对象与Comparator接口有什么关系?
Comparator<Shape> shapeComparator = new Comparator<Shape>() {
@Override
public int compare(Shape o1, Shape o2) {
//你的代码
}
};
这是一个匿名内部类,实现了Comparator接口并且重写了compare方法。
4.GUI中的事件处理
4.1 写出事件处理模型中最重要的几个关键词。
- 事件源:事件的产生器
- 事件:描述发生了什么的对象。
- 事件监听器
4.2 使用代码与注释,证明你理解了事件处理模型。
JButton b = new JButton("Press Me!");//事件源
b.addActionListener(new ActionListener()){//监听器
public void actionPerformed(ActionEvent e) {
System.out.println("Action occurred");
System.out.println(e.getSource());//获得事件源
}
}
5.结对编程:面向对象设计(大作业2-非常重要,未完成-2)
继续完善上周的项目作业。考核点如下:
5.1 尝试使用图形界面改写。
5.2 给出两人在码云上同一项目的提交记录截图。
5.3 与上周相比,项目的主要改动是什么?
终于把上周的代码编程实现了,具体在上周的作业博客中,欠下的债还是要还的;
现在好好研究一下怎么弄成图形界面.
(上下两段隔了一段时间)
老师不好意思这边先提交了,算法那边周三要期末答辩(写算法代码实现+ppt制作并上台展示),还没搞定,
现在定不下心来研究图形界面和NetBeans的使用。我先去弄那边,弄好了再回来弄这边,不然弄着这边老想着那边。
参考资料:
结对编程参考资料
可以使用Processon画图
JTable用法,用于呈现表格数据
Swing相关文章
使用Netbeans编写GUI
重要:Swing实验参考资料
3. 使用码云管理Java代码
4. 实验总结
这些题目都比较基础,主要是让我们把上课学到的静态内部类和自定义接口的知识进行实践练习,让我们知道这么用它们。
不过发现一个有意思的点就是把三个类的代码放到pta上进行提交的时候需要把修饰的public去掉。
5-3中public Integer peek()这个方法中return是记得是arr[top-1]而不能top--。
5-4中关键处可能是
static PairResult findMinMax(double[] values){
double min = values[0];
double max = values[0];
for (double v : values){
if (min > v) min = v;
if (max < v) max = v;
}
return new PairResult(min, max);
}
201521123002 《Java程序设计》第6周学习总结的更多相关文章
- 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 ...
随机推荐
- Python 装饰器总结
装饰器总结 前提 使用装饰器的前提在于Python提供的特性: 函数即对象,可以进行传递: 函数可以被定义在另外一个函数中: 可以通过一个例子来了解: def get_animal(name='dog ...
- C++之STL总结精华笔记
一.一般介绍 STL(StandardTemplate Library),即标准模板库,是一个具有工业强度的,高效的C++程序库.它被容纳于C++标准程 ...
- MySQL中的完整性约束
对于已经创建好的表,虽然字段的数据类型决定所能存储的数据类型,但是表中所存储的数据是否合法并没有检查. MySQL支持的完整性约束: NOT NULL 约束字段的值不能 ...
- iOS之Cocoapods安装
网上关于cocoapods的教程很多,关于它的优点我不赘述:但是我根据多次安装的经验,把我遇到的问题写一下,希望对新手有所帮助. 1. 设置输入源(由于默认的gem资源是国外的,由于历史原因,访问比较 ...
- 有返回值的函数,如果包含try/catch块,经常会出现没有return的错误
public static Connection getConnection(){ try { return datasource.getConnection(); } catch (SQLExcep ...
- C++动态内存管理之深入探究new和delete
C++中程序存储空间除栈空间和静态区外,每个程序还拥有一个内存池,这部分内存被称为自由空间(free store)或堆(heap).程序用堆来存储动态分配的对象,即,那些程序运行时分配的对象.动态对象 ...
- Windows MDI(Multiple-Document Interface)
Windows多文档窗口编程中,需要注意的以下几点: 1.主窗口与文档窗口之间还有一个Client Window. 2.创建文档窗口.通常认为创建子窗口就用CreateWindow,但是MDI中创建文 ...
- 关于 Node.js 的认证方面的教程(很可能)是有误的
原文地址:Your Node.js authentication tutorial is (probably) wrong 我搜索了大量关于 Node.js/Express.js 认证的教程.所有这些 ...
- Nodejs进阶:使用DiffieHellman密钥交换算法
## 简介 Diffie-Hellman(简称DH)是密钥交换算法之一,它的作用是保证通信双方在非安全的信道中安全地交换密钥.目前DH最重要的应用场景之一,就是在HTTPS的握手阶段,客户端.服务端利 ...
- 缓存一致性和跨服务器查询的数据异构解决方案canal
当你的项目数据量上去了之后,通常会遇到两种情况,第一种情况应是最大可能的使用cache来对抗上层的高并发,第二种情况同样也是需要使用分库 分表对抗上层的高并发...逼逼逼起来容易,做起来并不那么乐观, ...