201521123107 《Java程序设计》第6周学习总结
第6周作业-接口、内部类与Swing
1.本周学习总结

2.书面作业
1.clone方法
1.1 Object对象中的clone方法是被protected修饰,在自定义的类中覆盖clone方法时需要注意什么?
public class Object {
protected native Object clone() throws CloneNotSupportedException;
}
在源代码中关于clone方法的定义如上,Object类中的 clone()方法被protected修饰符修饰。这也意味着如果要应用 clone()方 法,必须继承Object类。如果是为了让其它自己定义的类能调用这个clone()方法,重载之后要把clone()方法的属性设置为 public。
1.2 自己设计类时,一般对什么样的方法使用protected进行修饰?以作业Shape为例说明。
在我看来呢,需要被其他子类共用的方法可以用protected进行修饰。以做过的shape来说吧,Circle类和Rectangle类都需要求面积和周长,所以getarea()和getPerimeter()方法就是他们共有的方法,因此该方法可以用protected进行修饰。
1.3 在test1包中编写简单的Employee类,在test2包中新建一个TestProtected类,并在main中尝试调用test1包中的Employee的clone方法克隆一个新对象,能否成功?为什么?
package test1;
public class Employee implements Cloneable{
private String name;
private int age;
private double salary;
public Employee(String name, int age, double salary) {
super();
this.name = name;
this.age = age;
this.salary = salary;
}
@Override
protected Employee clone() throws CloneNotSupportedException {
// TODO Auto-generated method stub
return (Employee) super.clone();
}
}
package test2;
import test1.*;
public class TestProtected {
Employee employee = new Employee("Tom", 26, 3500);
Employee employee1 = employee.clone();
}
这样做并不能够成功,编译器会报这样一个错:
,意思是clone()方法是不可见的,因为修饰该方法的是protected。我们知道protected修饰的方法仅在test1包中可见,对于test2包是不可见的,如果需要在test2包中使用的话,需要将clone()方法用public修饰。
2.使用匿名类与Lambda表达式改写题集面向对象2-进阶-多态接口内部类的题目5-2
仅需粘贴关键代码与运行结果,图片不要太大。
匿名类改写部分:

Lambda表达式改写部分:

运行结果:

3.分析下列代码,回答shapeComparator所指向的对象与Comparator接口有什么关系?
Comparator<Shape> shapeComparator = new Comparator<Shape>() {
@Override
public int compare(Shape o1, Shape o2) { //你的代码 }
};
shapeComparator所指向的对象是一个Shape类实现的Comparable接口,实现Comparable接口之后可以进行比较。
4.GUI中的事件处理
4.1 写出事件处理模型中最重要的几个关键词。
事件:敲击键盘或点击鼠标这样的行为操作,一般继承自java.util.EventObject类;
事件源:事件发生的地方,由于事件源的某项属性或状态发生了改变(比如Button被单击、Textbox的值发生改变等等)导致某项事件发生。
监听器:实现java.awt.event.ActionListener接口,注册在事件源上,当事件源的属性或状态改变时,取得相应的监听器调用其内部的方法。
4.2 使用代码与注释,证明你理解了事件处理模型。
就使用老师上课课件中的代码来添加一些注释吧:
package test;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
public class EventMainGUI1 extends Frame {
static int count = 1;
public EventMainGUI1(String title) {
super(title);
}
public static void main(String args[]) {
//初始化了一个叫做“hello”的窗口
EventMainGUI1 f = new EventMainGUI1("hello");
f.setLayout(new FlowLayout());
//定义了一个不可变的按钮b,并赋上初始值1,按钮b就是一个事件源
final JButton b = new JButton("1");
//注册监听器,每当b被按下的时候,按钮上的值就加1(也就是当事件源的状态被改变后,监听器就会调用其内部的方法,此时的内部方法就是使按钮b的初始值自增1)
b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
b.setLabel(new Integer(++count).toString());
}
});
f.add(b);//向窗口f中加入b按钮
f.setSize(100, 100);
f.setBackground(Color.blue);
f.setVisible(true);//设置窗口可以被看见
}
}
5.结对编程:面向对象设计(大作业2-非常重要,未完成-2)
继续完善上周的项目作业。考核点如下:
5.1 尝试使用图形界面改写。
登录界面关键代码:
private void LoginButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_LoginButtonActionPerformed
String a = nameTextField.getText();
String b = passTextField.getText();
if(a.equals(b)){
Tips.setText("Login successfully!");
new Shoppingcart().setVisible(true);
this.setVisible(false);
}
else
Tips.setText("Login failed , try another name or password");
}//GEN-LAST:event_LoginButtonActionPerformed
登录界面:
(1)密码正确,就弹出购物界面

