201521123082 《Java程序设计》第6周学习总结

标签(空格分隔): java


1. 本周学习总结

1.1 面向对象学习暂告一段落,请使用思维导图,以封装、继承、多态为核心概念画一张思维导图,对面向对象思想进行一个总结。

注1:关键词与内容不求多,但概念之间的联系要清晰,内容覆盖面向对象的核心内容即可。

注2:颜色要少、连线不要复杂,必要的时候要在连线上进行说明。


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

1.复习:面向对象中封装4种访问权限:

2.GUI与Swing:

1.图形接口编程(GUI--Graphical User Interface):

Swing组件的名称都以字母J开头,比如按钮组件--JButton。JFrame和JPanel是常用的容器组件,NetBeans中可以使用的布局管理器有:FlowLayout、BorderLayout、GirdLayout、GridBagLayout、CardLayout。

2.事件处理模型及步骤:

事件委托模型(Event Delegation Model)

事件源(Event source)---->事件监听器:



3.关于Swing的学习,老师给了下面的链接:

1.Swing文章

2.JTable用法

后面学习完后慢慢补充。

3.集合:

了解了Collection接口,一些常用的接口:List、Set、Map。


2.书面作业

1.clone方法

1.1 Object对象中的clone方法是被protected修饰,在自定义的类中覆盖clone方法时需要注意什么?

Answer:

我们先来看看Object类中clone方法的源码:

protected native Object clone() throws CloneNotSupportedException;

分析:protected关键字对于相同的包内的子类来说相当于public的,可以自由使用,而对于其他的外部class,protected就变成private,其他的package不能使用。所以用projected关键字修饰的方法clone,不能被其他类调用,可以用public关键字来实现。

如老师提供的CloneTest源码的部分截图:

class Employee implements Cloneable
{
public Employee(String n, double s)
{
name = n;
salary = s;
hireDay = new Date();
} public Employee clone() throws CloneNotSupportedException
{
// call Object.clone()
Employee cloned = (Employee) super.clone(); // clone mutable fields
cloned.hireDay = (Date) hireDay.clone(); return cloned;
}

而关于clone方法是复制对象还是复制引用,深拷贝和浅拷贝问题,可以参考clone方法有详细的解释。


1.2 自己设计类时,一般对什么样的方法使用protected进行修饰?以作业Shape为例说明。

Answer:

先贴上Shape抽象类的源码中两个方法的源码:

	protected abstract double getPerimeter();
protected abstract double getArea();

因为想让获得周长和面积方法只想让同包的类和子类访问时采用protected修饰,后面Rectangle类和Circle类只有继承Shape类后才能实现这两个方法。

而关于其他的关键字整理如下:


1.3 在test1包中编写简单的Employee类,在test2包中新建一个TestProtected类,并在main中尝试调用test1包中的Employee的clone方法克隆一个新对象,能否成功?为什么?

Answer:

不能成功 ; 如下分析和修改:

我以老师提供的CloneTest做修改然后完成题目要求如下,实验过程:

1.分别建包和类:

2.在TestProtected类中 import Test1.Employee还是出现错误:

3.将Employee类改为public后,运行结果:


2.使用匿名类与Lambda表达式改写题集面向对象2-进阶-多态接口内部类的题目5-2

仅需粘贴关键代码与运行结果,图片不要太大。

匿名内部类的方法:

//按name排序
Comparator<PersonSortable> nameComparator =
new Comparator<PersonSortable>(){
@Override
public int compare(PersonSortable o1, PersonSortable o2) {
return o1.getName().compareTo(o2.getName());
} }; //按age排序
Comparator<PersonSortable> ageComparator =
new Comparator<PersonSortable>(){
@Override
public int compare(PersonSortable o1, PersonSortable o2) {
if (o1.getAge() > o2.getAge()) {
return 1;
} else if (o1.getAge() < o2.getAge()) {
return -1;
} else {
return 0;
}
} };



Lambda表达式的方法:

Comparator<PersonSortable> nameComparator =
(PersonSortable o1, PersonSortable o2) -> (o1.getName().compareTo(o2.getName())); Arrays.sort(personSortables, nameComparator); Comparator<PersonSortable> ageComparator =
(PersonSortable2 o1, PersonSortable2 o2)
-> {
if (o1.getAge() > o2.getAge()) {
return 1;
} else if (o1.getAge() < o2.getAge()) {
return -1;
} else {
return 0;
}}; Arrays.sort(personSortables, ageComparator);


3.分析下列代码,回答shapeComparator所指向的对象与Comparator接口有什么关系?

