1. 本周学习总结

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

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

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

2. 书面作业

1.clone方法

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

  • 根据API的解释:子类必须实现Cloneable接口,否则即使覆盖了clone()方法,仍然会抛出异常(CloneNotSupportedException)的。
  • 覆盖clone和覆盖equals类似,也要满足他们Object中的性质。所有使用clone方法的类,不论是继承Object.clone()还是覆盖他,都必须实现一个名味cloneable的接口
  • 所以,一个自定义类中覆盖clone方法必须满足两个条件:
  • (1)implements Cloneable 继承cloneable接口
  • (2)

@Override public Object clone() throws CloneNotSupportedException
  • 创建并且返回被克隆对象的Copy,“Copy”的确切含义可能取决于被克隆对象的类。

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

  • private表示私有,私有的意思就是除了class自己之外,任何人都不可以直接使用



  • 长方形的长和宽,圆形的半径,都是私有的。只有长方形类能调用weigth和length,其他的类都不能使用

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





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

仅需粘贴关键代码与运行结果。

  • Lambda表达式:就是匿名方法,只是语法不同。(param)->expr param是输入参数列表,expr是一个表达式或者一系列语句。

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

Comparator<Shape> shapeComparator = new  Comparator<Shape>() {
@Override
public int compare(Shape o1, Shape o2) {
//你的代码
}
};
  • 在java中,如果要对集合对象或数组对象进行排序,需要实现Comparator接口以达到我们想要的目标。
  • 所以这里是用shapeComparator来实现Coparator接口,重写排序方法,对对象进行排序

4.GUI中的事件处理

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

  • 事件:点击按钮,组件属性发生变化时产生了某个事件
  • 事件源:各种组件。如按钮,文本框,微调器等等
  • 事件服务程序:若事件源上发生的事情被程序处理,就要吧事件源注册给能够处理该事件源上那种类型事件的监听者。
  • 事件监听接口:监听者可以是容器,也可以是另外的对象。

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

  • 拿这周折腾了好久的购物界面举个例子......虽然写的真的很糙,而且看着超简单,可是从有想法到最后实现差不多弄了两三天
 private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) { //当按下按钮的时候,执行以下代码
// TODO add your handling code here:
goodlist[1]=(new Books("图书类","Java从入门到精髓",48.86,45));//赋值
String a=jTextField3.getText();//获取文本框里的数量
int b=Integer.parseInt(a);//获取到的是sting类型,转成int
ShoppingCart newone =new ShoppingCart(goodlist[1].getCategory(),goodlist[1].getName(),goodlist[1].getPrice(),goodlist[1].getNum(),b);//初始化
cartlist.add(newone);//添加到购物列表
System.out.println(newone);//测试
}
jPanel5.setBackground(new java.awt.Color(255, 241, 219));//窗口5的背景颜色
jPanel5.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));
jPanel5.setPreferredSize(new java.awt.Dimension(152, 185)); jLabel8.setFont(new java.awt.Font("隶书", 0, 18)); // NOI18N 窗口8的字体设置
jLabel8.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel8.setText("27.80");//文本框显示的内容

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

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

5.1 尝试使用图形界面改写。

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

  • 我这边码云一直连接不上,所以就只有她一个人的提交记录。然后我们的分工里,我主要是对图形界面这一部分的调整和连接,所以就放了一下图形界面这一部分的代码。

姓名 地址
游舒婷 http://www.cnblogs.com/sakurai3104/p/6658217.html
杨晨露 http://www.cnblogs.com/ycll/p/6658699.html
码云 http://git.oschina.net/sakurai3104/Shopping

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

  • 主要增加了简单的图形界面
  • 关于购物车类和商品类之间的关系重新理了一下,添加了购物列表来存储商品,并且赋到购物车界面里。因为对于数据库的连接还不太会,所以在购物界面采用的是直接赋值的方法。这样的效率很低,只能面向某几个商品,如果多了的话就很麻烦,这是一个以后要改进的点。

3. 码云代码提交

4.实验总结

  • (1)面板的重要性。如果没有面板容器来装各个组件,组件之间不容易互相共容,不方便叠加。
  • (2)setText()显示文本
  • (3)getText()获取文本
  • (4)好像只有按钮和文本框可以向里面进行源码的编写,标签的源码似乎是固定的,没法进行更改。
  • (5)调整页面,熟悉各种组件花费太多时间。以及想实现的页面跳转和弹窗都没法去弄。

最新文章

  1. Linux实战教学笔记02:计算机系统硬件核心知识
  2. 深入理解定时器系列——被誉为神器的requestAnimationFrame
  3. java语言实现堆排序
  4. ORA-00265: instance recovery required, cannot set ARCHIVELOG
  5. [MFC]MFC中OnDraw与OnPaint的区别
  6. 数据挖掘:Weka代码学习
  7. ios越狱开发第一次尝试记录
  8. 基于samba实现win7与linux之间共享文件_阳仔_新浪博客
  9. OJ题:句子逆转
  10. php.ini中文翻译版--转载
  11. 如何在.net 4.0下安装TLS1.2的支持
  12. (后端)根据查询语句修改的update语句
  13. 在td中的输入英文为什么不自动换行???
  14. 160道Java技术面试题
  15. SQl查询数据库库名,表名、表的列名
  16. hdu 1158 dp Employment Planning
  17. The Struts dispatcher cannot be found. This is usually caused by using Struts ta
  18. MySQL 参数
  19. PHP输出毫秒时间戳
  20. JavaScript中让元素动态发射指定的事件

热门文章

  1. Jmeter 参数化请求实例
  2. 国内首款开源的互联网支付系统roncoo-pay
  3. macvlan 网络结构分析 - 每天5分钟玩转 Docker 容器技术(56)
  4. orakill和ALTER SYSTEM KILL SESSION详解
  5. HTML5——css基础语法
  6. iostat磁盘IO命令详解
  7. Angular中使用$watch监听
  8. Nginx也应用场景小结
  9. BYS推荐MS前端PhoneCall面试问题整理-2
  10. Spring Web MVC(二)