(2)密码错误,就提示出错

购物界面关键代码:


购物界面:


5.2 给出两人在码云上同一项目的提交记录截图。

5.3 与上周相比,项目的主要改动是什么?
这次的任务分配:
201521123107 张翔 主要负责具体代码的添加
201521123084 林正晟 负责构建图形界面
上周的购物车我们没有加入登陆界面,所以这次我们新增了一个登陆界面。原计划呢,我们是商品界面与购物车分别做一个窗体,结果我们在做的时候缺乏沟通,这是一个很大的忌讳。伙伴图形界面做好了,我对着界面表示无奈,根本无从下手,导致最后将购物车和商品界面混在一起。当我想把整个界面推倒重做的时候,发现有些难度,所以我们只能将原来的购物车界面改为商品界面,然后把需要购买商品的数量、总价都合到了同一个界面上。
总的来说,这次合作编程的失败在于两个人缺乏对于根据上一次代码的图形界面设想的沟通,导致了界面做出来了,不知道要往什么地方编写自己的代码,不过我们还是有值得肯定的地方,我们的登陆界面实现的还是比较成功。
3.使用码云管理Java代码
本周Commit历史截图

4.PTA实验
实验总结
这次的实验有两题,本来是上机课就可以完成的,但是因为程序里有很多地方需要调试,所以没来得及给老师检查。
第一题我认为最核心的部分就是用数组实现栈的功能。定义IntegerStack的实现类ArrayIntegerStack,内部使用数组实现,所有的方法实现都是为了数组服务的,总体上难度不算大,困住我最久的是入栈。样例输入是输入三个,但我一直入栈只有两个数,第3个数字一直没有入栈,后来发现是多吃了一个空格,导致第三个数字的位置被空格占据没能入栈。还有就是数次的答案错误(已经是自己见怪不怪的老问题了),答案都对就是过不了,发现是自己少使用Arrays.toString()输出内部数组中的值。
第二题较第一题更简单一些。遇到最大的问题是PairResult findMinMax(double[] values)中返回值的问题,我一直无法将找到的最大和最小值返回。起初以为是取值的问题,第一次发现确实是取最值的方法有误,修正过方法后发现值并没有被返回,发现需要return PairResult(min,max)才能将最值返回。
201521123107 《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 ...
随机推荐
- golang 的 http cookie 用法
golang的http cookie用法 在服务端程序开发的过程中,cookie经常被用于验证用户登录.golang 的 net/http 包中自带 http cookie的定义,下面就来讲一下coo ...
- Cmd Markdown 学习
[TOC] # Cmd Markdown 学习 Markdown 简明语法 1. 斜体和粗体 使用 * 和 ** 表示斜体和粗体. 2. 分级标题 在使用 = 表示一级标题,使用 - 表示二级标题.# ...
- Masonry1.0.2 源码解析
在了解Masonry框架之前,有必要先了解一下自动布局的概念.在iOS6之前,UI布局的方式是通过frame属性和Autoresizing来完成的,而在iOS6之后,苹果公司推出了AutoLayout ...
- noip普及组2007 Hanoi双塔问题
Hanoi双塔问题 描述 给定A,B,C三根足够长的细柱,在A柱上放有2n个中间有孔的圆盘,共有n个不同的尺寸,每个尺寸都有两个相同的圆盘,注意这两个圆盘是不加区分的.现要将这些圆盘移到C柱上,在移动 ...
- 第4天:JS入门-给div设置宽高背景色
今天学习了js入门课程,听的不多,做了个小练习,给div设置宽高.背景色.一点点都是进步.核心代码如下: <!DOCTYPE html><html lang="en&quo ...
- spring boot 登录注册 demo (三) -- 前后端传递
前端页面通过thymeleaf渲染 <dependency> <groupId>org.springframework.boot</groupId> <art ...
- 编译安装 Nginx1.12.1
本文描述Nginx 的源码编译安装过程 ############## 一.安装OpenSSL ###################### 下载地址 https://www.openssl.org/s ...
- 8.21.2 深入finally语句快
关于finally语句块 1.finally语句块可以直接和try语句块联用. try....finally... 2.try...catch....finally 也可以. 3.在finally语句 ...
- Python获取秒级时间戳与毫秒级时间戳
获取秒级时间戳与毫秒级时间戳 import time import datetime t = time.time() print (t) #原始时间数据 print (int(t)) #秒级时间戳 p ...
- python 爬取天猫美的评论数据
笔者最近迷上了数据挖掘和机器学习,要做数据分析首先得有数据才行.对于我等平民来说,最廉价的获取数据的方法,应该是用爬虫在网络上爬取数据了.本文记录一下笔者爬取天猫某商品的全过程,淘宝上面的店铺也是类似 ...