    Comparator<Shape> shapeComparator = new  Comparator<Shape>() {
@Override
public int compare(Shape o1, Shape o2) {
//你的代码
}
};

Answer:

我们清楚匿名名内部类用于实现接口。在shapeComparator类实现了Comparator接口,用匿名内部类对compare进行重写,新建了一个比较器。


4.GUI中的事件处理

4.1 写出事件处理模型中最重要的几个关键词。

Answer:

事件对象-事件源-事件处理方法-事件监听器.

详细可以参考:委托事件模型


4.2 使用代码与注释,证明你理解了事件处理模型。

Answer:

直接画图:



引用ppt上的代码与注释:

public class MainGUI {
public static void main(String[] args) {
JFrame f = new JFrame("Test");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton b = new JButton("Press Me!");//事件源
b.addActionListener(new ButtonHandler());//注册监听器
f.add(b);
f.setSize(200, 100);
f.setVisible(true);
}
private static class ButtonHandler implements
ActionListener{//监听器
public void actionPerformed(ActionEvent e) {
System.out.println("Action occurred");
System.out.println(e.getSource());//获得事件源
}
}
}

5.结对编程:面向对象设计(大作业2-非常重要,未完成-2)

继续完善上周的项目作业。考核点如下:

尝试使用图形界面改写。

我们的预期效果如下:

登录系统



主菜单



显示商品



搜索



显示书本信息



购物车信息



显示个人信息

与上周相比,项目的主要改动是什么?

我们根据上周的设计表,如下完成了操作界面的设计,如下:



我们需要在接下来继续完善源代码

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

题目集:jmu-Java-04-面向对象2-进阶-多态接口内部类

3.1. 码云代码提交记录

在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 然后搜索并截图


3.2. PTA实验

函数(选做:4-1)、编程(5-3, 5-4)

5-3:

题目要求自定义接口ArrayIntegerStack,即定义IntegerStack的实现类ArrayIntegerStack。题目已经定义IntegerStack接口,代码如下:

interface IntegerStack {
public Integer push(Integer item); public Integer pop(); public Integer peek(); public boolean empty(); public int size();
}

我们只需完善ArrayIntegerStack类的代码,实现InntegerStack类的具体方法,一些方法的实现的关键代码如下:

public Integer push(Integer item) {
if (item == null)
return null;
if (this.size() >= this.stack.length)
return null;
stack[num] = item;
num++;
return item;
} public Integer pop() {
if (this.empty())
return null;
num--;
return stack[num];
} public Integer peek() {
if (this.empty())
return null;
return stack[num - 1];
} public boolean empty() {
if (num == 0)
return true;
return false;
} public int size() {
return num;
}

5-4:

题目要求定义类ArrayUtils,在该类内部创建一个静态内部类PairResul和创建一个静态方法PairResult findMinMax(double[] values),对传递进来的数组找到其中的最大值和最小值并返回PairResult对象。

关键代码如下:

class ArrayUtils{
public static class PairResult{
private double min;
private double max;
@Override
public String toString() {
return "PairResult [min=" + min + ", max=" + max + "]";
}
}
static PairResult findMinMax(Double[] values){
PairResult pr=new PairResult();
Arrays.sort(values);//从小到大排序
pr.min=values[0];
pr.max=values[values.length-1];
return pr; }
}

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

  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. Form表单中method=post/get两种数据传输的方式的区别

    Form提供了两种数据传输的方式——get和post.虽然它们都是数据的提交方式,但是在实际传输时确有很大的不同,并且可能会对数据产生严重的影响.虽然为了方便的得到变量值,Web容器已经屏蔽了二者的一 ...

  2. WordCount去除标点方法之一

    package com.bw.day10;import java.io.IOException;import java.util.StringTokenizer;import org.apache.h ...

  3. coder该何去何从

    无论是什么语言的学习,都不是一帆风顺的,如今随着编程大军的壮大,工作越来越难找,各位coder已经把中心偏移到了学历上面,导致技术水平的参差不齐,以及虚假学历的泛滥,这样的恶性循环下,不知前路在何方?

  4. CSS属性定义 文本修饰 边框效果 背景修饰

    一.CSS属性定义1.css颜色表示方法[重点]rgb(红绿蓝3个颜色通道 强度值为0-255)rgb(0,0,0)rgba(alpha a是透明度 值为0-1)rgba(123,123,123,0) ...

  5. zabbix 3.2.7 (源码包)安装部署

    Zabbix 3.2.7 + CentOS7 安装 环境准备: 操作系统 CentOS Linux release 7.2.1511 (Core) zabbix server 10.30.94.60 ...

  6. vbs系统监控

    vbs CPU 内存 硬盘监控脚本 On Error Resume Next Dim dwTotalMem, dwAvailMem, totalvolumn, freespace Const szRo ...

  7. 【leetcode】349. Intersection of Two Arrays

    Given two arrays, write a function to compute their intersection. Example: Given nums1 = [1, 2, 2, 1 ...

  8. iOS Notification – 远程通知

    本文讲解iOS的远程通知的基本使用,主要包括远程通知的类型,处理远程通知的场景,以及远程通知相关证书的配置等等. 一.APNs简介 APNs是苹果公司提供的远程通知的服务器,当App处于后台或者没有运 ...

  9. CentOS 7 服务器配置--配置iptables防火墙

    #检查服务器是否安装了iptables systemctl status iptables.service #安装iptables yum install -y iptables #更新iptable ...

  10. js面试题知识点全解(一原型和原型链1)

    1.如何准确判断一个变量是数组类型2.写一个原型链继承的例子3.描述new一个对象的过程4.zepto(或其他框架)源码中如何使用原型链知识点:1.构造函数2.构造函数-扩展3.原型规则和示例4.原型 ...